Una vulnerabilidad en sudo permite saltarse las restricciones en torno a root
El día de ayer diversos medios se hicieron eco de una vulnerabilidad que afecta a sudo, la conocida herramienta que permite ejecutar de forma momentánea programas con privilegios de root sin necesidad de cambiar la sesión del usuario común.
La vulnerabilidad, cuyo código de seguimiento es CVE-2019-14287, afecta a la implementación de sudo que utiliza GNU/Linux y se trata, según explican en The Hacker News, “de una omisión de la política de seguridad podría permitir que un usuario o un programa malintencionado ejecute comandos arbitrarios como root en el sistema Linux objetivo, incluso cuando la configuración de los sudoers no permita explícitamente el acceso como root.”
Dicho con palabras llanas, el fallo de seguridad permite saltarse las restricciones para los usuarios que no son root, haciendo que ejecuten comandos con los privilegios del administrador de Linux. Los desarrolladores de sudo exponen que “esto puede ser utilizado por un usuario con suficientes privilegios de sudo para ejecutar comandos como root, incluso si la especificación RunAs no permite explícitamente el acceso a root, siempre y cuando la palabra clave ALL aparezca primera en la especificación RunAs.”
El ataque que explota la vulnerabilidad requiere de una configuración específica del fichero “/etc/sudoers”, por lo que no afecta a una gran cantidad de usuarios. Para ello la persona administradora del sistema (que puede ser la persona que maneja el ordenador de su casa) tiene que especificar en el fichero mencionado una política como la siguiente, indicando que se permite ejecutar vi como cualquier usuario menos root:
bob myhost = (ALL, !root) /usr/bin/vi
El fallo de seguridad puede ser explotado con un comando en el que se especifique el identificador del usuario (ID) como -1 o 4294967295, ya que sudo trata incorrectamente ambos números y los termina haciendo pasar por 0, que es el identificador de root. Es importante tener en cuenta que 4294967295 es el equivalente sin signo de -1.
sudo -u#-1 id -u
O de forma alternativa:
sudo -u#4294967295 id -u
La vulnerabilidad afecta a todas las versiones de sudo anteriores a la 1.8.28, que fue publicada ayer. Sin embargo, los usuarios de cualquier distribución GNU/Linux bien mantenida tendrían que haber empezado a recibir la correspondiente actualización de sudo a través de los canales habituales.