Nástroje pro správu izolovaných Linuxových kontejnerů Docker zranitelnost (), která za určitých okolností umožňuje přístup k hostitelskému prostředí z kontejneru za předpokladu, že je možné spouštět vlastní obrazy v systému nebo při přístupu k běžícímu kontejneru. Problém se projevuje ve všech verzích Dockeru a zůstává neopravitelný (návrh byl předložen, ale zatím nebyl schválen, , implementující pozastavení běhu kontejneru během provádění operací se souborovým systémem).
Zranitelnost umožňuje extrahovat soubory z kontejneru do libovolné části souborového systému hostitelské (při provádění příkazu „docker cp“. Extrakce souborů se provádí s právy root, což umožňuje číst nebo zapisovat libovolné soubory v hostitelském prostředí, což je dostatečné k získání kontroly nad hostitelským systémem (například je možné přepsat /etc/shadow).
Útok může být proveden pouze v okamžiku, kdy administrátor provádí příkaz „docker cp“ pro kopírování souborů do kontejneru nebo z něj. Útočník se tedy musí nějakým způsobem přesvědčit administrátora Dockeru o nutnosti provedení této operace a předpovědět použitou cestu při kopírování. Na druhou stranu může být útok proveden například při poskytnutí prostředků cloudovými službami pro kopírování konfiguračních souborů do kontejneru, které byly vytvořeny pomocí příkazu „docker cp“.
Problém je způsoben nedostatkem v aplikaci funkce , která vypočítává absolutní cestu v hlavním souborovém systému na základě relativní cesty zohledňující umístění kontejneru. Během provádění příkazu „docker cp“ se objevuje krátkodobý , kdy byla cesta již ověřena, ale operace ještě nebyla provedena. Protože kopírování probíhá v kontextu hlavního souborového systému hostitelské, v uvedeném časovém rozmezí je možné vyměnit odkaz na jinou cestu a iniciovat kopírování dat do libovolného místa souborového systému mimo kontejner.
Jelikož je doba projevu závodního stavu silně omezena v připraveném Při provádění operací kopírování z kontejnerech se podařilo dosáhnout úspěšného útoku v méně než 1 % případů při cyklické výměně symbolického odkazu v cestě používané při kopírování (úspěšný útok byl proveden po přibližně 10 sekundách pokusů o kontinuální cyklické zkopírování souboru příkazem „docker cp“).
Při provádění operace kopírování do kontejneru lze dosáhnout opakovaného útoku na přepsání souboru v hostitelském systému během několika iterací. Možnost útoku souvisí s tím, že při kopírování do kontejneru se používá koncept „chrootarchive“, podle kterého proces archive.go extrahuje archiv nikoli do chroot kořene kontejneru, ale do chroot rodičovského adresáře cílové cesty, který ovládá útočník a nezastavuje přitom provádění kontejneru (chroot se používá jako indikátor pro zneužití závodního stavu).
Zdroj: opennet.ru
