Snapdi ja Rusti Coreutilsi haavatavused lubavad Ubuntul juurjuurdepääsu

Qualys on tuvastanud Ubuntu snap-confine'i ja systemd-tmpfiles'i paketis haavatavuse (CVE-2026-3888), mis võimaldab privilegeerimata kasutajal saada süsteemile juurjuurdepääsu. Probleem ilmneb Ubuntu vaikekonfiguratsioonis alates versioonist 24.04. Ubuntu versioonides 16.04-22.04 saab seda haavatavust ära kasutada mitte-vaikimisi konfiguratsioonides, mis jäljendavad distributsiooni uuemate versioonide käitumist. Ubuntu parandus on saadaval eilses snapd paketi värskenduses. Probleem parandati snapd värskenduses 2.75.

See haavatavus tekib snap-confine'i ja systemd-tmpfiles'i utiliitide valest interaktsioonist, kusjuures mõlemad töötavad kõrgendatud õigustega. Snap-confine loob liivakastikeskkonna snap-rakenduse käitamiseks, samas kui systemd-tmpfiles puhastab automaatselt ajutised failid ja kataloogid. Vaikimisi on systemd-tmpfiles konfigureeritud kustutama kõik vanad failid ja kataloogid /tmp kataloogis, mida ründaja saab kasutada kataloogi /tmp/.snap asendamiseks pärast seda, kui see on systemd-tmpfiles'i poolt kustutatud, kuid enne, kui snap-confine on selle uuesti loonud.

Rünnak seisneb ajutiste failide puhastusprotsessi käivitumise ootamises, kataloogi /tmp/.snap asendamises pärast kustutamist ja teekide muudetud koopia paigutamises kausta /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. Ründajal võib systemd-tmpfiles käivitumist oodata mitu päeva, kuna puhastusprotsess töötab Ubuntu 24.04-s iga 10 päeva järel ja uuemates versioonides iga 30 päeva järel. Pärast kataloogi asendamist initsialiseerib ründaja uue liivakastikeskkonna, kasutades snap-confine'i.

Liivakasti keskkonna kasuliku koormuse loomisel ajutises kataloogis /tmp/.snap ootab ründaja sobivat hetke ja nimetab /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange ümber /tmp/.snap/usr/lib/x86_64-linux-gnu-ks, asendades seeläbi teegid ja tagades nende sidumise juurõigustega. See annab ründajale kontrolli jagatud teekide ja snap-liivakasti keskkonnas töötava ld.so laaduri üle ning võimaldab tal käivitada suvalist koodi juurõigustega, käivitades mis tahes dünaamilist linkimist kasutava suid-programmi.

AppArmori ja seccomp-põhise süsteemikõnede filtri abil isoleeritud liivakastikeskkonnas saab ründaja kopeerida /bin/bash faili /var/snap/$SNAP/common/ kataloogi ja määrata selle õigused väärtusele "04755" (suid root). Isegi kui õigusi muudetakse liivakastikeskkonnas, on muudetud õigustega fail ligipääsetav ka hostsüsteemis. Seega täieliku juurjuurdepääsu saamiseks käivitage lihtsalt /var/snap/<snap_paketi_nimi>/common/bash tavalise, privilegeerimata kasutajana vaikesüsteemikeskkonnas.

Samuti avastati haavatavus tööriistakomplektis uutils coreutils (Rust Coreutils), mis on Rusti-põhine vaste GNU Coreutils paketile. See haavatavus võimaldab privilegeerimata kasutajal saada root õigused. Probleem avastati Ubuntu 25.10 muudatuste logis ja see lahendati enne Ubuntu 25.10 väljalaset ajutise lahendusega, levitades uutils rm asemel /usr/bin/gnurm. Probleem parandati paketi uutils coreutils 0.3.0 versioonis, ilma et haavatavuse leevendamist muudatuste logis oleks mainitud (märgiti, et rm, du, chmod ja chgrp rakendasid turvalise tee läbimise meetodit).

Probleemi põhjustab utiliidi "rm" võidujooks, mis võimaldab kohalikul kasutajal asendada kataloogi sisu sümboolse lingiga, kui kustutatakse kasutaja kontrolli all olev fail protsessi "rm" abil, millel on juurõigused. Muuhulgas saab haavatavust ära kasutada, käivitades iga päev cronist skripti /etc/cron.daily/apport. See skript, mis käivitatakse juurõigustega, kustutab rekursiivselt kataloogi /var/crash sisu, millele on kirjutamisõigus kõigil süsteemi kasutajatel.

Kataloogide rekursiivsel kustutamisel skannib rm utiliit kõigepealt kõik kataloogid ja seejärel kustutab need järjestikku vastupidises järjekorras, kutsudes funktsiooni rmdir(). Kui ülemkataloog asendatakse kohe pärast selle kataloogi skannimist, kuid enne selle alamkataloogide skannimist, kustutatakse sümboolne lingiga kataloog, millele sümboolne link viitab. See võimaldab mitte ainult süsteemis mis tahes faili kustutada, vaid ka privileegide suurendamist, kustutades kataloogi /tmp/snap-private-tmp/$SNAP/tmp/.snap, et asendada snap-paketi liivakastikeskkonna sisu (juurõiguste saamise meetod sarnaneb esimese haavatavusega).

Allikas: opennet.ru

Lisa kommentaar