749 - Actualizaciones ROTAS en UBUNTU por las Coreutils en Rust
Ubuntu roto: Fallos críticos en sudo-rs y date (Coreutils) pusieron en peligro las actualizaciones y contraseñas. Te cuento el porqué y como se solucionó.
En las versiones intermedias de Ubuntu, en las que no son LTS, las que no son pares en ambos números, Canonical suele incluir novedades que pueden o NO llegar a las LTS. En el caso de la versión 25.10, Ubuntu decidió dar un paso, que algunos consideraron audaz, otros temerario y otros dijeron que rompía con GNU, y que no es ni mas ni menos, el inicio del movimiento conocido como oxidación del sistema, buscando por un lado, las garantías de seguridad que ofrece Rust, y por otro lado modernizar el sistema, y los procesos de construcción del mismo. Así, en este primer paso de oxidación de Ubuntu, se reemplazaron las coreutilis y sudo-rs. La cuestión es que después del lanzamiento se descubrieron, por lado errores en ambas herramientas. Y llegados a este punto, probablemente te estés planteando si ¿esto ha sido un fracaso o mas bien, la prueba de fuego que demuestra la madurez de la comunidad, y la gran ventaja de usar una versión intermedia como campo de pruebas antes de una LTS? En este episodio te cuento en que consistieron los fallos, como se resolvieron y mi punto de vista de todo esto.

Actualizaciones ROTAS en UBUNTU por las Coreutils en Rust
Antes que nada y por centrar un poco el tema, vamos a ver que son las coreutils y sudo-rs.
¿Que son las uutils coreutils?
Las uutils coreutils son una reimplementación de las GNU Core Utilities (coreutils) escritas en Rust. Las coreutils son un conjunto de herramientas básicas de línea de comandos que se utilizan en sistemas Unix y Linux para realizar tareas comunes como manipulación de archivos, gestión de procesos y operaciones de texto.
Son los comandos que usamos literalmente en cada sesión de terminal, incluso sin darnos cuenta. Por ejemplo,
ls. Para listar los archivos en un directorio.cp. Para copiar archivos o directorios.rm. Para borrar archivos o directorios.mv. Para mover o renombrar archivos.date. Para mostrar u obtener la fecha y hora del sistema.cat. Para mostrar el contenido de un archivo.
Sin estos comandos, la shell (el intérprete de comandos) no podría hacer casi nada. Por eso se les llama las «utilidades del núcleo» o core utilities. Tradicionalmente, estas herramientas están escritas en el lenguaje C.
Si te preguntas por que se llaman uutils, es porque el objteibo principal es permitir que los usuarios puedan usar estas herramientas en múltiples sistemas operativos, no solo en Linux, sino también en macOS y Windows, proporcionando una experiencia consistente en todos ellos.
¿Que es sudo-rs?
El proyecto sudo-rs es una reimplementación de la herramienta sudo escrita en Rust. Sudo es una utilidad que permite a los usuarios ejecutar comandos con privilegios elevados, generalmente como el usuario root, de manera segura y controlada. Con lo que estamos hablando del comando mas famoso y crítico en Linux para elevar privilegios.
Los problemas detectados
No hay actualizaciones automáticas
El comando date tiene muchas opciones, y en concreto hay una muy específica que es date -r, que nos da la hora de la última actualización de un archivo específico. Por ejemplo, si quiere conocer cuando se modificó por -ultima vez el fstab simplemente tienes que ejecutar,
date -r /etc/fstab
Por ejemplo, en mi caso concreto el resultado es,
$ date -r /etc/fstab
jue 17 oct 2024 20:18:24 CEST
El problema es que la nueva versión de date escrita en Rust en Ubuntu 25.10 tenía un bug con el argumento -r. En lugar de devolver la fecha de modificación del archivo, siempre devolvía la fecha y hora actual del sistema. Probablemente te estés preguntando, ¿y esto que tiene que ver con las actualizaciones rotas? O mejor ¿Tan grave es esto?
Pues esto es grave por dos razones fundamentales,
- Copias de Seguridad. Muchos scripts de backup, como mencionaba el reporte original, comprueban la hora de modificación de los archivos de copia antiguos para decidir si toca ejecutar una nueva copia. Si
date -rdice que el archivo antiguo es de hoy, básicamente, porque devuelve la hora actual, el script piensa que la copia ya está hecha y ¡no ejecuta el backup! - Actualizaciones Automáticas (unattended-upgrades). Ubuntu usa esta misma lógica con
date -ren su sistema de actualizaciones automáticas desatendidas. El sistema comprueba un archivo de referencia para saber cuándo fue la última vez que buscó actualizaciones. Sidate -rsiempre devuelve la hora actual, el sistema asume que la comprobación ya se hizo hace poco y deja de buscar actualizaciones automáticamente.
En general, tampoco era tan grave para un usuario normal, en el sentido de que podía actualizar manualmente sin problemas, pero el sistema de actualizaciones automáticas estaba roto, sin dar errores visibles.
sudo-rs y los fallos de seguridad
El segundo de los problemas se encontró en sudo-rs. Aquí aparecieron dos vulnerabilidades de seguridad importantes. La primera era relativa a la exposición parcial de la contraseña al expirar el tiempo de espera.
Cuando ejecutas un comando sudo, tienes un tiempo limitado para escribir tu contraseña. Si empiezas a escribir y no pulsas Enter antes de que se cumpla el timeout, sudo debería cerrarse discretamente.
El fallo consisitía en que en ciertas configuraciones de sudo-rs, si expiraba el tiempo de espera mientras estabas tecleando, la parte de la contraseña que habías escrito se mostraba directamente de vuelta a la consola.
Imagina que ejecutas
sudo apt update, empiezas a escribirmicontra… y te distraes. Si el timeout ocurre, la consola podría mostrarmicontrajusto antes de que elshellte devuelva el control. Esto es un fallo de seguridad porque expone información sensible.
La segunda de las vulnerabilidades es relativa al tiempo que el usuario está autenticado utilizando sudo sin que tenga que autenticar de nuevo. En este caso, el fallo consistía en que en algunas configuraciones concretas, un atacante local podía evitar la autenticación reutilizando credenciales anteriores.
Resolución de los errores. Velocidad y transparencia
Una de las partes más constructivas de esta historia es la rapidez con la que Canonical y la comunidad de Rust respondieron, demostrando por qué es tan importante que estos cambios se hagan en versiones intermedias.
| Problema | Herramienta | Detección (Aprox.) | Resolución (Lanzamiento del Parche) | Tiempo de Respuesta |
|---|---|---|---|---|
| Actualizaciones Rotas (date -r) | uutils coreutils | Día del lanzamiento de 25.10 (Octubre 2025) | Horas después | Muy rápido |
| Fallos de Seguridad | sudo-rs | Reportado de forma privada | 10 de Noviembre de 2025 | Coordinado y Rápido |
- El Bug de date. El problema de las actualizaciones se detectó prácticamente al instante, porque afectaba a la función de testeo. Se identificó el bug en el paquete rust-coreutils y se liberó una actualización (a la versión 0.2.2-0ubuntu2.1 o posterior) en cuestión de horas, restableciendo la funcionalidad de actualización automática.
- Los Fallos de sudo-rs. Los problemas de seguridad pasaron por el proceso de Divulgación Coordinada de Vulnerabilidades (CVD), donde los bugs se reportan y se corrigen antes de hacerse públicos. La solución se lanzó en la versión sudo-rs 0.2.8-1ubuntu5.2 y fue implementada de inmediato por Ubuntu a través de un Aviso de Seguridad (USN-7867-1).
El valor de la Versión Intermedia
Realmente me parece una historia constructiva e interesante por los siguientes aspectos,
- Campo de Pruebas. Ubuntu 25.10 no es una versión LTS; es una versión intermedia de 9 meses que se utiliza específicamente para probar cambios importantes como este. La idea es que los fallos se encuentren aquí y no en la versión 26.04 LTS, que será utilizada por millones de usuarios en entornos críticos.
- Cultura de Detección. El ecosistema de código abierto actuó rápidamente. El fallo en date lo descubrió un usuario y el equipo de Ubuntu lo priorizó. Los fallos de seguridad se corrigieron en el upstream de
sudo-rsy se trasladaron inmediatamente a Ubuntu. - Mejora Continua. Estos fallos, especialmente el de
date -r, obligaron a la comunidad de uutils a añadir nuevos y mejores tests de regresión que incluso las coreutils originales de GNU no tenían. Al final, todos los proyectos mejoran.
Conlusiones
La Seguridad no es una Bala de Plata, en el sentido de que Rust promete seguridad, pero solo contra fallos de memoria. No puede evitar fallos de lógica (como el de date -r o la gestión incorrecta de los timestamps de sudo-rs). Los bugs de lógica seguirán existiendo en cualquier lenguaje. Así, abordar una reescritura completa de un conjunto de herramientas críticas siempre conlleva riesgos.
Tenemos ver estos problemas en Ubuntu 25.10 no como un paso en falso, sino como el éxito del proceso de pruebas. El hecho de que se hayan encontrado y corregido tan rápido demuestra que el proceso de oxidación es serio, transparente y, sobre todo, seguro antes de llegar a la LTS. Y no solo esto, también está en la fuerza de la comunidad, y es que la respuesta coordinada y rápida de desarrolladores de Ubuntu, colaboradores de uutils y sudo-rs, y usuarios que reportaron los bugs, es la verdadera garantía de que el software de código abierto es el más fiable a largo plazo.
El proyecto de migrar a utilidades en Rust sigue adelante. Estos «tropiezos» son simplemente los dolores de crecimiento de herramientas que pronto serán más rápidas, más estables y, sobre todo, mucho más seguras en el corazón de nuestro sistema Linux. Otra cuestión es si es suficientemente estable como para integrarse en la próxima LTS, pero eso ya lo veremos en su momento.
Más información,