Spoločnosť Qualys odhalila zraniteľnosť (CVE-2026-3888) v organizácii práce medzi snap-confine a systemd-tmpfiles v Ubuntu, čo umožňuje neprivilégovanému používateľovi získať root prístup k systému. Problém sa prejavuje v Ubuntu v predvolenej konfigurácii od vydania 24.04. V Ubuntu 16.04-22.04 môže byť zraniteľnosť využitá v neštandardných konfiguráciách, ktoré napodobňujú správanie novších verzií distribúcie. Oprava je v Ubuntu k dispozícii vo včerajšej aktualizácii balíka snapd. V snapd bola problém vyriešený v aktualizácii 2.75.
Zraniteľnosť vzniká z dôvodu nesprávnej interakcie medzi nástrojmi snap-confine a systemd-tmpfiles, ktoré sú spúšťané s vyššími privilégiami. Nástroj snap-confine vytvára sandboxové prostredie na vykonávanie snap aplikácie, zatiaľ čo systemd-tmpfiles vykonáva automatické čistenie dočasných súborov a adresárov. Predvolene je nástroj systemd-tmpfiles nastavený na odstránenie všetkých starých súborov a adresárov v /tmp, čo môže útočník využiť na zmenu adresára /tmp/.snap v momente po jeho odstránení nástrojom systemd-tmpfiles, ale pred jeho opätovným vytvorením príkazom snap-confine.
Útok spočíva v čakaní na spustenie procesu čistenia dočasných súborov, zmene adresára /tmp/.snap po jeho odstránení a umiestnení modifikovanej kópie knižníc /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. Útočníkovi môže byť potrebných niekoľko dní, kým sa spustí systemd-tmpfiles, pretože v Ubuntu 24.04 sa proces čistenia spúšťa raz za 10 dní, zatiaľ čo v novších vydaniach raz za 30 dní. Po zmene adresára útočník dosiahne inicializáciu nového sandboxového prostredia pomocou snap-confine.
Počas vytvárania prostredia sandboxu v dočasnom adresári /tmp/.snap útočník čaká na správny okamih a premenováva /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange na /tmp/.snap/usr/lib/x86_64-linux-gnu, čím nahrádza knižnice a zabezpečuje ich bind-montovanie s právami root. Týmto spôsobom útočník získava kontrolu nad zdieľanými knižnicami a načítavačom ld.so, ktoré sa spúšťajú v sandboxovom prostredí snap, a môže dosiahnuť vykonanie ľubovoľného kódu s právami root spustením akejkoľvek suid aplikácie, v ktorej sa používa dynamické prepojenie.
S root prístupom v sandbox prostredí, izolovanom pomocou AppArmor a filtrami systémových volaní na báze seccomp, môže útočník skopírovať /bin/bash do adresára /var/snap/$SNAP/common/ a nastaviť mu práva „04755“ (suid root). Napriek tomu, že práva sú zmenené vo vnútri sandboxu, súbor s upravenými právami je prístupný aj v hlavnom systéme, takže na získanie plného root prístupu stačí spustiť /var/snap//common/bash obyčajným, nepriviligovaným používateľom z normálneho systémového prostredia.
Pri tom bola odhalená zraniteľnosť v nástrojoch uutils coreutils (Rust Coreutils), analógu balíka GNU Coreutils, napísaného v jazyku Rust. Zraniteľnosť umožňuje nepriviligovanému používateľovi získať práva root v systéme. Problém bol zistený počas recenzovania zmien v Ubuntu 25.10 a bol obídený pred vydaním Ubuntu 25.10 dodaním /usr/bin/gnurm namiesto uutils rm. V balíku uutils bol problém vyriešený vo verzii uutils coreutils 0.3.0, bez zmienky v zozname zmien o odstránení zraniteľnosti (bolo uvedené, že v rm, du, chmod a chgrp je implementovaná bezpečná metóda obchádzania ciest).
Problém je spôsobený stavom pretekania v utilite „rm“, čo umožňuje lokálnemu používateľovi zmeniť obsah adresára na symbolickú linku počas odstraňovania pod kontrolou používateľa súborom procesom „rm“ s právami root. Medzi iným môže byť zraniteľnosť zneužitá pri každodenných spúšťaniach z cron skriptu /etc/cron.daily/apport, ktorý sa spúšťa s právami root a rekurzívne odstraňuje obsah adresára /var/crash, ktorý je zapisovateľný pre všetkých používateľov v systéme.
Pri rekurzívnom odstraňovaní adresárov utilita rm najprv overí všetky adresáre a potom ich postupne odstraňuje v opačnom poradí, volaním funkcie rmdir(). Ak sa podarí vymeniť rodičovský adresár za symbolickú linku hneď po overení tohto adresára, ale pred overením vnorených podadresárov, operácia povedie k odstráneniu adresára, na ktorý odkazuje symbolická linka. Týmto spôsobom možno dosiahnuť nielen odstránenie akéhokoľvek súboru v systéme, ale aj zvýšenie privilégií prostredníctvom odstránenia adresára /tmp/snap-private-tmp/$SNAP/tmp/.snap na zmenu obsahu sandboxového prostredia snap balíčka (metóda získania root je rovnaká ako pri prvej zraniteľnosti).
Zdroj: opennet.ru
