U kompletu alata za upravljanje izolovanim Linux Docker kontejnerima ranjivost (), 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, , 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 , 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 , 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 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
