Avastatud on haavatavuse (CVE-2022-0492) ĂŒksikasjad, mis puudutab Linuxi tuuma cgroups v1 ressursipiirangumehhanismi rakendamist. See haavatavus vĂ”ib vĂ”imaldada isoleeritud konteineritest vĂ€ljuda. Probleem ilmneb alates Linuxi kernest 2.6.24 ning on kĂ”rvaldatud kerneliversioonides 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 vĂ€ljaandmist saab jĂ€lgida nendel lehtedel: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.
Haavatavus on pÔhjustatud loogilisest veast release_agent failide töötlemises, mille tÔttu ei teostatud nÔutavaid kontrolle, kui kÀivitati töötleja tÀielike volitustega. Faili release_agent kasutatakse programmi mÀÀramiseks, mida tuum kÀivitab protsessi lÔpetamisel cgrupis. See programm kÀivitatakse root'i Ôigustes ja kÔiki 'capabilities' juurruumis. Eeldati, et release_agent seadistusele pÀÀseb ligi ainult administraator, kuid tegelikkuses piirdusid kontrollid root'i kasutaja juurdepÀÀsu vÔimaldamisega, mis ei vÀlistanud seadistuse muutmist konteinerist vÔi root'i kasutajalt ilma administraatori Ôigusteta (CAP_SYS_ADMIN).
Varem ei oleks sarnast omadust peetud haavatavuseks, kuid olukord muutus koos kasutaja nimede (user namespaces) tekkega, mis vĂ”imaldavad konteinerites luua eraldi root kasutajaid, mis ei kattuks pĂ”hikeskkonna root kasutajaga. Seega piisab, kui konteineris, millel on oma root kasutaja eraldi kasutaja nimede ruumis, ĂŒhendada oma release_agent töötleja, mis kĂ€ivitatakse pĂ€rast protsessi lĂ”petamist pĂ”hikeskkonna tĂ€ielike Ă”igustega.
VaikesĂ€tetena on cgroupfs konteineris montaaĆŸireĆŸiimis ainult lugemiseks, kuid ei esine probleeme seda pseudosĂŒsteemi kirjutusreĆŸiimisse remontimisel, kui on olemas Ă”igused CAP_SYS_ADMIN vĂ”i luues sĂŒsteemikĂ”nede unshare abil sissepandud konteineri koos eraldi kasutaja nimede ruumiga, kus loodud konteinerile on saadaval Ă”igused CAP_SYS_ADMIN.

RĂŒnnaku saab teha, kui on olemas root-kasutaja Ă”igused isoleeritud konteineris vĂ”i kui konteinerit kĂ€ivitatakse ilma no_new_privs liputa, mis keelab tĂ€iendavate privileegide saamise. SĂŒsteemis peab olema sisse lĂŒlitatud kasutaja nimede ruumide tugi (mis on vaikimisi lubatud Ubuntu ja Fedora puhul, kuid mitte aktiveeritud Debianis ja RHEL-is) ning juurdepÀÀs juurkergu cgroup v1-le (nĂ€iteks Docker kĂ€ivitab konteinerid juurse RDMA cgroupis). RĂŒnnak on samuti vĂ”imalik, kui on olemas CAP_SYS_ADMIN Ă”igused; sel juhul ei ole kasutaja nimede ruumide tugi ja juurdepÀÀs juhierarhiale cgroup v1 vajalik.
Lisaks isoleeritud konteinerist vĂ€ljumisele vĂ”imaldab haavatavus ka protsessidel, mida kĂ€ivitab root-kasutaja, ilma "capabilities"-ta, vĂ”i mis tahes kasutajal CAP_DAC_OVERRIDE Ă”igustega (rĂŒnnaku teostamiseks on vajalik juurdepÀÀs failile /sys/fs/cgroup/*/release_agent, mis kuulub root-kasutajale), saada juurdepÀÀs kĂ”igile sĂŒsteemi "capabilities"-dele.
On mĂ€rgatud, et haavatavust ei saa Ă€ra kasutada, kui kasutatakse Seccomp, AppArmor vĂ”i SELinux kaitsemehhanisme konteinerite tĂ€iendavaks isoleerimiseks, sest Seccomp blokeerib sĂŒsteemitĂ”ukele unshare() juurdepÀÀsu, ja AppArmor ja SELinux ei luba cgroupfs-i kirjutamismoodis monteerida.
Allikas: opennet.ru
