Vulnerability sa Docker na nagbibigay-daan sa iyong makatakas mula sa container

Sa Toolkit para sa Pamamahala ng Mga Nakahiwalay na Linux Docker Container nakilala kahinaan (CVE-2018-15664), na, sa ilalim ng isang tiyak na hanay ng mga pangyayari, ay nagbibigay-daan sa iyong i-access ang host environment mula sa isang container kung mayroon kang kakayahang ilunsad ang iyong mga larawan sa system o may access sa isang tumatakbong container. Lumilitaw ang problema sa lahat ng bersyon ng Docker at nananatiling hindi naayos (iminungkahing, ngunit hindi pa tinatanggap, tambalan, na nagpapatupad ng pagsususpinde ng container habang nagsasagawa ng mga operasyon kasama ang FS).

Ang kahinaan ay nagbibigay-daan sa mga file na ma-extract mula sa isang lalagyan patungo sa isang arbitrary na bahagi ng sistema ng file ng host system kapag isinasagawa ang command na "docker cp". Ang pagkuha ng file ay isinasagawa gamit ang mga karapatan sa ugat, na ginagawang posible na basahin o isulat ang anumang mga file sa kapaligiran ng host, na sapat upang makontrol ang host system (halimbawa, maaari mong i-overwrite ang /etc/shadow).

Magagawa lamang ang pag-atake kapag isinagawa ng administrator ang command na "docker cp" upang kopyahin ang mga file papunta o mula sa container. Kaya, kailangang kumbinsihin ng umaatake ang tagapangasiwa ng Docker sa pangangailangang gawin ang operasyong ito at mahulaan ang landas na ginamit kapag kumukopya. Sa kabilang banda, maaaring magsagawa ng pag-atake, halimbawa, kapag ang mga serbisyo ng cloud ay nagbibigay ng mga tool para sa pagkopya ng mga configuration file sa isang lalagyan, na binuo gamit ang command na "docker cp".

Ang problema ay sanhi ng isang depekto sa aplikasyon ng function FollowSymlinkInScope, na kinakalkula ang ganap na landas sa pangunahing sistema ng file batay sa kamag-anak na landas, na isinasaalang-alang ang paglalagay ng lalagyan. Habang isinasagawa ang command na "docker cp", isang panandaliang kondisyon ng lahi, kung saan ang path ay na-verify na, ngunit ang operasyon ay hindi pa naisasagawa. Dahil ang pagkopya ay isinasagawa sa konteksto ng pangunahing file system ng host system, sa loob ng isang tinukoy na tagal ng panahon, maaari mong pamahalaan na palitan ang link ng isa pang landas at simulan ang pagkopya ng data sa isang arbitrary na lokasyon sa file system sa labas ng lalagyan.

Dahil ang palugit ng oras para sa isang kundisyon ng lahi ay lubos na limitado sa isang inihanda pagsamantalahan ang prototype Kapag nagsasagawa ng mga operasyon ng pagkopya mula sa isang lalagyan, posible na makamit ang isang matagumpay na pag-atake sa mas mababa sa 1% ng mga kaso kapag paikot na pinapalitan ang isang simbolikong link sa landas na ginamit sa operasyon ng pagkopya (ang matagumpay na pag-atake ay isinagawa pagkatapos ng humigit-kumulang 10 segundo ng mga pagtatangka upang patuloy na kopyahin ang file sa isang loop gamit ang command na "docker cp").

Sa pamamagitan ng pagsasagawa ng operasyon ng pagkopya sa isang lalagyan, makakamit mo ang isang paulit-ulit na pag-atake ng overwrite ng file sa host system sa ilang mga pag-ulit lamang. Ang posibilidad ng pag-atake ay dahil sa ang katunayan na kapag kinopya sa isang lalagyan, ang konsepto ng "chrootarchive" ay ginagamit, ayon sa kung saan ang proseso ng archive.go ay kinukuha ang archive hindi sa chroot ng container root, ngunit sa chroot ng parent na direktoryo ng target na landas, na kinokontrol ng umaatake, at hindi humihinto sa pagpapatupad ng lalagyan (ginagamit ang chroot bilang tanda para pagsamantalahan ang mga kundisyon ng lahi).

Pinagmulan: opennet.ru

Magdagdag ng komento