V Rust Coreutils bylo identifikováno 113 zranitelností. Ubuntu 26.04 vrátil cp, mv a rm z GNU Coreutils

Společnost Canonical zveřejnila předběžné výsledky nezávislého bezpečnostního auditu sady nástrojů uutils coreutils (Rust Coreutils), napsané v jazyce Rust a částečně používané v... Ubuntu místo balíčku GNU Coreutils. Audit provedla společnost Zellic, která má zkušenosti s analýzou zranitelností pro projekty Rust. Audit identifikoval 113 bezpečnostních problémů.

Zpráva (PDF, 156 stran) s výsledky první fáze auditu, která zahrnuje nejdůležitější utility ze sady uutils, je nyní k dispozici. Během první fáze, která probíhala od prosince 2025 do ledna 2026, bylo identifikováno 73 zranitelností, z nichž 7 bylo hodnoceno jako kritické, 11 jako nebezpečné, 29 jako středně závažné a 26 jako bezpečné.

Druhá fáze auditu probíhala od února do března a zahrnovala drobné utility, které nebyly testovány v první fázi. Během této druhé fáze bylo nalezeno čtyřicet zranitelností, jejichž závažnost dosud nebyla podrobně stanovena (zpráva bude zveřejněna později). Informace o všech identifikovaných problémech již byly předány vývojářům uutils a většina zranitelností byla opravena ve verzích uutils 0.5-0.8 bez další publicity nebo uvedení zdroje.

Balíček rust-coreutils byl ve výchozím nastavení zahrnut v podzimní verzi. Ubuntu 25.10, ale s přihlédnutím k problémům zjištěným během auditu v pobočce LTS Ubuntu Dne 26. dubna byly vráceny utility cp, mv a rm ze sady GNU Coreutils. Je třeba poznamenat, že k 22. dubnu měly tyto utility stále osm známých neopravených systémových podmínek. Zbývající utility pocházejí z verze rust-coreutils 0.8.0. Ubuntu 26.10. října vývojáři hodlají kompletně přejít na rust-coreutils.

Zranitelnosti v systémových nástrojích jsou nebezpečné, protože jsou zneužívány ve skriptech spouštěných s root oprávněními. Například zranitelnost v nástroji rm, opravená ve verzi uutils coreutils 0.3.0, by mohla být zneužita denním spouštěním skriptu /etc/cron.daily/apport z cronu. Tento skript se spouští s root oprávněními a rekurzivně maže obsah adresáře /var/crash, do kterého mohou zapisovat všichni uživatelé v systému.

Mezi zranitelnostmi označenými v první zprávě jako kritické:

  • Zranitelnost v nástroji chroot je způsobena zpracováním parametru „--userspec“ po volání funkce chroot(), ale před zrušením oprávnění. V systémech s glibc vede překlad názvů pomocí funkce getpwnam() k načtení souboru /etc/nsswitch.conf používaného NSS (Name Service Switch) a dynamickému načítání knihoven obsahujících moduly NSS (libnss_*.so.2). Protože je funkce chroot() volána před zpracováním NSS, soubor /etc/nsswitch.conf se načítá vzhledem k novému kořenovému adresáři, ale knihovny NSS se načtou před zrušením oprávnění. Pokud má uživatel přístup pro zápis do nového kořenového adresáře, může nahradit své vlastní knihovny NSS a spustit kód s oprávněními root.
  • Oprávnění k souborům se změní po neúspěšném vytvoření pojmenovaného kanálu (FIFO) pomocí nástroje mkfifo. Pokud je jako argument zadán existující soubor, mkfifo vrátí chybu, ale místo pádu zavolá set_permissions() a změní oprávnění existujícího souboru. Při nastavení umask 022 tato zranitelnost umožňuje změnit oprávnění k souborům na 644 (rw-rr-) a přistupovat k souborům, pro které dříve nebyla udělena oprávnění ke čtení.
  • Existuje možnost obcházení omezení „--preserve-root“ v nástroji chmod, které zabraňuje rekurzivním operacím vzhledem ke kořenovému adresáři souborového systému. Zranitelnost (CVE-2026-35338) je způsobena tím, že kód kontroluje pouze přesnou shodu cesty s „/“ a neprovádí kanonizaci cesty k souboru. K obejití této kontroly stačí použít cestu ve tvaru „/../“ nebo symbolický odkaz na kořenový adresář. Zranitelnost je nebezpečná, protože nahrazením vlastní cesty do systémového skriptu, který volá příkaz chmod, lze rekurzivně změnit přístupová práva všech souborů v souborovém systému.
  • Utilita rm umožňovala použití libovolné zkratky pro volbu „--no-preserve-root“ („--n“, „--no“, „--no-p“, „--no-pres“ atd.) pro deaktivaci ochrany před rekurzivními operacemi root (například byste mohli zadat „rm -rf -n /“ a omylem smazat všechna data). Takové zkratky jsou v GNU Coreutils zakázány.
  • Obejděte omezení „--preserve-root“ v nástroji rm, které zakazuje rekurzivní operace vzhledem ke kořenovému adresáři souborového systému, nahrazením symbolického odkazu znakem „/“.
  • Nedostatečná úplná ochrana proti zadávání adresářů začínajících tečkou. Například při spuštění „rm -rf .“ utilita vrátí chybu, ale při zadání „rm -rf ./“ nebo „rm -rf .///“ tiše smaže aktuální adresář.
  • Chyba v kódu pro analýzu argumentů utility kill umožňuje odeslání signálu všem procesům v systému, když je zadáno ID procesu „-1“ (kill -1).

Většina ostatních zranitelností spadá do třídy TOCTOU (Time-Of-Check-To-Time-Of-Use), která zahrnuje soubojový stav, jenž umožňuje úpravu dat po ověření informací, ale před provedením operace. Například nahrazení souboru symbolickým odkazem mezi dokončením kontroly a zahájením operace. Při použití utilit cp a mv v systémových skriptech spouštěných s oprávněními root tyto zranitelnosti umožňují kopírování nebo přepsání libovolných souborů.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster