Spoločnosť Canonical zverejnila predbežné výsledky nezávislej bezpečnostnej auditu nástroja uutils coreutils (Rust Coreutils), ktorý je napísaný v jazyku Rust a čiastočne sa používa v Ubuntu namiesto balíka GNU Coreutils. Audit vykonala spoločnosť Zellic, ktorá má skúsenosti s analýzou zraniteľností v projektoch v jazyku Rust. Počas kontroly bolo identifikovaných 113 bezpečnostných problémov.
V súčasnosti je už k dispozícii správa (PDF, 156 strán) s výsledkami prvej fázy auditu, ktorá pokrýva najdôležitejšie nástroje z balíka uutils. V prvej fáze, ktorá prebiehala od decembra 2025 do januára 2026, bolo identifikovaných 73 zraniteľností, z ktorých 7 bolo označených ako kritické, 11 ako nebezpečné, 29 ako stredne nebezpečné a 26 ako nie nebezpečné.
Druhá fáza auditu prebiehala od februára do marca a pokrývala sekundárne nástroje, ktoré neboli skontrolované v prvej fáze. V druhej fáze bolo nájdených 40 zraniteľností, pričom nebezpečenstvo zatiaľ nie je podrobne špecifikované (správu plánujú zverejniť neskôr). Informácie o všetkých identifikovaných problémoch už boli odovzdané vývojárom uutils a väčšina zraniteľností bola odstránená v vydaniach uutils 0.5-0.8 bez zbytočnej publicity a označenia súvislosti prenášaných opráv s odstránením zraniteľností.
Balík rust-coreutils bol predvolene zahrnutý do jesenného vydania Ubuntu 25.10, ale s ohľadom na zistené problémy počas auditu boli v LTS vetve Ubuntu 26.04 vrátené nástroje cp, mv a rm z balíka GNU Coreutils. Uvádza sa, že k 22. aprílu zostáva v týchto nástrojoch neopravene 8 známych stavových závodov. Ostatné nástroje sú využité z vydania rust-coreutils 0.8.0. V Ubuntu 26.10 sa vývojári plánujú úplne prepnúť na rust-coreutils.
Zraniteľnosti v systémových nástrojoch sú nebezpečné, pretože sa používajú v skriptoch spúšťaných s právami root. Napríklad, zraniteľnosť v nástroji rm, ktorá bola odstránená vo vydaní uutils coreutils 0.3.0, mohla byť zneužitá při každodennom spúšťaní zo skriptu cron /etc/cron.daily/apport, ktorý je spúšťaný s právami root a rekurzívne odstraňuje obsah adresára /var/crash, ktorý je prístupný na zápis pre všetkých používateľov v systéme.
Medzi zraniteľnosťami označenými v prvej správe ako kritické:
- Zraniteľnosť v nástroji chroot spôsobená spracovaním voľby „—userspec“ po zavolaní chroot(), ale pred zrušením privilégií. Na systémoch s glibc riešenie mien prostredníctvom funkcie getpwnam() vedie k čítaniu súboru /etc/nsswitch.conf, ktorý sa uplatňuje v NSS (Name Service Switch), a dynamickému načítaniu knižníc uvedených v ňom s modulmi NSS (libnss_*.so.2). Pretože pred spracovaním NSS sa vykoná volanie chroot(), súbor /etc/nsswitch.conf sa načítava v súvislosti s novým koreňom, ale knižnice NSS sa načítajú pred zrušením privilégii. Ak má používateľ prístup na zápis k novému koreňu, môže vložiť svoje vlastné NSS knižnice a dosiahnuť vykonávanie kódu s právami root.
- Zmena prístupových práv k súboru po zlyhaní vytvorenia pomenovaného kanála (FIFO) nástrojom mkfifo — ak sa ako argument uvedie existujúci súbor, mkfifo vráti chybu, ale neukončí sa fatálne, ale vykoná volanie set_permissions() a zmení prístupové práva k existujúcemu súboru. S ohľadom na umask 022 zraniteľnosť umožňuje zmeniť prístupové práva k súboru na 644 (rw-r-r-) a získať prístup k súborom, pre ktoré nebolo povolené čítanie.
- Obídenie obmedzení „—preserve-root“ v nástroji chmod, ktoré zakazujú vykonávanie rekurzívnych operácií vo vzťahu k koreňu FS. Zraniteľnosť (CVE-2026-35338) je spôsobená tým, že v kóde sa kontrolovala iba presná zhoda cesty s „/“ a nevykonávala sa kanonizácia súborovej cesty. Na obídenie kontroly stačí použiť cestu typu „/../“ alebo symbolický odkaz na koreň. Zraniteľnosť je nebezpečná, pretože ak je možné vložiť svoju cestu do systémového skriptu vyvolávajúceho príkaz chmod, je možné dosiahnuť rekurzívnu zmenu prístupových práv pre všetky súbory v FS.
- V nástroji rm sa umožnilo spracovanie akýchkoľvek skratiek voľby „—no-preserve-root“ („—n“, „—no“, „—no-p“, „—no-pres“ a pod.) na deaktiváciu ochrany proti vykonaniu rekurzívnej operácie s koreňom (napríklad, je možné uviesť „rm -rf —n /“ a omylom odstrániť všetky údaje). V GNU Coreutils sú podobné skrátené voľby zakázané.
- Obídenie obmedzení „—preserve-root“ v nástroji rm, ktoré zakazujú vykonávanie rekurzívnych operácií vo vzťahu k koreňu FS, prostredníctvom substitúcie symbolického odkazu na „/“.
- Absencia plnohodnotnej ochrany pred uvádzaním adresárov začínajúcich bodkou. Napríklad, pri vykonávaní „rm -rf .“ nástroj vráti chybu, ale pri uvedení „rm -rf ./“ alebo „rm -rf .///“ ticho odstráni aktuálny adresár.
- Chyba v kóde parsovania argumentov utilitky kill umožňuje poslať signál všetkým procesom v systéme pri zadaní identifikátora procesu „-1“ (kill -1).
Inak väčšina zraniteľností patrí do triedy TOCTOU (Time-Of-Check-To-Time-Of-Use), predpokladajúcej existenciu závodu, ktorý umožňuje zmeniť údaje v okamihu po overení platnosti informácií, ale pred vykonaním operácie s nimi, napríklad nahradiť súbor symbolickou prepojkou v období medzi ukončením kontroly a začiatkom vykonávania operácie. V kontexte používania utilít cp a mv v systémových skriptoch, spúšťaných s právami root, takéto zraniteľnosti umožňujú skopírovať alebo prepísať ľubovoľné súbory.
Zdroj: opennet.ru
