Rust no es sinónimo de seguridad: Ubuntu frena su migración tras descubrir 113 fallos en su reemplazo de herramientas GNU.

Publicado el 30 de abril de 2026, 9:20

Si usas Linux, probablemente ni te hayas fijado en ellas, pero hay un conjunto de pequeñas herramientas que mueven los engranajes de tu sistema cada vez que copias un archivo, cambias permisos o eliminas una carpeta. Canonical, la empresa detrás de Ubuntu, quería modernizarlas por completo. El resultado de ese intento ha sido una auditoria de seguridad que ha sacudido a la comunidad. El plan era ambicioso: sustituir las veteranas GNU Coreutils por una versión reescrita en Rust, el lenguaje de programación que promete eliminar errores de memoria y ofrecer un código más robusto por diseño. El proyecto se llama uutils coreutils, y parecía una apuesta ganadora. Hasta que llegó la auditoría.

Canonical encargó a la empresa de ciberseguridad Zellic una revisión independiente del código. El encargo sonaba rutinario. Los resultados, no tanto: 113 vulnerabilidades en total, detectadas en dos rondas de análisis. La primera ronda, entre finales de 2025 y enero de 2026, se centró en las herramientas más críticas del sistema y destapó 63 problemas, de los cuales 7 se clasificaron como críticos y 11 como de alta gravedad. La segunda fase, concluida en marzo, sumó 40 fallos más al inventario. Y aquí está la lección más importante de todo esto: que un lenguaje sea moderno y más seguro en teoría no elimina los errores humanos de lógica. Rust puede protegerte de ciertos tipos de fallos relacionados con la memoria, sí, pero no puede pensar por el programador que diseñó mal una comprobación de rutas o que confundió una señal del sistema con un identificador de proceso.

Algunos de los errores encontrados son de los que erizan el vello. Uno de los más graves afecta a chroot, una utilidad que permite ejecutar procesos en un entorno aislado. El problema es que antes de renunciar a los privilegios de administrador, el código carga ciertos componentes del sistema desde la carpeta del nuevo entorno. Si tú como atacante tienes permisos de escritura en ese lugar, puedes colar ahí tus propios binarios y hacer que el sistema los ejecute con permisos de root. En pocas palabras: control total de la máquina. Otro fallo está en el comando kill, que en Linux sirve para enviar señales a los procesos en ejecución. El error de lógica es casi kafkiano: cuando le pides que envíe la señal número uno, el programa la interpreta como un número de proceso negativo. ¿Qué ocurre entonces? Que en lugar de apuntar a un proceso concreto, lanza una señal de terminación a todos los procesos visibles del sistema. Un solo comando mal interpretado puede tumbar el servidor entero. Hay más. La herramienta mkfifo, usada para crear ciertos tipos de canales de comunicación entre procesos, fallaba al encontrarse con archivos ya existentes. En lugar de detenerse y avisar del conflicto, los sobreescribía cambiando sus permisos a lectura pública. Cualquier usuario de la red podría entonces acceder a información que debería ser privada.

Gran parte de los fallos detectados en las herramientas de copiado y movimiento de archivos pertenecen a una categoría técnica conocida como TOCTOU, que significa "tiempo de comprobación frente a tiempo de uso". Te lo explico con un ejemplo sencillo. Imagina que el sistema comprueba si tienes permiso para copiar un archivo, y en ese brevísimo instante entre que hace la comprobación y ejecuta la copia, alguien cambia ese archivo por un enlace que apunta a otro lugar del sistema. El programa ya dio el permiso, así que completa la operación sin sospechar nada. Un atacante lo suficientemente rápido o un proceso malicioso corriendo en paralelo puede aprovechar esa ventana de milisegundos para sobrescribir archivos críticos del sistema saltándose cualquier restricción de seguridad. Y por si fuera poco, el comando rm, el que elimina archivos, permitía usar atajos informales para desactivar su protección contra el borrado accidental del directorio raíz, algo que GNU prohíbe terminantemente en sus versiones clásicas. Un comando tecleado con prisa o un script de limpieza mal escrito podría desencadenar un borrado masivo sin que el sistema pusiera freno.

Ante este panorama, Canonical ha tomado la decisión más prudente: Ubuntu 26.04, que es una versión LTS, la de soporte a largo plazo que usan millones de servidores y empresas, mantendrá las herramientas clásicas de GNU para las operaciones más delicadas, especialmente cp, mv y rm, mientras se corrigen las condiciones de carrera pendientes. La migración completa a uutils queda aplazada hasta la versión 26.10. Es una decisión sensata. Una LTS no es el lugar para experimentos, y los fallos encontrados son demasiado serios como para ignorarlos en entornos de producción.

La próxima vez que alguien te diga que reescribir algo en Rust lo hace automáticamente seguro, recuerda este caso. Las herramientas de bajo nivel que gestionan archivos y procesos con privilegios de administrador son terreno minado, y el lenguaje de programación es solo una parte de la ecuación. La lógica importa. Las pruebas importan. Y las auditorías independientes, como ha demostrado Zellic, pueden marcar la diferencia entre una migración tranquila y un desastre silencioso esperando ocurrir.

 

Fuente: Linux-os.net

Añadir comentario

Comentarios

Todavía no hay comentarios