Descubierta una nueva vulnerabilidad en el núcleo del sistema operativo Linux permitiendo al usuario local elevar sus privilegios en el sistema y convertirse en root con extrema facilidad.

La vulnerabilidad únicamente es explotable cuando se producen estas tres circunstancias: 1. El núcleo ha sido compilado para dar soporte a módulos y el cargador de módulos del núcleo está habilitado. 2. /proc/sys/kernel/modprobe contiene la vía de acceso de un archivo ejecutable. 3. No se bloquean las llamadas a ptrace() En el momento en que un proceso solicita una función residente en un módulo, el núcleo del sistema operativo inicia un proceso hijo, estableciendo el euid (Effective UID, identificador de usuario efectivo) y el egid (Effective Group ID, identificador de grupo efectivo) en 0 y ejecuta la función execve("/sbin/modprobe").

La vulnerabilidad se encuentra en que, antes de cambiar el euid del proceso hijo, es posible utilizar ptrace() para conectarse con el mismo. En este momento, el usuario puede insertar código en el proceso, que será ejecutado con los privilegios de root. Se trata de un problema que afecta las versiones 2.2.* y 2.4.* del núcleo del sistema operativo Linux, únicamente cuando se ha compilado el núcleo para dar soporte a módulos utilizando kmod. Por tanto, las versiones del núcleo compiladas de forma monolítica no son vulnerables. El problema no puede ser explotado de forma remota, por lo que dependiendo del entorno puede considerarse como un fallo menos grave. Existen diversos exploits que permiten aprovecharse de esta vulnerabilidad para que cualquier usuario del sistema obtenga privilegios de root.

La solución al problema pasa por aplicar el parche en el código fuente del núcleo del sistema operativo, recompilarlo y aplicarlo o bien, cuando se utiliza la versión estándar del núcleo incluida en una distribución de GNU/Linux, instalar el paquete de distribución del núcleo actualizado.

Existen, también, una serie de arreglos temporales o factores para mitigar el impacto de la vulnerabilidad: deshabilitar la utilización de kmod/módulos, añadir un módulo que bloquee la utilización de ptrace() o modificar el contenido de /proc/sys/kernel/modprobe para que contenga la referencia a un archivo no existente en el sistema.


Fuente: http://www.lawebdelprogramador.com/