Lokalne korijenske ranjivosti u Snap paketu alata za upravljanje

Qualys je identifikovao dve ranjivosti (CVE-2021-44731, CVE-2021-44730) u uslužnom programu snap-confine, koji se isporučuje sa SUID root zastavicom i poziva se snapd procesom da kreira izvršno okruženje za aplikacije koje se isporučuju u samostalnim paketima u snap formatu. Ranjivosti omogućavaju lokalnom neprivilegovanom korisniku da izvrši kod sa root privilegijama na sistemu. 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) dozvoljava napad putem manipulacije tvrdom vezom, ali zahtijeva onemogućavanje sistemske zaštite tvrdih veza (postavljanje sysctl fs.protected_hardlinks na 0). Problem je uzrokovan neispravnom 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 osnovu vlastite putanje iz /proc/self/exe, što vam omogućava da kreirate čvrstu vezu za ograničenje snap-a u vašem direktoriju i postavite vlastite verzije snap-a. update-ns i snap-utilities u ovom direktoriju discard-ns. Nakon pokretanja preko tvrdog linka, snap-confine sa root pravima će pokrenuti datoteke snap-update-ns i snap-discard-ns iz trenutnog direktorija, koje je zamenio napadač.

Druga ranjivost je uzrokovana stanjem utrke i može se iskoristiti u zadanoj Ubuntu Desktop konfiguraciji. Da bi eksploatacija uspješno funkcionisala u Ubuntu Serveru, morate odabrati jedan od paketa iz odjeljka “Istaknuti serverski snimci” prilikom instalacije. Uvjet utrke je očigledan u funkciji setup_private_mount() pozvanoj tokom pripreme imenskog prostora točke montiranja za paket snap. Ova funkcija kreira privremeni direktorij “/tmp/snap.$SNAP_NAME/tmp” ili koristi postojeći za povezivanje direktorija za pričvršćivanje paketa u njega.

Budući da je ime privremenog direktorija predvidljivo, napadač može zamijeniti njegov sadržaj simboličkom vezom nakon provjere vlasnika, ali prije pozivanja sistemskog poziva za montiranje. Na primjer, možete kreirati simboličku vezu "/tmp/snap.lxd/tmp" u direktoriju /tmp/snap.lxd koji ukazuje na proizvoljni direktorij, a poziv mount() pratit će simboličku vezu i montirati direktorij u snap namespace. 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 biblioteke s root pravima zamjenom /etc/ld.so.preload.

Napominje se da se ispostavilo da je kreiranje exploit-a netrivijalan zadatak, budući da je uslužni program snap-confine napisan u Go koristeći tehnike sigurnog programiranja, ima zaštitu zasnovanu na AppArmor profilima, filtrira sistemske pozive na osnovu mehanizma seccomp i koristi prostor imena mount za izolaciju. Međutim, istraživači su bili u mogućnosti da pripreme radni eksploat za dobijanje root prava na sistemu. Exploit kod će biti objavljen za nekoliko sedmica nakon što korisnici instaliraju dostavljena ažuriranja.

izvor: opennet.ru

Dodajte komentar