Seguridad

Desbordamiento de memoria en el kernel de Linux permite elevar privilegios

Una vulnerabilidad en el kernel Linux a la hora de comprobar parámetros introducidos por el usuario podría permitir a un atacante escalar privilegios.




El fallo, del cual se ha tenido constancia como en muchos otros casos, a través de los commits al kernel, tiene asignado el CVE-2018-1068. Aún se desconoce completamente el alcance de una posible explotación, aunque tras un rápido vistazo al código de los parches podemos intuir que se trata de algo grave. Básicamente, a través de una llamada del sistema es posible proporcionar al kernel parámetros anómalos. Al no comprobarse su corrección en el lado del kernel terminarían por causar desbordamiento de memoria, y la posibilidad de escribir en memoria del kernel.

Específicamente, el error está relacionado con la estructura de datos ‘ebt_entry’ y los métodos que operan sobre ésta, que se encuentran en el fichero ‘net/bridge/netfilter/ebtables.c’. Al no validar los parámetros que vienen de la parte del usuario, los parámetros anómalos son procesados por código que no espera que sean incorrectos. La forma más simple de explotación es a través del uso de ebtables, una herramienta parecida a iptables pero orientada a la capa de enlace de red (lo que se suele implementar con Ethernet), usando reglas especialmente diseñadas. Esta utilidad hace uso de las llamadas del sistema vulnerables.



Reglas de ebtables



La vulnerabilidad ha sido clasificada como importante, ya que aunque por lo complejo de la explotación, no es necesario ser el usuario root, basta con tener privilegios de administrador en el namespace (espacio de nombres) user+network’. Esto es especialmente peligroso en un contexto de contenedores estilo Docker, ahora tan de moda. Desde un contenedor con privilegios restringidos pero siendo administrador del namespace mencionado sería posible salirse del contenedor y escalar privilegios al usuario root.
Carlos Ledesma

Más información:

CVE-2018-1068 kernel: Out-of-bounds write via userland offsets in ebt_entry struct in netfilter/ebtables.c
https://bugzilla.redhat.com/show_bug.cgi?id=1552048

netfilter: ebtables: CONFIG_COMPAT: don’t trust userland offsets
https://github.com/torvalds/linux/commit/b71812168571fa55e44cdd0254471331b9c4c4c6

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.