Janar detajet e një vulnerabiliteti (CVE-2022-0492) në realizimin e mekanizmit të kufizimit të burimeve cgroups v1 në bërthamën Linux, i cili mund të përdoret për të dalë nga kontejnerët e izoluar. Problemi paraqitet duke filluar nga bërthama Linux 2.6.24 dhe është zgjidhur në lëshimet e bërthamës 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 dhe 4.9.301. Mund të ndiqni publikimin e përditësimeve të paketave në distribuimet e mëposhtme: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.
Vulnerabiliteti shkaktohet nga njĂ« gabim logjik nĂ« menaxherin e skedarĂ«ve release_agent, i cili nuk ekzekutonte kontrollin e duhur gjatĂ« ekzekutimit tĂ« menaxherit me çdo tĂ« drejtĂ«. Skedari release_agent pĂ«rdoret pĂ«r tĂ« pĂ«rcaktuar programin qĂ« ekzekutohet nga bĂ«rthama kur pĂ«rfundon njĂ« proces nĂ« cgroup. Ky program ekzekutohet me tĂ« drejta root dhe me tĂ« gjitha "capabilities" nĂ« hapĂ«sirĂ«n e emrave rrĂ«njĂ«. ĂshtĂ« parashikuar qĂ« vetĂ«m administratori tĂ« ketĂ« qasje nĂ« konfigurimin e release_agent, por nĂ« tĂ« vĂ«rtetĂ« kontrollet ishin tĂ« kufizuara nĂ« dhĂ«nien e aksesit pĂ«r pĂ«rdoruesin root, gjĂ« qĂ« nuk e pĂ«rjashtonte ndĂ«rrimin e konfigurimit nga kontenieri ose nga pĂ«rdoruesi root pa tĂ« drejta administratori (CAP_SYS_ADMIN).
Më parë, një veçori e tillë nuk do të perceptohej si vulnerabilitet, por situata ndryshoi me shfaqjen e hapësirave të emrave për identifikimin e përdoruesve (user namespaces), të cilat lejojnë krijimin e përdoruesve root të veçantë në kontejnerë, që nuk kanë lidhje me përdoruesin root të mjedisit kryesor. Prandaj, për të sulmuar, mjafton që në kontejnerin me përdoruesin e vet root në një hapësirë identifikimi të përdoruesve të lidhesh skedarin tënd release_agent, i cili pas përfundimit të procesit do të ekzekutohet me privilegje të plota të mjedisit kryesor.
Për default, cgroupfs montohet në kontejner në mënyrë të lexueshme vetëm, por nuk ka probleme për ta rimontuar këtë pseudo-fs në mënyrë shkrimi nëse ka të drejtat CAP_SYS_ADMIN ose përmes krijimit të një kontejneri të brendshëm me thirrjen sistemore unshare me një hapësirë user namespace të veçantë, në të cilën të drejtat CAP_SYS_ADMIN janë të disponueshme për kontejnerin e krijuar.

Sulmi mund të kryhet nëse ka të drejtat root në një kontejner të izoluar ose nëse kontejneri është nisur pa flagun no_new_privs, i cili ndalon marrjen e privilegjeve shtesë. Sistemi duhet të ketë mbështetje për hapësirat e emrave të përdoruesve (e cila është aktivizuar me default në Ubuntu dhe Fedora, por nuk është aktivizuar në Debian dhe RHEL) dhe të ketë qasje në cgroup-in rrënjë v1 (për shembull, Docker nis kontejnerët në cgroup-in rrënjë RDMA). Sulmi gjithashtu mund të ndodhë nëse ka privilegje CAP_SYS_ADMIN, në këtë rast mbështetja për hapësirat e emrave të përdoruesve dhe qasja në hierarkinë rrënjë të cgroup v1 nuk kërkohet.
Përveç daljes nga kontejneri i izoluar, vulnerabiliteti gjithashtu lejon që proceset e nisura nga përdoruesi root pa "capabilities" ose çdo përdorues me të drejtat CAP_DAC_OVERRIDE (për sulmin kërkohet qasje në skedarin /sys/fs/cgroup/*/release_agent që i përket root) të kenë akses në të gjitha "capabilities" sistemore.
Vërehet se vulnerabiliteti nuk mund të shfrytëzohet kur mekanizmat e mbrojtjes Seccomp, AppArmor ose SELinux përdoren për izolimin e kontejnerëve, pasi Seccomp bllokon thirrjen e thirrjes sistemore unshare(), kurse AppArmor dhe SELinux nuk lejojnë montimin e cgroupfs në mënyrë shkrimi.
Burimi: opennet.ru
