Копирование в Docker Sandboxes следует по ссылкам за пределы рабочего каталога

Docker

Docker Sandboxes запускают агентов для программирования в изолированных окружениях на компьютере разработчика. Внутри агент видит только те папки, которые разработчик открыл ему явно. Эту границу обходит уязвимость CVE-2026-103916. Копирование не проверяет, куда ведёт путь, и агент выходит за пределы разрешённых папок.

Уязвимость CVE-2026-103916 в команде sbx cp

Песочница при этом работает внутри microVM, лёгкой виртуальной машины со своим ядром, файловой системой и сетью. Внутри такой агент собирает образы и запускает контейнеры без риска для остальной машины. Утилита sbx поставляется отдельной командной строкой, и Docker Desktop ей не нужен. Открытые разработчиком каталоги попадают внутрь через общую файловую систему. Этот список и есть граница безопасности.

До этого в августе 2026 года в версии 0.38.0 закрыли CVE-2026-17106. Тогда за границу можно было выйти через пути внутри распакованного архива. При этом добавленная проверка ограничила только содержимое архива. Саму точку распаковки она не закрыла. По данным записи CVE, рейтинг CVSS 4.0 для новой уязвимости составляет 8,4 из 10.

Как устроен обход проверки

Команда sbx cp при этом пересылает файлы отдельным каналом, который не связан с общим каталогом. О разрешённых папках утилита ничего не знает. Рабочий каталог открыт агенту на запись, поэтому подкаталог можно заменить символьной ссылкой. Символьная ссылка, то есть ярлык на другой файл или папку, внутри песочницы не работает. Срабатывает она на стороне компьютера, когда путь разбирает сама утилита.

При этом ссылка может стоять в четырёх местах пути, и утилита обрабатывает их по-разному. При копировании наружу проверка не срабатывает ни для последнего компонента, ни для родительского каталога. Единственный ключ, который управляет переходом по ссылкам, действует только на источник при копировании внутрь. И там он смотрит лишь на последний компонент. Однако остальные три позиции остаются открытыми.

Проверка ссылки в имени файла проходит успешно. Остальные позиции при этом остаются без проверки. Поэтому защита кажется рабочей, хотя обход сохраняется.

Что позволяет сделать обход

При чтении агент забирает в песочницу файл с компьютера разработчика. Подходящими целями выглядят ключи SSH и облачные учётные данные. При записи агент кладёт своё содержимое в любой каталог, куда может писать пользователь. Это почти весь домашний каталог. Кроме того, подтолкнуть агента к такому копированию можно через внедрение команд в обрабатываемый текст.

Дальше запись превращается в запуск кода. Это рассуждение, а не показанный результат, и такую цепочку исследователь не проверял. При этом атака идёт локально и не требует привилегий. Однако без одного действия пользователя обход не сработает. Сведений об эксплуатации новой уязвимости в реальных атаках нет.

Копирование входит в обычный сценарий работы с агентом. Именно так переносят журналы, артефакты сборки и зависимости. Документация при этом показывает копирование наружу как пример команды. Успешное копирование ничего не печатает. Поэтому оператор не видит, что копирование ушло в другой каталог.

Исправление и обходные меры

Уязвимость нашёл исследователь из Endor Labs. Исправление вышло в Docker Sandboxes 0.51.0 третьего ноября 2026 года. Изначально выпуск планировали на 13 октября вместе с версией 0.48.0. Однако после выхода первого патча команда Docker признала его неполным. Уязвимы версии с 0.28.0, исправлены они в 0.51.0 и более поздних.

До обновления продукт советует не запускать копирование с путём внутри рабочего каталога, открытого недоверенному коду. Вместо этого указывают путь, доступный только на компьютере. Администраторам стоит проверять итоговый путь перед копированием. Проверка одного последнего компонента не поможет, потому что ссылка может стоять в любом месте. Кроме того, подозрительны команды копирования, которые предложил сам агент.

Для организаций с агентами на ноутбуках разработчиков меняется расчёт риска. Уверенность в том, что песочница видит только разрешённое, больше не оправдана. Поэтому при работе с агентами стоит исходить из более широкого доступа. Сама песочница остаётся полезной. При этом её границу теперь задаёт не только список папок.

Ссылки

Комментарии: 0