lunes, 23 de agosto de 2010

Corregido Peligroso Fallo En El Kernel Linux 2.6

Recientemente se ha parcheado una vulnerabilidad en el kernel Linux 2.6, que podría permitir a un atacante elevar privilegios y ejecutar código arbitrario con permisos de root.

La vulnerabilidad ha sido descubierta por Rafal Wojtczuk de Invisible Things Labs, la empresa de la conocida investigadora Joanna Rutkowska. Rafal descubrió el bug mientras estaba trabajando en la virtualización de la interfaz de usuario del sistema operativo.

Qubes es el proyecto más ambicioso de Rutkowska, un sistema operativo que permite virtualizar procesos independientemente.

Según Rutkowska el bug descubierto podría haber estado ya presente desde la introducción de la rama 2.6 a finales de 2003. Aunque en un primer momento los investigadores reportaron el error a los desarrolladores del servidor X (X.org) finalmente se derivó a los mantenedores del kernel. Esto fue debido a que no se trataba de un fallo inherente alservidor X sino a la forma en la que el kernelmaneja la memoria en determinadas circunstancias.

La explotación de la vulnerabilidad permitiría a cualquier proceso no privilegiado con acceso alservidor X escalar a root. De facto los procesos de usuario que posean GUI corren con acceso alservidor X y de ahí que, como teoriza Rutkowska, la explotación de una vulnerabilidad no relacionada en una aplicación de usuario podría ser encadenada y aprovechar ésta para elevar privilegios. La puerta a una ejecución remota de código queda abierta.

Técnicamente la explotación del bug reside en cargar de forma reiterativa en memoria pixmaps (XPM) de gran tamaño aumentando así el área de memoria mapeada.
Gracias a la extensión MIT-SHM del servidor X, se posibilita y se crea un segmento de memoria compartida que será usado por el proceso delservidor X.
La idea es aumentar el tamaño de memoria mapeada y seguidamente llamar a una función recursiva que vaya creando marcos de pila llevando el segmento de pila hacia la zona de memoria compartida, ya de por sí en direcciones altas debido a la expansión de la memoria mapeada usada a alojar los pixmaps.

Durante ese instante, el puntero de pila ha llegado a la zona de memoria compartida y el atacante obtiene el control de la pila ya que puede escribir en esa área posibilitando de ésta forma la ejecución de código arbitrario.

El fallo ha sido corregido en el repositorio de código del kernel y su CVE asignado es CVE-2010-2240.

No hay comentarios: