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