Ranjivost u Dockeru koja vam omogućava da pobjegnete iz kontejnera

U kompletu alata za upravljanje izolovanim Linux Docker kontejnerima identifikovan ranjivost (CVE-2018-15664), koji vam, pod određenim skupom okolnosti, omogućava pristup okruženju domaćina iz kontejnera ako imate mogućnost da pokrenete svoje slike na sistemu ili sa pristupom pokrenutom kontejneru. Problem se pojavljuje u svim verzijama Docker-a i ostaje neriješen (predložen, ali još uvijek nije prihvaćen, patch, koji implementira suspenziju kontejnera tokom izvođenja operacija sa FS).

Ranjivost omogućava da se datoteke ekstrahuju iz kontejnera u proizvoljni dio sistema datoteka glavnog sistema prilikom izvršavanja naredbe "docker cp". Ekstrakcija fajla se vrši sa root pravima, što omogućava čitanje ili pisanje bilo koje datoteke u okruženju domaćina, što je dovoljno da se dobije kontrola nad host sistemom (na primer, možete prepisati /etc/shadow).

Napad se može izvesti samo kada administrator izvrši naredbu “docker cp” za kopiranje datoteka u ili iz kontejnera. Dakle, napadač mora nekako uvjeriti Docker administratora da je potrebno izvršiti ovu operaciju i predvidjeti putanju koja će se koristiti prilikom kopiranja. S druge strane, napad se može izvesti, na primjer, kada usluge u oblaku pružaju alate za kopiranje konfiguracijskih datoteka u kontejner, izgrađen pomoću naredbe “docker cp”.

Problem je uzrokovan nedostatkom u primjeni funkcije FollowSymlinkInScope, koji izračunava apsolutnu putanju u glavnom sistemu datoteka na osnovu relativnog puta, uzimajući u obzir položaj kontejnera. Prilikom izvršavanja naredbe "docker cp", kratkoročno trkačko stanje, u kojem je putanja već potvrđena, ali operacija još nije izvedena. Pošto se kopiranje vrši u kontekstu glavnog sistema datoteka glavnog sistema, u određenom vremenskom periodu možete uspjeti zamijeniti vezu drugom putanjom i pokrenuti kopiranje podataka na proizvoljnu lokaciju u sistemu datoteka izvan kontejner.

Pošto je vremenski okvir za nastanak stanja trke veoma ograničen u pripremljenom prototip eksploatacije Prilikom izvođenja operacija kopiranja iz kontejnera bilo je moguće postići uspješan napad u manje od 1% slučajeva cikličnom zamjenom simboličke veze na putanji korištenoj u operaciji kopiranja (uspješan napad je izveden nakon otprilike 10 sekundi pokušaja za kontinuirano kopiranje datoteke u petlji pomoću naredbe “docker cp”).

Izvođenjem operacije kopiranja u kontejner, možete postići ponovljivi napad prepisivanja datoteke na host sistem u samo nekoliko iteracija. Mogućnost napada je zbog činjenice da se prilikom kopiranja u kontejner koristi koncept "chrootarchive", prema kojem proces archive.go izvlači arhivu ne u chroot korijena spremnika, već u chroot korijena spremnika. roditeljski direktorij ciljne putanje, koju kontrolira napadač, i ne zaustavlja izvršavanje kontejnera (chroot se koristi kao znak za iskorištavanje uvjeta utrke).

izvor: opennet.ru

Dodajte komentar