Lokalne korijenske ranjivosti u alatu za upravljanje paketima Snap

Qualys je identificirao dvije ranjivosti (CVE-2021-44731, CVE-2021-44730) u uslužnom programu snap-confine, isporučenom sa SUID root oznakom i pozvanom od strane snapd procesa za stvaranje izvršnog okruženja za aplikacije isporučene u samostalnim paketima u snap formatu. Ranjivosti omogućuju lokalnom neprivilegiranom korisniku da izvrši kod s root privilegijama na sustavu. Problemi su riješeni u današnjem ažuriranju snapd paketa za Ubuntu 21.10, 20.04 i 18.04.

Prva ranjivost (CVE-2021-44730) dopušta napad putem manipulacije tvrdom vezom, ali zahtijeva onemogućavanje zaštite tvrde veze sustava (postavljanje sysctl fs.protected_hardlinks na 0). Problem je uzrokovan netočnom provjerom lokacije izvršnih datoteka pomoćnih programa snap-update-ns i snap-discard-ns koji se pokreću kao root. Put do ovih datoteka izračunat je u funkciji sc_open_snapd_tool() na temelju vlastite staze iz /proc/self/exe, što vam omogućuje stvaranje čvrste veze koju možete zatvoriti u svoj direktorij i postaviti vlastite verzije snap-a update-ns i snap- utilities u ovom direktoriju discard-ns. Nakon pokretanja preko tvrde veze, snap-confine s root pravima pokrenut će datoteke snap-update-ns i snap-discard-ns iz trenutnog direktorija, koje je zamijenio napadač.

Druga je ranjivost uzrokovana stanjem utrke i može se iskoristiti u zadanoj konfiguraciji Ubuntu Desktopa. Kako bi eksploatacija uspješno radila u Ubuntu poslužitelju, prilikom instalacije morate odabrati jedan od paketa iz odjeljka “Istaknuti snimci poslužitelja”. Stanje utrke vidljivo je u funkciji setup_private_mount() pozvanoj tijekom pripreme prostora imena točke montiranja za snap paket. Ova funkcija stvara privremeni direktorij “/tmp/snap.$SNAP_NAME/tmp” ili koristi postojeći za povezivanje direktorija za montiranje snap paketa u njega.

Budući da je naziv privremenog imenika predvidljiv, napadač može zamijeniti njegov sadržaj simboličkom vezom nakon provjere vlasnika, ali prije pozivanja poziva sustava za montiranje. Na primjer, možete stvoriti simboličku vezu "/tmp/snap.lxd/tmp" u direktoriju /tmp/snap.lxd koja pokazuje na proizvoljan direktorij, a poziv za mount() slijedit će simboličku vezu i montirati direktorij u snap imenski prostor. Na sličan način možete montirati svoj sadržaj u /var/lib i, zamjenom /var/lib/snapd/mount/snap.snap-store.user-fstab, organizirati montiranje vašeg /etc direktorija u imenskom prostoru snap paket za organiziranje učitavanja vaše knjižnice s root pravima zamjenom /etc/ld.so.preload.

Napominje se da se stvaranje eksploatacije pokazalo netrivijalnim zadatkom, budući da je uslužni program snap-confine napisan u Go koristeći sigurne tehnike programiranja, ima zaštitu temeljenu na AppArmor profilima, filtrira pozive sustava na temelju mehanizma seccomp i koristi prostor imena montiranja za izolaciju. Međutim, istraživači su uspjeli pripremiti radni exploit za dobivanje root prava na sustav. Eksploatacijski kod bit će objavljen za nekoliko tjedana nakon što korisnici instaliraju dostavljena ažuriranja.

Izvor: opennet.ru

Dodajte komentar