Edukiontzi isolatu batetik ihes egiteko aukera ematen duen cgroups v1-en ahultasuna

Kerneleko cgroups v1 baliabideak mugatzeko mekanismoaren inplementazioan dagoen ahultasun baten (CVE-2022-0492) xehetasunak argitaratu dira. Linux, edukiontzi isolatuetatik ihes egiteko erabil daitekeena. Arazoa kerneletik hasita agertzen da. Linux 2.6.24 bertsioan eta 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 eta 4.9.301 kernel bertsioetan konpondu da. Paketeen eguneratzeen argitalpena banaketetan orrialde hauetan jarrai dezakezu: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Ahultasuna release_agent fitxategiaren kudeatzailean dagoen errore logiko batek eragiten du, eta horrek egiaztapen egokiak eragotzi zituen kudeatzailea pribilegio guztiekin exekutatzean. Release_agent fitxategia erabiltzen da cgroup bateko prozesu bat amaitzen denean kernelak exekutatuko duen programa bat definitzeko. Programa hau root pribilegioekin eta root izen-espazioko gaitasun guztiekin exekutatzen da. Release_agent konfiguraziorako sarbidea administratzaileari mugatuta egoteko pentsatuta zegoen, baina errealitatean, egiaztapenak root erabiltzaileari sarbidea ematera mugatu ziren, eta horrek ez zuen eragotzi konfigurazioa edukiontziaren barrutik edo administrazio-pribilegiorik gabeko root erabiltzaile batek (CAP_SYS_ADMIN) aldatzea.

Aurretik, funtzio hau ez zen ahultasuntzat hartuko, baina egoera aldatu egin zen erabiltzaile-izen-espazioen etorrerarekin, eta horiek ingurune nagusiko root erabiltzailearekin gainjartzen ez diren edukiontzietan root erabiltzaile bereiziak sortzea ahalbidetzen dute. Horrenbestez, eraso bat egiteko, erabiltzaile-izen-espazio bereizi batean bere root erabiltzailea duen edukiontzi batek bere release_agent kudeatzailea erantsi besterik ez du egin behar. Prozesua amaitutakoan, kudeatzailea ingurune nagusiaren pribilegio guztiekin exekutatuko da.

Berez, cgroupfs edukiontzi batean irakurtzeko soilik moduan muntatzen da, baina ez dago arazorik pseudo-fs hau idazteko moduan berriro muntatzeko CAP_SYS_ADMIN eskubideak badituzu edo unshare sistema-deia erabiliz erabiltzaile-izen-espazio bereizi bat duen edukiontzi txertatu bat sortuz, non CAP_SYS_ADMIN eskubideak eskuragarri dauden sortutako edukiontzirako.

Edukiontzi isolatu batetik ihes egiteko aukera ematen duen cgroups v1-en ahultasuna

Erasoa root pribilegioekin egin daiteke edukiontzi isolatu batean edo no_new_privs banderarik gabeko edukiontzi bat exekutatzen denean, eta horrek pribilegio gehigarriak ematea eragozten du. Erabiltzaile-izen-espazioak gaituta egon behar dira sisteman (lehenespenez gaituta Ubuntu eta Fedora, baina ez da aktibatuta hemen Debian eta RHEL) eta root cgroup v1-erako sarbidea (adibidez, Docker-ek edukiontziak exekutatzen ditu root RDMA cgroup-ean). Erasoa CAP_SYS_ADMIN pribilegioekin ere posible da, eta kasu horretan ez da beharrezkoa erabiltzaile-izen-espazioaren euskarria eta root cgroup v1 hierarkiarako sarbidea.

Edukiontzi isolatu batetik ihes egiteaz gain, ahultasunak root erabiltzaile batek, gaitasunik gabekoak, edo CAP_DAC_OVERRIDE pribilegioak dituen edozein erabiltzailek (erasoak root-aren jabetzakoa den /sys/fs/cgroup/*/release_agent fitxategirako sarbidea behar du) abiarazitako prozesuei sistemaren gaitasun guztietarako sarbidea ere ematen die.

Adierazi da ahultasuna ezin dela ustiatu Seccomp, AppArmor edo SE babes-mekanismoak erabiltzean.Linux edukiontzien isolamendu gehigarrirako, Seccomp-ek unshare() sistema-deiaren deia blokeatzen baitu, eta AppArmor eta SE-kLinux Ez utzi cgroupfs idazketa moduan muntatzen.

Iturria: opennet.ru

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster