Vulnerabilidad en Sudo-rs (CVE-2023-42456)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-22
Limitación incorrecta de nombre de ruta a un directorio restringido (Path Traversal)
Fecha de publicación:
21/09/2023
Última modificación:
04/11/2023
Descripción
Sudo-rs, una implementación segura de memoria de sudo y su, permite a los usuarios no tener que ingresar autenticación en cada intento de sudo, sino que solo requiere autenticación de vez en cuando en cada terminal o grupo de procesos. Solo una vez que haya transcurrido un tiempo de espera configurable, el usuario deberá volver a autenticarse. Esta funcionalidad admite un conjunto de archivos de sesión (marcas de tiempo) para cada usuario, almacenados en `/var/run/sudo-rs/ts`. Estos archivos se nombran según el nombre de usuario desde el que se realiza el intento de sudo (el usuario de origen). Se descubrió un problema en versiones anteriores a la 0.2.1 donde los nombres de usuario que contenían los caracteres `.` y `/` podían provocar la corrupción de archivos específicos en el sistema de archivos. Como los nombres de usuario generalmente no están limitados por los caracteres que pueden contener, se puede construir un nombre de usuario que parezca un Path Traversal. Por ejemplo, podríamos agregar un usuario al sistema que contenga el nombre de usuario `../../../../bin/cp`. Cuando iniciaba sesión como usuario con ese nombre, ese usuario podía ejecutar `sudo -K` para borrar su archivo de registro de sesión. Luego, el código de sesión construye la ruta al archivo de sesión concatenando el nombre de usuario al directorio de almacenamiento del archivo de sesión, lo que da como resultado una ruta resuelta de `/bin/cp`. Luego, el código borra ese archivo, lo que da como resultado que el binario `cp` se elimine efectivamente del sistema. Un atacante debe poder iniciar sesión como usuario con un nombre de usuario construido. Dado que es poco probable que dicho nombre de usuario exista en un sistema existente, también deberán poder crear usuarios con los nombres de usuario creados. El problema se solucionó en la versión 0.2.1 de sudo-rs. Sudo-rs ahora usa el uid del usuario en lugar de su nombre de usuario para determinar el nombre del archivo. Tenga en cuenta que una actualización a esta versión hará que se ignoren los archivos de sesión existentes y los usuarios se verán obligados a volver a autenticarse. También elimina por completo cualquier posibilidad de Path Traversal, dado que los uids son siempre valores enteros. Los comandos `sudo -K` y `sudo -k` se pueden ejecutar, incluso si un usuario no tiene acceso a sudo. Como workaround, asegúrese de que su sistema no contenga ningún usuario con un nombre de usuario especialmente manipulado. Si bien este es el caso y aunque los usuarios que no son de confianza no tienen la capacidad de crear usuarios arbitrarios en el sistema, no se debería poder explotar este problema.
Impacto
Puntuación base 3.x
8.10
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:memorysafety:sudo:*:*:*:*:*:rust:*:* | 0.2.1 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página