„Docker“ pažeidžiamumas, leidžiantis pabėgti iš konteinerio

Įrankių rinkinyje, skirtame izoliuotų „Linux Docker“ konteinerių valdymui nustatyta pažeidžiamumas (CVE-2018-15664), kuri tam tikromis aplinkybėmis leidžia pasiekti pagrindinę aplinką iš konteinerio, jei turite galimybę paleisti vaizdus sistemoje arba prieiga prie veikiančio konteinerio. Problema atsiranda visose Docker versijose ir lieka nepataisyta (pasiūlyta, bet dar nepriimta, pleistras, kuris įgyvendina konteinerio pakabą atliekant operacijas su FS).

Pažeidžiamumas leidžia ištraukti failus iš konteinerio į savavališką pagrindinės sistemos failų sistemos dalį, kai vykdoma komanda „docker cp“. Failų išskyrimas atliekamas su root teisėmis, kurios leidžia skaityti ar rašyti bet kokius failus pagrindinio kompiuterio aplinkoje, to pakanka norint valdyti pagrindinę sistemą (pavyzdžiui, galite perrašyti /etc/shadow).

Ataka gali būti vykdoma tik tada, kai administratorius vykdo komandą „docker cp“, kad nukopijuotų failus į konteinerį arba iš jo. Taigi, užpuolikas turi kažkaip įtikinti Docker administratorių, kad būtina atlikti šią operaciją ir numatyti kelią, naudojamą kopijuojant. Kita vertus, ataka gali būti įvykdyta, pavyzdžiui, kai debesies paslaugos teikia įrankius konfigūracijos failams kopijuoti į konteinerį, sukurtą naudojant komandą „docker cp“.

Problemą sukelia funkcijos taikymo trūkumas SekiteSymlinkInScope, kuris apskaičiuoja absoliutų kelią pagrindinėje failų sistemoje pagal santykinį kelią, atsižvelgiant į konteinerio vietą. Vykdant komandą „docker cp“, trumpalaikis lenktynių būklė, kuriame kelias jau patikrintas, bet operacija dar neatlikta. Kadangi kopijavimas atliekamas pagrindinės prieglobos sistemos failų sistemos kontekste, per tam tikrą laikotarpį galite pakeisti saitą kitu keliu ir inicijuoti duomenų kopijavimą į savavališką failų sistemos vietą už jos ribų. konteineris.

Kadangi laikas, per kurį įvyks lenktynių sąlygos, yra labai ribotas eksploatuoti prototipą Atliekant kopijavimo operacijas iš konteinerio, pavyko pasiekti sėkmingą ataką mažiau nei 1% atvejų, kai cikliškai pakeičiant simbolinę nuorodą kopijavimo operacijos kelyje (sėkminga ataka įvykdyta maždaug po 10 sekundžių bandymų). Norėdami nuolat kopijuoti failą cikle su komanda „docker cp“).

Atlikdami kopijavimo į konteinerį operaciją, galite pasiekti pakartojamą failų perrašymo ataką pagrindinei sistemai vos per kelias iteracijas. Atakos galimybė atsiranda dėl to, kad kopijuojant į konteinerį yra naudojama „chrootarchive“ koncepcija, pagal kurią archive.go procesas archyvą ištraukia ne į konteinerio šaknies chrootą, o į konteinerio šaknies chrootą. pirminis tikslinio kelio katalogas, kurį valdo užpuolikas, ir nestabdo konteinerio vykdymo (chroot naudojamas kaip ženklas išnaudoti lenktynių sąlygas).

Šaltinis: opennet.ru

Добавить комментарий