Наскоро разкрита уязвимост в Docker, проследявана като CVE-2026-17106 и наречена „CopyEscape“, позволява на злонамерени контейнери да презаписват файлове на хост машината и при определени конфигурации да постигат пълно изпълнение на код с root права.
Несъвършенството е открито от екипа Imperva Red Team и засяга широко използваната команда docker cp, както и свързаната с нея команда sbx cp, използвана в изолирани среди на Docker (Docker Sandboxes) за работни процеси с AI агенти.
Ако бъде експлоатирана, CopyEscape позволява на злонамерен контейнер да излезе от своята изолирана среда, да записва или презаписва произволни файлове на хоста на клиента и при специфични условия под Linux да постигне изпълнение на код на ниво root.
Уязвимостта CopyEscape в Docker позволява root достъп
Уязвимостта се намира в конвейера за архивиране на Docker – механизма, който премества файлове между контейнера и хост машината. Когато потребителят изпълни проста команда като docker cp container:/path/to/file.txt ./file.txt, Docker не извършва директно копиране на файловата система.
Вместо това демонът обхожда активната файлова система на контейнера, пакетира избрания път в tar архив и предава този архив на Docker CLI за извличане на локалната машина.
Този дизайн предполага две неща: че демонът създава съгласуван архив и че CLI запазва всеки извлечен файл в рамките на избраната от потребителя дестинация. Изследователите от Imperva откриха начин да нарушат и двете предположения в рамките на една операция по копиране.
Експлойтът свързва състояние на надпревара (race condition) във файловата система с дефектна проверка на символни връзки (symlinks). Тъй като Docker заключва само вътрешното си състояние по време на обхождането на архива, но не и процесите, работещи в контейнера, атакуващият може да манипулира файловете по средата на сканирането.
Използвайки прецизно планирана последователност от размени на директории, злонамереният контейнер подмамва модула за обхождане на Docker да регистрира директория, след което тихомълком я заменя със символна връзка, сочеща извън предвидената дестинация, като например /usr/bin.
Проверката за валидиране в кода за извличане на Docker инспектира един конструиран път, но всъщност създава символна връзка, използвайки друг, непроверен път от архива. Това несъответствие позволява на файловете на атакуващия да попаднат там, накъдето сочи символната връзка, заобикаляйки напълно изолираната среда.
Тъй като командата docker cp стои в основата на рутинни задачи като събиране на артефакти от компилации, регистрационни файлове и форензични доказателства, уязвимостта застрашава директно CI/CD конвейерите, работните станции на разработчиците и работните процеси за реагиране на инциденти. Ироничното е, че анализатор, който извлича доказателства от компрометиран контейнер, за да го разследва, може неволно да задейства експлойта.
При macOS, където Docker Desktop стартира своя демон в рамките на виртуална машина, CLI все пак извлича файловете локално, което означава, че атакуващите могат да презапишат стартиращи скриптове на обвивката (shell), SSH конфигурация или LaunchAgents, за да постигнат изпълнение на код при следващото отваряне на терминал.
Под Linux, ако командата docker cp се изпълнява с повишени привилегии, както е обичайно при автоматизацията, същият примитив за запис може да замени системни двоични файлове като runc, превръщайки презаписването на файл в незабавен root достъп.
Изследователите също така потвърдиха, че уязвимостта засяга командата sbx cp в Docker Sandboxes, излагайки средите на AI агенти за програмиране на същия риск от бягство от дестинацията при извличане на файлове от ненадеждни изолирани среди.
Docker коригира уязвимостта в Docker Engine и CLI 29.7.2, Docker Desktop 4.86.0 и Docker Sandboxes 0.38.0 след процес на разкриване, започнал през април 2026 г., който изискваше множество удължения за разрешаване на регресии от предишна корекция.
Организациите, които не могат да обновят системите си веднага, трябва да избягват изпълнението на docker cp срещу ненадеждни или работещи контейнери, да спират контейнерите преди копиране на файлове, да преустановят използването на sudo docker cp и да извличат подозрителни данни само чрез изолирани среди за еднократна употреба.
Основният извод е, че извличането на архиви само по себе си е граница на сигурност – граница, която проверките на низове за пътища не могат да гарантират, когато се появят символни връзки и едновременни промени на файлове.