Se ha publicado una nueva versión del proyecto uutils coreutils 0.9.0 (Rust Coreutils), que desarrolla una alternativa al paquete GNU Coreutils, escrita en el lenguaje Rust. El paquete coreutils incluye más de cien utilidades, incluidas sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln y ls. El objetivo del proyecto es crear una implementación alternativa multiplataforma de Coreutils, capaz de funcionar en plataformas como Windows, Redox y Fuchsia.
Rust Coreutils
se utiliza por defecto en la versión de Ubuntu 25.10 y, en parte, en Ubuntu 26.04. Rust Coreutils también se aplica en las distribuciones AerynOS (Serpent OS) y Apertis (desarrollada por la empresa Collabora). A diferencia de GNU Coreutils, la implementación en Rust se distribuye bajo la licencia permisiva MIT, en lugar de la licencia copyleft GPL. Además, el mismo equipo de desarrolladores está trabajando en implementaciones escritas en Rust de conjuntos de utilidades como util-linux, diffutils, findutils, procps y acl, así como en los programas sed y login.
En la nueva versión de Rust Coreutils:
- El nivel de compatibilidad con el conjunto de pruebas de referencia de GNU Coreutils ha sido del 90.58% (antes era 94.74%). Se han ejecutado con éxito 625 pruebas, cinco menos que en la versión anterior (630). 56 pruebas fallaron (antes eran 21), una prueba resultó en un error y 8 pruebas fueron omitidas (anteriormente 14). La disminución en el nivel de compatibilidad se debe a la actualización del conjunto de pruebas al estado de la versión GNU Coreutils 9.11, la cual incluye 25 nuevas pruebas.
- Se han corregido 44 vulnerabilidades identificadas durante una auditoría realizada por la empresa Zellic. La mayoría de las vulnerabilidades fueron causadas por discrepancias en el comportamiento con GNU coreutils o condiciones de carrera que permiten modificar datos en el momento posterior a la verificación de la validez de la información, pero antes de ejecutar la operación con ellos, por ejemplo, reemplazando un archivo por un enlace simbólico entre la finalización de la verificación y el inicio de la operación. En el contexto del uso de las utilidades cp, chmod y mv en scripts del sistema ejecutados con privilegios de root, tales vulnerabilidades permiten copiar o sobrescribir archivos arbitrarios. Para protegerse contra vulnerabilidades causadas por condiciones de carrera, el proyecto utiliza el módulo uucore::safe_copy. La información sobre las vulnerabilidades se ha publicado en una noticia separada.
- Se ha continuado el traslado de utilidades al paquete crate rustix en lugar del paquete crate nix. Las utilidades id, tr, timeout, sort, wc, tail, cp, who y factor se han trasladado a rustix.
Se ha realizado una limpieza del código de operaciones inseguras en varias utilidades. - En las utilidades cat, wc, head, tail, yes, cp, tee y unexpand se han implementado controladores de entrada/salida basados en llamadas del sistema splice(), tee() y pipe(), que han permitido acelerar el funcionamiento al eliminar la copia innecesaria de datos entre búferes.
- Se ha mejorado la compatibilidad con GNU Coreutils en las utilidades numfmt, date, tr, cksum, factor, head, stat y sort.
- Se ha añadido soporte para la compilación en formato WebAssembly y el uso de la interfaz WASI (Interfaz del Sistema WebAssembly) en las utilidades ln, dd, mktemp y tty.
- Se han ampliado las capacidades, se han solucionado problemas y se han añadido opciones faltantes para las utilidades cat, chroot, cksum,
cp, date, dd, df, dirname, du, echo, env, expr, factor, fmt, head, id, install, join, ln, logname, ls, md5sum, mkdir, mknod, mktemp, more, mv, nl, nohup, nproc, numfmt, od, paste, pinky, pr, realpath, rm, rmdir, shred, sort, split, stat, stdbuf, stty, sum, sync, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, who, yes.
Fuente: opennet.ru
