Vulnerabilidad crítica en Sudo permite elevar privilegios en sistemas Linux

Vulnerabilidad crítica en Sudo permite elevar privilegios en sistemas Linux

Sergio De Luz

Se ha descubierto una nueva vulnerabilidad crítica en el programa «Sudo» que utilizan los sistemas operativos Linux para ejecutar temporalmente órdenes como superusuario (root). Sudo es ampliamente utilizado por sistemas operativos Debian y sus derivados como la familia Ubuntu, asimismo también es utilizado en la rama Red Hat Enterprise Linux y sus derivados como CentOS por ejemplo.

Sudo nos permite que un usuario incorporado en el archivo /etc/sudoers habitualmente, pueda ejecutar órdenes a través del terminal con permisos de root para cambiar permisos o modificar partes del sistema que en modo usuario no podría. En este archivo también se pueden detallar los comandos que dicho usuario puede ejecutar.

Gracias a sudo no tendremos que tener el usuario «root» habilitado en el sistema con una contraseña, de esta forma aumentamos la seguridad ya que no podrán atacar a root y obtener su contraseña de acceso de ninguna forma, por ejemplo en sistemas Ubuntu el usuario «root» está deshabilitado por defecto, de tal forma que si queremos hacer alguna acción con privilegios de superusuario, deberemos usar «sudo» en el usuario administrador del sistema por defecto (el primer usuario registrado en la instalación).

Vulnerabilidad en Sudo

Ahora se ha descubierto una vulnerabilidad en las últimas versiones de «sudo» para Ubuntu y Red Hat Enterprise Linux que permitiría a un usuario elevar privilegios y acceder a partes del sistema a las que no debería tener permitido su acceso. Para explotar esta vulnerabilidad se debe tener acceso local al sistema (o remoto vía SSH con un usuario registrado en el sistema). A continuación en el archivo sudoers debería existir una sentenciacon comodín del siguiente estilo:

/home/*/*/file.txt

El problema radica en que sudo no interpreta correctamente los comodines y permitiría que cualquier usuario registrado en el sistema cree un enlace simbólico a por ejemplo /etc/shadow que es donde se almacenan todos los hashes de las contraseñas de los usuarios del sistema, y tener acceso completo a dicho archivo.

¿Cómo comprobar si estoy afectado por el fallo?

Para comprobar si estamos afectados primero debemos crear una sentencia en el archivo sudoers con el siguiente aspecto:

<user_to_grant_priv> ALL=(root) NOPASSWD: sudoedit /home/*/*/test.txt

A continuación nos logueamos con el usuario de prueba y creamos un enlace simbólico dentro de la carpeta de test.txt a un archivo del sistema al que no deberíamos tener acceso como por ejemplo /etc/shadow. A continuación si procedemos a editar o leer dicho archivo test.txt deberíamos tener acceso directo a /etc/shadow aunque en el archivo sudoers no nos diga específicamente que tenemos permitido el acceso a él.

Os recomendamos visitar 0day.today donde tenéis toda la información sobre este fallo de seguridad y que está catalogado con el código CVE-2015-5602.

1 Comentario