Skip to content

Posible bypass de sudo permitiría a cualquier usuario obtener privilegios root

Posible bypass de sudo permitiría a cualquier usuario obtener privilegios root

La utilidad conocida como sudo -presente en casi cualquier sistema basado en Linux/UNIX- está afectada por una importante vulnerabilidad recogida en el CVE-2019-14287.

Se trata de un posible bypass de la política de seguridad que podría ser aprovechada por un atacante o por un programa ilegítimo para obtener privilegios elevados con los que hacer cambios malintencionados en el equipo o lanzar ejecutables.

Vulnerabilidad de Sudo en sistemas basados en Linux

Sudo es un programa para los sistemas operativos basados en UNIX o Linux que permite a un usuario lanzar programas como otro usuario, obteniendo sus permisos de ejecución, sin tener que cambiar al mismo.

Sus siglas responden a «superuser do» y permiten que usuarios normales asuman ciertos «privilegios» para trabajar, sin tener que asumir la identidad de root, algo que podría provocar problemas irreparables en el equipo. Es similar al comando runas de Windows.

Para ello el usuario escribiría sudo, seguido de su comando o script:

sudo <ejecutable> 

Tras ello se le solicita la contraseña del usuario con el que tenemos sesión iniciada, no con el que proporcionará permisos para ejecutar la orden.

El problema empieza ahora, según describen en el advisory de Sudo:

Cuando sudo se configura para permitir lanzar comandos como un usuario arbitrario mediante la palabra clave ALL en una especificación runas, es posible ejecutar comandos como usuario root especificando el valor -1 para el ID de usuario o bien el valor 4294967295.

Esto podría ser usado por un usuario con suficientes privilegios de sudo para así lanzar comandos como root incluso si la especificación runas estipula lo contrario, mientras la palabra ALL esté listada en la configuración de runas (ejecutar como).

Las entradas de log para los comandos lanzados de esta manera listarán el usuario objetivo como 4294967295 en lugar de root. Además, tampoco se lanzarán los módulos de seguridad PAM (Pluggable Access Module) para estos comandos.

Funcionamiento del bypass

Al contrario que el comando su, los usuarios deberían (por defecto) introducir su propia contraseña al emplear sudo, no la contraseña del usuario objetivo. Una vez autenticado el usuario, si al leer el archivo sudoers ubicado en (/etc/sudoers) se ve que el usuario tiene acceso permitido como sudo, el sistema lo permitirá.

Normalmente los administradores eligen uno o varios comandos a los que el usuario concreto podrá asociar permisos de sudo, en lugar de establecer el valor ALL.

Sin embargo, a raíz de la vulnerabilidad CVE-2019-14287, incluso si un usuario no tiene permitido ejecutar un comando concreto, podrá hacer un bypass de la restricción.

El problema viene en la forma en que el sistema convierte el ID de usuario en su nombre de usuario. Dicha función no maneja bien el valor -1 ni su equivalente no firmado 4294967295, interpretando este como un 0, lo que siempre va a asociado a root.

Si una entrada del archivo sudoers (sudo visudo) estuviera permitiendo a un usuario ejecutar un comando como cualquier usuario excepto root, el problema podría utilizarse para evadir dicha restricción. Por ejemplo, si tenemos esta entrada en sudoers:

localhost alejandro = (ALL, !root) /usr/bin/vi

El usuario alejandro podría ejecutar el programa vi como cualquier usuario menos root. Pero en este caso, alejandro sería capaz de hacerlo como root si especifica lo siguiente:

sudo -u#-1 vi

Lo que es peor, dado que no estaremos especificando el usuario a través de la opción -u y por tanto este no existe en la base de datos local, no se cargarán los módulos PAM.

La solución

Como siempre, pasa por actualizar. En este caso, necesitaremos la versión sudo posterior a 1.8.28 dado que todas las demás están afectadas por esta vulnerabilidad.

deweloper View All

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

Deja un comentario