V Rust Coreutils bylo zjištěno 113 zranitelností. V Ubuntu 26.04 byly vráceny cp, mv a rm z GNU Coreutils

Společnost Canonical zveřejnila předběžné výsledky nezávislého bezpečnostního auditu nástroje uutils coreutils (Rust Coreutils), napsaného v jazyce Rust a částečně používaného v Ubuntu místo balíčku GNU Coreutils. Audit provedla firma Zellic, která má zkušenosti s analýzou zranitelností v projektech napsaných v jazyce Rust. Během kontroly bylo zjištěno 113 bezpečnostních problémů.

Nyní je již k dispozici zpráva (PDF, 156 stran) s výsledky prvního kroku auditu, který pokrývá nejdůležitější nástroje z balíčku uutils. První fáze byla provedena od prosince 2025 do ledna 2026 a bylo zjištěno 73 zranitelností, z nichž 7 bylo označeno jako kritické, 11 jako nebezpečné, 29 jako středně nebezpečné a 26 jako bezpečné.

Druhá fáze auditu byla provedena od února do března a pokrývala sekundární nástroje, které nebyly zkontrolovány v první fázi. V druhé fázi bylo nalezeno 40 zranitelností, jejichž nebezpečnost není zatím podrobněji specifikována (zpráva bude zveřejněna později). Informace o všech zjištěných problémech byly již předány vývojářům uutils a většina zranitelností byla odstraněna ve verzích uutils 0.5-0.8 bez zbytečné publicity a označení vztahu oprav se zranitelnostmi.

Balíček rust-coreutils byl zahrnut jako výchozí v podzimním vydání Ubuntu 25.10, ale s ohledem na problémy zjištěné během auditu byly v LTS větvi Ubuntu 26.04 vráceny nástroje cp, mv a rm z balíčku GNU Coreutils. Je uvedeno, že ke dni 22. dubna zůstává v těchto nástrojích neopraveno 8 známých stavů závodů. Ostatní nástroje byly použity z vydání rust-coreutils 0.8.0. V Ubuntu 26.10 plánují vývojáři plně přejít na rust-coreutils.

Zranitelnosti v systémových nástrojích jsou nebezpečné, protože se používají ve skriptech spouštěných s právy root. Například zranitelnost, která byla odstraněna v vydání uutils coreutils 0.3.0 v nástroji rm, mohla být zneužita při každodenním spuštění ze skriptu cron /etc/cron.daily/apport, který je vykonáván s právy root a rekurzivně odstraňuje obsah adresáře /var/crash, který je pro zápis přístupný všem uživatelům v systému.

Mezi zranitelnosti označené v první zprávě jako kritické patří:

  • Zranitelnost v nástroji chroot, způsobená zpracováním volby „—userspec“ po volání chroot(), ale před zrušením privilegií. Na systémech s glibc rozpoznávání názvů přes funkci getpwnam() vede k přečtení souboru /etc/nsswitch.conf, použitým v NSS (Name Service Switch), a dynamickému načítání v něm uvedených knihoven s moduly NSS (libnss_*.so.2). Protože před zpracováním NSS se provádí volání chroot(), soubor /etc/nsswitch.conf se načítá relativně k novému kořenu, ale knihovny NSS se načítají před zrušením privilegií. Pokud má uživatel přístup k zápisu do nového kořene, může vložit své vlastní knihovny NSS a dosáhnout provedení kódu s právy root.
  • Změna práv přístupu k souboru po selhání při vytváření pojmenovaného kanálu (FIFO) nástrojem mkfifo — pokud se jako argument uvede existující soubor, mkfifo vrátí chybu, ale přitom neukončí práci, ale provede volání set_permissions() a změní práva přístupu k existujícímu souboru. S ohledem na umask 022 zranitelnost umožňuje změnit práva přístupu k souboru na 644 (rw-r--r--) a získat přístup k souborům, pro které nebylo povoleno čtení.
  • Obcházení omezení „—preserve-root“ v nástroji chmod, které zakazují provádění rekurzivních operací vzhledem k kořeni FS. Zranitelnost (CVE-2026-35338) je způsobena tím, že v kódu se kontrolovalo pouze přesné porovnání cesty s „/“ a neprováděla se kanonizace souborové cesty. Pro obcházení kontroly stačí použít cestu ve tvaru „/../“ nebo symbolický odkaz na kořen. Zranitelnost je nebezpečná tím, že při možnosti vložit svou cestu do systémového skriptu, který volá příkaz chmod, lze dosáhnout rekurzivní změny práv přístupu pro všechny soubory v FS.
  • V nástroji rm bylo povoleno zpracování jakýchkoli zkratek volby „—no-preserve-root“ („—n“, „—no“, „—no-p“, „—no-pres“ atd.) pro deaktivaci ochrany proti provádění rekurzivních operací s kořenem (například je možné uvést „rm -rf —n /“ a omylem smazat všechna data. V GNU Coreutils jsou podobné zkrácené volby zakázány.
  • Obcházení omezení „—preserve-root“ v nástroji rm, které zakazují provádění rekurzivních operací vzhledem k kořeni FS, prostřednictvím substituce symbolického odkazu na „/“.
  • Nedostatek plnohodnotné ochrany před určením adresářů začínajících tečkou. Například při provádění „rm -rf .“ nástroj vypíše chybu, ale při uvedení „rm -rf ./“ nebo „rm -rf .///“ tiše odstraní aktuální adresář.
  • Chyba v kódu při analýze argumentů utility kill umožňuje poslat signál všem procesům v systému, pokud je uvedeno identifikační číslo procesu „-1“ (kill -1).

Všechny ostatní zranitelnosti spadají do třídy TOCTOU (Time-Of-Check-To-Time-Of-Use), což představuje závodní podmínku, která umožňuje změnit data v okamžiku po ověření správnosti informací, ale před provedením operace s nimi, například vyměnit soubor za symbolický odkaz během okamžiku mezi ukončením kontroly a zahájením provádění operace. V kontextu používání utilit cp a mv ve systémových skriptech spouštěných s právy root, umožňují podobné zranitelnosti kopírovat nebo přepisovat libovolné soubory.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster