La empresa Canonical ha publicado los resultados preliminares de una auditoría de seguridad independiente del conjunto de herramientas uutils coreutils (Rust Coreutils), escrito en el lenguaje Rust y utilizado parcialmente en Ubuntu en lugar del paquete GNU Coreutils. La auditoría fue realizada por la empresa Zellic, que tiene experiencia en el análisis de vulnerabilidades en proyectos en Rust. Durante la revisión se identificaron 113 problemas de seguridad.
Actualmente ya está disponible el informe (PDF, 156 páginas) con los resultados de la primera fase de la auditoría, que abarca las utilidades más importantes del conjunto uutils. La primera fase, que se llevó a cabo de diciembre de 2025 a enero de 2026, reveló 73 vulnerabilidades, de las cuales 7 se clasificaron como críticas, 11 como peligrosas, 29 como de riesgo medio y 26 como no peligrosas.
La segunda fase de la auditoría se llevó a cabo de febrero a marzo y abarcó utilidades secundarias que no fueron verificadas en la primera fase. En la segunda fase se encontraron 40 vulnerabilidades, cuyo riesgo aún no se detalla (el informe se publicará más adelante). La información sobre todos los problemas identificados ya ha sido enviada a los desarrolladores de uutils y la mayor parte de las vulnerabilidades se han resuelto en las versiones de uutils 0.5-0.8 sin publicidad adicional y sin marcar la relación entre las correcciones realizadas y la eliminación de las vulnerabilidades.
El paquete rust-coreutils fue incluido por defecto en el lanzamiento de otoño de Ubuntu 25.10, pero teniendo en cuenta los problemas identificados durante la auditoría, en la rama LTS Ubuntu 26.04 se han devuelto las utilidades cp, mv y rm del conjunto GNU Coreutils. Se señala que, hasta el 22 de abril, en estas utilidades permanecen sin resolver 8 estados de carrera conocidos. Las demás utilidades están utilizadas de la versión rust-coreutils 0.8.0. En Ubuntu 26.10, los desarrolladores tienen la intención de hacer la transición completa a rust-coreutils.
Las vulnerabilidades en las utilidades del sistema son peligrosas porque se utilizan en scripts que se ejecutan con privilegios de root. Por ejemplo, la vulnerabilidad corregida en la versión uutils coreutils 0.3.0 en la utilidad rm podría haberse explotado durante la ejecución diaria de un script cron /etc/cron.daily/apport, que se ejecuta con privilegios de root y elimina recursivamente el contenido del directorio /var/crash, accesible para escritura por todos los usuarios del sistema.
Entre las vulnerabilidades marcadas en el primer informe como críticas:
- Una vulnerabilidad en la utilidad chroot, causada por el procesamiento de la opción «—userspec» después de la llamada a chroot(), pero antes de la elevación de privilegios. En sistemas con glibc, la resolución de nombres a través de la función getpwnam() lleva a la lectura del archivo /etc/nsswitch.conf, utilizado en NSS (Name Service Switch), y carga dinámica de las bibliotecas especificadas en él con módulos NSS (libnss_*.so.2). Dado que antes del procesamiento de NSS se ejecuta la llamada a chroot(), el archivo /etc/nsswitch.conf se carga en relación con la nueva raíz, pero las bibliotecas NSS se cargan antes de la elevación de privilegios. Si un usuario tiene acceso de escritura a la nueva raíz, puede sustituir sus propias bibliotecas NSS y lograr la ejecución de código con privilegios de root.
- Cambio de permisos en un archivo después de un fallo al crear un canal nombrado (FIFO) con la utilidad mkfifo — si se especifica un archivo existente como argumento, mkfifo devolverá un error, pero no terminará inesperadamente, sino que llamará a set_permissions() y cambiará los permisos del archivo existente. Con una umask de 022, la vulnerabilidad permite cambiar los permisos del archivo a 644 (rw-r--r--) y obtener acceso a archivos para los cuales no se había permitido la lectura.
- Elusión de las restricciones «—preserve-root» en la utilidad chmod, que prohíbe realizar operaciones recursivas en relación con la raíz del sistema de archivos. La vulnerabilidad (CVE-2026-35338) se debe a que en el código solo se comprobaba la coincidencia exacta de la ruta con «/» y no se realizaba la canonización de la ruta del archivo. Para eludir la comprobación, es suficiente usar una ruta como «/../» o un enlace simbólico a la raíz. La vulnerabilidad es peligrosa porque, si se tiene la posibilidad de introducir su propia ruta en un script del sistema que llama al comando chmod, se puede lograr un cambio recursivo de permisos para todos los archivos en el sistema de archivos.
- En la utilidad rm se permitía el procesamiento de cualquier abreviatura de la opción «—no-preserve-root» («—n», «—no», «—no-p», «—no-pres» etc.) para desactivar la protección contra la realización de operaciones recursivas con la raíz (por ejemplo, se puede especificar «rm -rf —n /» y eliminar accidentalmente todos los datos. En GNU Coreutils, tales opciones abreviadas están prohibidas.
- Elusión de las restricciones «—preserve-root» en la utilidad rm, que prohíben realizar operaciones recursivas en relación con la raíz del sistema de archivos, mediante la sustitución de un enlace simbólico a «/».
- Falta de protección adecuada contra la especificación de directorios que comienzan con un punto. Por ejemplo, al ejecutar «rm -rf .» la utilidad mostrará un error, pero al especificar «rm -rf ./» o «rm -rf .///» eliminará silenciosamente el directorio actual.
- Un error en el código de análisis de argumentos de la utilidad kill permite enviar señales a todos los procesos en el sistema al especificar el identificador de proceso «-1» (kill -1).
Por lo demás, la mayoría de las vulnerabilidades pertenecen a la clase TOCTOU (Tiempo de Comprobación a Tiempo de Uso), que implica una condición de carrera que permite modificar datos en el momento después de que se verifica la validez de la información, pero antes de realizar una operación con ellos, por ejemplo, reemplazar un archivo por un enlace simbólico en el momento entre la finalización de la verificación y el inicio de la operación. En el contexto de utilizar las utilidades cp y mv en scripts del sistema que se ejecutan con privilegios de root, tales vulnerabilidades permiten copiar o sobrescribir archivos arbitrarios.
Fuente: opennet.ru
