Bypass de sudoers con user ID -1 o 4294967295

Joe Vennix de Apple Information Security ha publicado la vulnerabilidad CVE-2019-14287 que afecta a todas las versiones de sudo anteriores a la 1.8.28 y que permite a un usuario ejecutar comandos como root, simplemente especificando el usuario -1 o 4294967295...

Así leído al principio aco.. impresiona, pero sin embargo la configuración por defecto de sudoers NO ES VULNERABLE, es más, solo lo es si se ha configurado Sudo de una manera bastante imaginativa, permitiendo a los usuarios ejecutar comandos como cualquier usuario excepto root.

La mejor manera de describir el escenario es usar un ejemplo. Supongamos que se ha configurado en el sudoer que el usuario 'pepito' pueda ejecutar el editor de texto Vi como cualquier usuario, excepto root. Es raro ya lo sé, pero imagina que queremos que 'pepito' supervise los archivos y actividades de otros usuarios, pero sin darle acceso de superusuario:

servidor pepito = (ALL, !root) /usr/bin/vi

Eso debería permitir que 'pepito' ejecute Vi como cualquiera que no sea root. Sin embargo, si 'pepito' ejecuta este comando:

sudo -u#-1 vi

o este otro:

sudo -u#4294967295 vi

pepito podrá cambiar cualquier archivo del sistema como root...ups!

Esto ocurre porque la función que convierte el id al username trata el -1 de manera incorrecta, como 0, es decir el id de root. Además, y para más diversión, el ID de usuario 4294967295 omitirá las restricciones también porque, como un entero de 32 bits con signo, es igual a -1.

¿Solución? Actualizar Sudo a la versión 1.8.28 o posterior :-P

#AZULONES: regla Sigma para detectar intentos de explotar esta vulnerabilidad:

https://github.com/Neo23x0/sigma/blob/master/rules/linux/lnx_sudo_cve_2019_14287.yml

Fuente: https://www.sudo.ws/alerts/minus_1_uid.html

Comentarios