Tööriistade komplekt isolaatsete Linuxi konteinerite Docker haldamiseks haavatavus (), mis teatud tingimustel võimaldab saada juurdepääsu host-ümbrusele konteinerist, kui on võimalus käivitada oma pilte süsteemis või juurdepääs käivitatavale konteinerile. Probleem ilmneb kõigis Docker'i versioonides ja jääb lahendamata (ettepanek on esitatud, kuid veel pole vastu võetud, , mis rakendab konteineri töö peatamist failisüsteemiga toimingute sooritamise ajaks).
Haavatavus võimaldab kopeerida faile konteinerist host-süsteemi juhuslikesse kohtadesse käsu „docker cp“ täitmisel. Failide kopeerimine toimub root'i õigustega, mis annab võimaluse lugeda või kirjutada igasuguseid faile host-ümbruses, mis on piisav host-süsteemi kontrollimiseks (näiteks võib üle kirjutada /etc/shadow).
Rünnak võib toimuda ainult siis, kui administraator käivitab käsu «docker cp», et kopeerida faile konteinerisse või sealt välja. Seega peab ründaja mingil viisil veenma Docker administraatorit selle toimingu sooritamise vajaduses ja ennustama kopeerimise ajal kasutatavat teed. Teisest küljest võib rünnak toimuda näiteks siis, kui pilveteenused pakuvad vahendeid konfiguratsioonifailide kopeerimiseks konteinerisse, mis on loodud käsu «docker cp» abil.
Probleem on tingitud funktsiooni , mis arvutab absoluutse tee põhifailisüsteemis suhte põhjal, mis arvestab konteineri asukohta. Käskluse «docker cp» täitmise protsessis tekib lühike , kus tee on juba kontrollitud, kuid toimingut ei ole veel sooritatud. Kuna kopeerimine toimub host-süsteemi põhifailisüsteemi kontekstis, on antud ajavahemikus võimalik lingi asendamine teise teega ja andmete kopeerimise algatamine mis tahes faili süsteemi kohta väljaspool konteinerit.
Kuna ajutine akna väljenduse race condition on tugevalt piiratud, õnnestus konteinerist kopeerimise operatsioonide käigus saavutada edukas rünnak vähem kui 1% juhtudest, kui sümboolne link asendati korduvalt teel, mida kasutati kopeerimistegevuses (edukas rünnak toimus pärast umbes 10-sekundilist pidevat katset faili kopeerida "docker cp" käsuga).
Konteinerisse kopeerimise operatsiooni käigus on võimalik saavutada korduv rünnak faili üle kirjutamise osas host-süsteemis vaid mõne iteratsiooni jooksul. Rünnaku võimalus on seotud sellega, et konteinerisse kopeerimise ajal rakendatakse "chrootarchive" kontseptsiooni, mille kohaselt arhiveerimise protsess archive.go ei ekstrakti arhiivi konteineri chroot juurese, vaid sihtteepuhvri vanemakatalooge, mis on ründaja kontrolli all ja ei peata konteineri täitmist (chrooti kasutatakse race condition'i ärakasutamise märkina).
Allikas: opennet.ru
