EttevĂ”te Qualys tuvastas haavatavuse (CVE-2026-3888) snap-confine ja systemd-tmpfiles'i koostöös Ubuntu's, mis vĂ”imaldab mitteprivilegeeritud kasutajal saada root-juurdepÀÀs sĂŒsteemile. Probleem ilmneb Ubuntu vaikeseadistuses alates versioonist 24.04. Ubuntu versioonides 16.04-22.04 saab haavatavust kasutada ebatavalistes seadistustes, mis matkivad uuemaid versioone jaotises. Ubuntu's on parandused saadaval eilse snapd paketihalduri uuendamise raames. Snapd-s on probleem lahendatud versiooniuuendusega 2.75.
Haavatavus tekib snap-confine'i ja systemd-tmpfiles'i töötluse vale koostöö tĂ”ttu, mis töötatakse suurenenud privileegidega. Snap-confine loob sandbox-keskkonna snap-rakenduste kĂ€ivitamiseks, samas kui systemd-tmpfiles viib automaatset ajutiste failide ja kataloogide puhastamist. Vaikimisi on systemd-tmpfiles seadistatud kustutama kĂ”ik vanad failid ja kataloogid kaustas /tmp, mida vĂ”ib rĂŒndaja kasutada katalogi /tmp/.snap asendamiseks vahetult pĂ€rast selle kustutamist systemd-tmpfiles'i utiliidi poolt, kuid enne uuesti loomist snap-confine'i kĂ€suga.
RĂŒnnak seisneb aja vĂ”tmas ajutiste failide puhastamise protsessi kĂ€ivitamiseks, katalooge /tmp/.snap asendades pĂ€rast nende kustutamist ja paigutades muudetud koopiaid failidest /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. RĂŒndajal vĂ”ib kuluda mitu pĂ€eva oodata systemd-tmpfiles'i kĂ€ivitamist, kuna Ubuntu 24.04-s kĂ€ivitub puhastamise protsess iga 10 pĂ€eva tagant ning uuemates versioonides iga 30 pĂ€eva tagant. PĂ€rast katalooge asendamist saavutab rĂŒndaja uue sandbox-keskkonna initsialiseerimise snap-confine'i abil.
Kui sandbox-keskkonna sisu luuakse ajutisse katalooge /tmp/.snap, ootab rĂŒndaja vajalikku hetke ja nimetab /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange ĂŒmber /tmp/.snap/usr/lib/x86_64-linux-gnu, asendades seega teegid ja tagades nende bind-monteerimise root'i Ă”igustega. Nii saab rĂŒndaja kontrolli jagatud teekide ja ld.so laaduri ĂŒle, mis kĂ€ivitatakse snap-sandboxis, ning saab saavutada kĂ€su tĂ€itmise sageli koodiga root'i Ă”igustega, kĂ€ivitades igasuguse suid-programmi, mille puhul kasutatakse dĂŒnaamilist sidumist.
Juuri root-oikeuksilla sandbox-ympÀristössÀ, joka on eristetty AppArmorilla ja seccomp-perustaisella systeemikutsusuodattimella, hyökkÀÀjÀ voi kopioida /bin/bash hakemistoon /var/snap/$SNAP/common/ ja asettaa sille oikeudet "04755" (suid root). Vaikka oikeudet on muutettu sandbox-ympÀristössÀ, tiedosto, jonka oikeuksia on muutettu, on saatavilla myös pÀÀjÀrjestelmÀssÀ, joten tÀydellisten root-oikeuksien saamiseksi riittÀÀ, ettÀ kÀynnistÀÀ /var/snap//common/bash tavallisena ei-privilegioituna kÀyttÀjÀnÀ normaalista jÀrjestelmÀympÀristöstÀ.
Samaan aikaan paljastui haavoittuvuus uutils coreutils -työkalupaketissa (Rust Coreutils), joka on GNU Coreutils -paketin vastine, joka on kirjoitettu Rust-kielellÀ. Haavoittuvuus mahdollistaa ei-privilegioidun kÀyttÀjÀn saamisen root-oikeuksiin jÀrjestelmÀssÀ. Ongelma paljastui Ubuntu 25.10 -version muutosten tarkastelun aikana ja se korjattiin kiertotien kautta ennen Ubuntu 25.10 -version julkaisua toimittamalla /usr/bin/gnurm uutils rm:n sijaan. Uutils-paketissa ongelma oli korjattu uutils coreutils 0.3.0 -julkaisussa, ilman viittausta haavoittuvuuden poistamiseen muutosten listalla (oli mainittu, ettÀ rm:ssÀ, du:ssa, chmodissa ja chgrp:ssÀ on toteutettu turvallinen polkujen kiertomenetelmÀ).
Ongelma johtuu kilpailutilanteesta rm-työkalussa, joka mahdollistaa paikallisen kÀyttÀjÀn korvata hakemiston sisÀltö symbolisella linkillÀ rm-prosessin poistaessa normaaleja kÀyttÀjÀn tiedostoja root-oikeuksilla. Muun muassa haavoittuvuutta voidaan kÀyttÀÀ pÀivittÀisessÀ ajossa cron-skriptistÀ /etc/cron.daily/apport, joka ajetaan root-oikeuksilla ja poistaa rekursiivisesti /var/crash-hakemiston sisÀllön, johon kaikilla kÀyttÀjillÀ on kirjoitusoikeus.
Kun hakemistoja poistetaan rekursiivisesti, rm-työkalu tarkistaa aluksi kaikki hakemistot ja poistaa sitten ne jÀrjestyksessÀ kÀÀnteisesti, kutsuen rmdir()-toimintoa. Jos vanhemman hakemiston korvaaminen symbolisella linkillÀ saavutetaan heti tarkistuksen jÀlkeen mutta ennen alihakemistojen tarkistusta, toimenpide johtaa hakemiston poistamiseen, johon symbolinen linkki osoittaa. NÀin voidaan saavuttaa ei ainoastaan minkÀÀn tiedoston poistaminen jÀrjestelmÀssÀ, vaan myös oikeuksien nostaminen poistamalla hakemisto /tmp/snap-private-tmp/$SNAP/tmp/.snap, mikÀ mahdollistaa sandbox-ympÀristön sisÀllön vaihtamisen (root-oikeuksien saantimenetelmÀ on samanlainen kuin ensimmÀisessÀ haavoittuvuudessa).
Allikas: opennet.ru
