Turvaauk cgroups v1, mis võimaldab pääseda välja isoleeritud konteinerist

Rohkem teavet haavatavuse (CVE-2022-0492) kohta Linuxi tuuma cgroups v1 ressursside piirangu rakenduses, mida saab kasutada isoleeritud konteineritest väljumiseks. Probleem ilmus alates Linuxi tuumast 2.6.24 ja on lahendatud tuuma versioonides 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 ja 4.9.301. Pakettide värskenduste ehk uuenduste avaldamist saab jälgida järgmistel lehtedel: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Haavatavus on põhjustatud loogilisest veast release_agent failihalduris, mille tõttu ei toimunud uygun kontrollide teostamist täielike õigustega halduri käivitamisel. Fail release_agent kasutatakse programmi määramiseks, mida tuum käivitab protsessi lõpetamisel cgroupis. See programm käivitub root-kasutaja õigustes ja kõigi 'capabilities' juurteenustes. Oletati, et juurdepääs release_agent seadistusele on ainult administraatoritel, kuid tegelikult piirdusid kontrollid root-kasutaja juurdepääsu andmisega, mis ei välistanud seadistuste muutmist konteinerist või root-kasutaja poolt ilma administratiivsete õigusteta (CAP_SYS_ADMIN).

Varem ei oleks selliseid funktsioone peetud haavatavusteks, kuid olukord on muutunud, kuna kasutaja identifikaatorite nimed (user namespaces) võimaldavad luua konteinerites eraldi root-kasutajaid, mis ei ole seotud põhikeskkonna root-kasutajaga. Seetõttu piisab rünnakuks, kui konteineris, millel on oma root-kasutaja eraldi identifikaatorite ruumis, ühendada oma release_agent'i töötlija, mis täidetakse protsessi lõpetamise järel põhikeskkonna täielike õigustega.

Mugavalt on cgroupfs konteineris monteeritud ainult lugemisrežiimis, kuid pole probleemi monteerida see pseudofailisüsteem kirjutamisrežiimis, kui on olemas CAP_SYS_ADMIN õigused või luua kaudu süsteemikõnes unshare sisemine konteiner koos eraldi kasutaja nimedega, kus loodud konteineri jaoks on saadaval CAP_SYS_ADMIN õigused.

Turvaauk cgroups v1, mis võimaldab pääseda välja isoleeritud konteinerist

Rünnaku tegemiseks peavad olema sisemistest konteineritest root-õigused või tuleb konteinerit käivitada ilma no_new_privs-liputa, mis ei luba täiendavate privileegide saamist. Süsteemis peab olema lubatud user namespaces tugi (kubi on vaikimisi lubatud Ubuntu ja Fedora puhul, kuid mitte aktiveeritud Debianis ja RHEL-is) ning juurdepääs root cgroup v1-le (näiteks Docker käivitab konteinerid juurese GM cgroupis). Rünnak on võimalik ka CAP_SYS_ADMIN privileegide olemasolul, juhul ei ole user namespaces ja juurdepääs juurehierarhiaga cgroup v1 vajalik.

Lisaks isoleeritud konteinerist väljumisele võimaldab haavatavus ka protsessidel, mis on käivitatud root kasutaja poolt ilma „võimeteta“ või mis tahes kasutajal, kellel on CAP_DAC_OVERRIDE õigused (rünnaku teostamiseks on vajalik juurdepääs failile /sys/fs/cgroup/*/release_agent, mis kuulub rootile), saada juurdepääs kõigile süsteemi „võimetele“.

On märgitud, et haavatavust ei saa ära kasutada, kui on kasutusel kaitsemehhanismid Seccomp, AppArmor või SELinux, et konteinerite täiendav isoleerimine, kuna Seccomp blokeerib juurdepääsu süsteemi kutsumisele unshare(), AppArmor ja SELinux ei luba cgroupfs-i kirjutusrežiimis mountimist.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster