Grave vulnerabilidad en /proc del núcleo Linux

Workspace

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.