Corregido un interesante (y peligroso) fallo en el kernel Linux 2.6

Recientemente se ha parcheado una vulnerabilidad en el kernel Linux, rama
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.

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 al servidor X
sino a la forma en la que el kernel maneja la memoria en determinadas
circunstancias.

La explotación de la vulnerabilidad permitiría a
cualquier proceso no privilegiado con acceso al servidor X escalar a root.
De facto los procesos de usuario que posean GUI corren con acceso al
servidor 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 del
servidor 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.

¿Te resultó interesante? Compártelo ...



GUTL

Publicado por GUTL

Forma parte de GUTL desde el 6 diciembre, 2011.