miércoles, 19 de julio de 2006

Grave vulnerabilidad en /proc del núcleo Linux

Se ha detectado una grave vulnerabilidad en las versiones del kernel
Linux pertenecientes a la rama 2.6 e inferiores a la versión 2.6.17.4,
que podría facilitar la escalada de privilegios local en las máquinas
afectadas.

El problema está causado por una condición de carrera existente en
/proc, que permite, bajo ciertas condiciones, ganar poderes de
superusuario.

/proc es una interfaz característica en sistemas UNIX, que conecta el
núcleo y el nivel de usuario, presentado dinámicamente bajo demanda y en
forma de sistema de archivos virtual, para ofrecer comunicación entre
núcleo y procesos.

La gravedad del problema se diluye teniendo en cuenta que, para
completar con éxito la escalada de privilegios, es necesario no sólo
correr una versión de kernel 2.6, sino además, tener soporte "a.out"
(CONFIG_BINFMT_AOUT=y), además de ser necesaria una ausencia de montaje
de /proc en modalidad "noexec". Adicionalmente, se requiere acceso local
a la máquina para poder ejecutar el exploit, si bien esto no impide
ataques remotos, en los que previamente se haya conseguido acceso a la
máquina a través de intrusiones típicas, como SSH, vía ataques de
diccionario. No son descartables otras combinatorias para determinar si
el problema puede reproducirse bajo otras condiciones de contorno.

El factor mas crítico es la existencia de un exploit público que permite
la realización de la escalada sin mucho esfuerzo, liberado en forma de
"0day". Para ello, basta con compilar el código fuente disponible y
luego ejecutar el programa resultante de la salida del compilador contra
un fichero voluminoso del sistema. En los núcleos no vulnerables,
aparecerán mensajes de fallo de segmento, o de fallo de formato de
ejecutable. En caso de vulnerabilidad, aparecerá, ante la ejecución de
"whoami", la evidencia de la escalada a root:

sh-3.1# whoami
root

Esta vulnerabilidad de suma a otra, aparecida hace pocos días, mediante
la cual, y a causa de un manejo inadecuado de los "core dumps", se hacía
igualmente factible el acceso a directorios restringidos, e incluso,
adquirir privilegios de root. Este problema forzó la aparición de la
versión 2.6.17.4 del kernel, que vuelve a quedar anulada días después
para resolver este "0day" que documentamos.

Ante la gravedad del problema, y existiendo otro problema reciente tal y
como se ha explicado, se aconseja seriamente a los administradores Linux
que estudien su estado de vulnerabilidad, y que actualicen a la versión
2.6.17.5 del núcleo con la mayor brevedad posible.


Sergio Hernando
shernando@hispasec.com


Más información:

Linus Torvalds. [PATCH] Fix nasty /proc vulnerability (CVE-2006-3626)
http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.17.5