U alatu za pokretanje izoliranih kontejnera runc, koji se koristi u Dockeru i Kubernetesu, otkrivena je ranjivost CVE-2024-21626 koja omogućava pristup datotečnom sustavu domaćinskog okruženja iz izoliranog kontejnera. U toku napada, napadač može prepisati neke izvršne datoteke u domaćinskom okruženju i time ostvariti izvršenje svog koda izvan kontejnera. U runtime okruženjima crun i youki, koji koriste runc, kao i u LXC-u, problem se ne manifestira. Ranjivost je ispravljena u izdanju runc 1.1.12.
U slučaju korištenja alata Docker ili Kubernetes, napad se može izvršiti pripremom posebno oblikovane slike kontejnera, nakon čega se iz kontejnera može obratiti vanjskom datotečnom sustavu. U slučaju Dockera postoji mogućnost eksploatacije putem posebno oblikovanog Dockerfile-a. Ranjivost također može biti iskoristiva u slučaju pokretanja procesa unutar kontejnera naredbom 'runc exec' kroz vezivanje radnog direktorija na prostor imena domaćinskog okruženja.
Ranjivost je uzrokovana curenjem unutarnjih datotečnih deskriptora. Prije pokretanja koda unutar kontejnera, u runc-u se zatvaraju svi datotečni deskriptori uz pomoć zastavice O_CLOEXEC. Ipak, nakon naknadnog izvršenja funkcije setcwd() ostaje otvoren datotečni deskriptor koji ukazuje na radni direktorij i nastavlja biti dostupan nakon pokretanja kontejnera. Predloženo je nekoliko osnovnih scenarija napada na domaćinsko okruženje koristeći preostali datotečni deskriptor.
Na primjer, napadač može u slici kontejnera navesti parametar process.cwd koji ukazuje na 'proc/self/fd/7/', što će rezultirati vezivanjem radnog direktorija na proces pid1 unutar kontejnera, koji se nalazi u prostoru montiranja domaćinskog okruženja. Na taj način, u slici kontejnera može se postaviti pokretanje 'proc/self/fd/7/../../../bin/bash' i putem izvršenja shell skripte prepisati sadržaj 'proc/self/exe', koji se odnosi na domaćInski primjerak /bin/bash.
Druga vrsta napada omogućuje napadaču, koji je ograničen unutar kontejnera, pristup katalogu host okruženja, ako se u tom kontejneru pokreću privilegirani procesi pomoću naredbe „runc exec s opcijom „—cwd”. Napadač može promijeniti putanju pokretanog procesa na simboličku poveznicu koja upućuje na „/proc/self/fd/7/” i ostvariti pristup „/proc/$exec_pid/cwd” za pristup datotečnom sustavu na strani hosta. Napadač također može postići prepisivanje izvršnih datoteka na strani host okruženja, pokretanjem izvršne datoteke iz host okruženja („/proc/self/fd/7/../../../bin/bash”) s naknadnim prepisivanjem datoteke „/proc/$pid/exe”, koja se odnosi na pokrenutu datoteku.
Osim toga, u komponentama alata Docker otkriveno je još pet ranjivosti:
- CVE-2024-23651 — stanje utrke u paketu BuildKit, koji se koristi u Dockeru za pretvaranje izvornog koda u artefakte izgradnje. Ranjivost je uzrokovana korištenjem zajedničke točke montiranja s predmemorijom („—mount=type=cache,source=”) u paralelno izvršavanim fazama izgradnje, što omogućuje pristup datotekama u host okruženju iz kontejnera za izgradnju prilikom obrade posebno oblikovanog Dockerfilea. Ranjivost je ispravljena u BuildKit 0.12.5.
- CVE-2024-23652 — greška prilikom brisanja praznih datoteka kreiranih za točku montiranja prilikom korištenja opcije „—mount”, omogućuje brisanje datoteke izvan kontejnera prilikom obrade posebno oblikovanog Dockerfilea. Ranjivost je ispravljena u BuildKit 0.12.5.
- CVE-2024-23653 — greška u implementaciji API-a u BuildKitu omogućuje izvođenje kontejnera s povećanim privilegijama, bez obzira na stanje konfiguracije security.insecure. Ranjivost je ispravljena u BuildKit 0.12.5.
- CVE-2024-23650 — zlonamjerni klijent ili front-end BuildKita može uzrokovati slabljenje pozadinskog procesa BuildKita. Ranjivost je ispravljena u BuildKit 0.12.5.
- CVE-2024-24557 — mogućnost trovanja predmemorije u Mobyju, komponenti za izgradnju specijaliziranih sustava kontejnerske izolacije. Prilikom obrade posebno oblikovane slike kontejnera moguće je smjestiti podatke u predmemoriju koji se mogu koristiti u sljedećim fazama izgradnje. Ranjivost je ispravljena u Moby 25.0.2 i 24.0.9.
Izvor: opennet.ru
