Ranljivost v cgroups v1, ki omogoča pobeg iz izoliranega vsebnika

Razkrite so bile podrobnosti o ranljivosti (CVE-2022-0492) pri izvajanju mehanizma za omejevanje virov cgroups v1 v jedru Linuxa, ki se lahko uporabi za izogibanje izoliranim vsebnikom. Težava je prisotna od jedra Linuxa 2.6.24 in je bila odpravljena v izdajah jedra 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 in 4.9.301. Objave posodobitev paketov v distribucijah lahko spremljate na teh straneh: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Ranljivost je posledica logične napake v obdelovalniku datoteke release_agent, ki ne izvede ustreznih preverjanj pri zagonu obdelovalnika s polnimi pravicami. Datoteka release_agent se uporablja za definiranje programa, ki naj ga izvede jedro, ko se proces v skupini c konča. Ta program deluje kot root in z vsemi "zmožnostmi" v korenskem imenskem prostoru. Predpostavljeno je bilo, da ima samo skrbnik dostop do nastavitve release_agent, vendar so bila v resnici preverjanja omejena na odobritev dostopa korenskemu uporabniku, kar ni izključevalo spremembe nastavitve iz vsebnika ali s strani korenskega uporabnika brez skrbniških pravic (CAP_SYS_ADMIN ).

Prej taka funkcija ne bi bila zaznana kot ranljivost, vendar se je situacija spremenila s pojavom uporabniških imenskih prostorov (uporabniških imenskih prostorov), ki omogočajo ustvarjanje ločenih korenskih uporabnikov v vsebnikih, ki se ne prekrivajo s korenskim uporabnikom glavno okolje. Skladno s tem je za napad dovolj, da povežete svojega obdelovalca release_agent v vsebniku, ki ima svojega korenskega uporabnika v ločenem prostoru ID-ja uporabnika, ki se bo po zaključku postopka izvedel s polnimi privilegiji glavnega okolja.

Privzeto je cgroupfs nameščen v vsebnik v načinu samo za branje, vendar ni težav pri ponovni namestitvi tega psevdofs v pisalnem načinu, če imate pravice CAP_SYS_ADMIN ali z ustvarjanjem ugnezdenega vsebnika z ločenim uporabniškim imenskim prostorom s sistemskim klicem unshare, v katerem Za ustvarjeni vsebnik so na voljo pravice CAP_SYS_ADMIN.

Ranljivost v cgroups v1, ki omogoča pobeg iz izoliranega vsebnika

Napad se lahko izvede, če imate root privilegije v izoliranem vsebniku ali ko izvajate vsebnik brez zastavice no_new_privs, ki prepoveduje pridobivanje dodatnih privilegijev. Sistem mora imeti omogočeno podporo za uporabniške imenske prostore (privzeto omogočeno v Ubuntuju in Fedori, vendar ne aktivirano v Debianu in RHEL) in imeti dostop do korenske skupine cgroup v1 (na primer, Docker izvaja vsebnike v korenski skupini cgroup RDMA). Napad je možen tudi, če imate privilegije CAP_SYS_ADMIN, v tem primeru podpora za uporabniške imenske prostore in dostop do korenske hierarhije cgroup v1 nista potrebna.

Poleg pobega iz izoliranega vsebnika ranljivost omogoča tudi procese, ki jih zažene root uporabnik brez "zmogljivosti" ali kateri koli uporabnik s pravicami CAP_DAC_OVERRIDE (napad zahteva dostop do datoteke /sys/fs/cgroup/*/release_agent, ki je v lasti root), da pridobite dostop do vseh sistemskih »zmožnosti«.

Opozoriti je treba, da ranljivosti ni mogoče izkoristiti pri uporabi zaščitnih mehanizmov Seccomp, AppArmor ali SELinux za dodatno izolacijo vsebnikov, saj Seccomp blokira dostop do sistemskega klica unshare(), AppArmor in SELinux pa ne dovoljujeta namestitve cgroupfs v načinu pisanja.

Vir: opennet.ru

Dodaj komentar