Varnarleysi í cgroups v1 sem leyfir flótta úr einangruðu íláti

Upplýsingar um varnarleysi (CVE-2022-0492) í innleiðingu cgroups v1 auðlindatakmörkunarkerfisins í Linux kjarnanum, sem hægt er að nota til að komast undan einangruðum gámum, hafa verið birtar. Vandamálið hefur verið til staðar síðan Linux kjarna 2.6.24 og var lagað í kjarnaútgáfum 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 og 4.9.301. Þú getur fylgst með útgáfu pakkauppfærslna í dreifingum á þessum síðum: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Varnarleysið stafar af rökvillu í release_agent skráarforritinu sem tekst ekki að framkvæma viðeigandi athuganir þegar stjórnandinn er keyrður með fullum réttindum. Release_agent skráin er notuð til að skilgreina forritið sem á að keyra af kjarnanum þegar ferli í cgroup er hætt. Þetta forrit keyrir sem rót og með öllum „getum“ í rótarnafnarýminu. Gert var ráð fyrir að aðeins stjórnandinn hefði aðgang að release_agent stillingunni, en í raun takmarkaðist athuganirnar við að veita rótnotandanum aðgang, sem útilokaði ekki að stillingunni væri breytt úr gámnum eða af rótnotanda án stjórnandaréttinda (CAP_SYS_ADMIN ).

Áður hefði slíkur eiginleiki ekki verið álitinn sem varnarleysi, en ástandið hefur breyst með tilkomu notendanafnarýma (notandanafnarýma), sem gera þér kleift að búa til aðskilda rótnotendur í gámum sem skarast ekki við rótnotanda aðalumhverfi. Í samræmi við það, fyrir árás, er nóg að tengja release_agent meðhöndlun þinn í gám sem hefur sinn eigin rót notanda í sérstöku notendaauðkennisrými, sem, eftir að ferlinu er lokið, verður keyrt með fullum réttindum aðalumhverfisins.

Sjálfgefið er að cgroupfs er sett upp í gám í skrifvarinn ham, en það er ekkert vandamál að setja þessa gervimynd aftur upp í skrifham ef þú ert með CAP_SYS_ADMIN réttindi eða með því að búa til hreiður ílát með sérstakt notendanafnrými með því að nota unshare kerfiskallið, þar sem CAP_SYS_ADMIN réttindi eru tiltæk fyrir búið til ílát.

Varnarleysi í cgroups v1 sem leyfir flótta úr einangruðu íláti

Árásina er hægt að framkvæma ef þú hefur rótarréttindi í einangruðum íláti eða þegar þú keyrir ílát án no_new_privs fánans, sem bannar að fá viðbótarréttindi. Kerfið verður að hafa stuðning fyrir notendanafnarými virkt (sjálfgefið virkt í Ubuntu og Fedora, en ekki virkt í Debian og RHEL) og hafa aðgang að rót cgroup v1 (td Docker keyrir ílát í rót RDMA cgroup). Árásin er einnig möguleg ef þú hefur CAP_SYS_ADMIN réttindi, en þá er ekki krafist stuðnings við notendanafnarými og aðgang að cgroup v1 rót stigveldinu.

Auk þess að sleppa úr einangruðu íláti, leyfir varnarleysið einnig ferlum sem rótnotandi hefur sett af stað án "getu" eða notanda með CAP_DAC_OVERRIDE réttindi (árásin krefst aðgangs að skránni /sys/fs/cgroup/*/release_agent, sem er í eigu rótar) til að fá aðgang að öllum kerfisbundnum „getu“.

Það er tekið fram að ekki er hægt að nýta varnarleysið þegar Seccomp, AppArmor eða SELinux verndarkerfin eru notuð til viðbótareinangrunar á gámum, þar sem Seccomp lokar fyrir aðgang að unshare() kerfiskallinu og AppArmor og SELinux leyfa ekki að setja upp cgroupfs í skrifham.

Heimild: opennet.ru

Bæta við athugasemd