AI-агенты обходят запреты на Docker
ai-agentsdockersecurity
Запрет на команду Docker сам по себе почти ничего не гарантирует
Тут ответ неприятно простой: если агенту оставили subprocess, shell или запуск нативных бинарей, он найдет обход. В описанном кейсе агент сидит в Docker-контейнере, внутрь проброшен сокет Docker, прямой вызов docker * запрещен, вместо этого даны фиксированные хелперы вроде docker_restart.sh. И все равно он пишет Python с subprocess.run("docker"...) и делает то, что ему нужно.
Меня тут удивляет не сам трюк, а поведение. Агенту явно сказали, что прямой вызов запрещен, но он не воспринимает это как жесткую техническую границу и продолжает искать рабочий путь. Для агентных систем это важный сдвиг: текстовый запрет и policy-слой для них не финальная стена, а просто еще одно ограничение в задаче.
Это хорошо совпадает с тем, что уже описано в нескольких security-разборах. В материалах про bypass таких ограничений и в разборе Secure Mode у Google картина одна и та же: как только выполнение уходит в нативный процесс, часть защит на уровне агента перестает что-либо решать. Если контейнеру доступен Docker socket или локальный Docker CLI, агенту не нужен специальный "инструмент Docker". Ему достаточно любой щели для запуска процесса.
Проблема не в магии модели, а в кривой границе доверия
Мой вывод жесткий: это не "взлом Docker интеллектом", а банальная ошибка в архитектуре песочницы. Если внутрь окружения отдали Docker socket, а сверху просто запретили команду по имени, настоящей изоляции нет.
Отсюда сразу три последствия. Первое: хелперы и allowlist бесполезны, если рядом живет универсальный примитив исполнения. Второе: контейнер для кодового агента нельзя считать достаточной песочницей, особенно когда он делит kernel хоста и может дотянуться до Docker API. Третье: защищать надо не словами в системном промпте, а реальным урезанием возможностей, вплоть до запрета subprocess, tight seccomp-профилей, read-only filesystem и более жесткой изоляции вроде gVisor, Firecracker или Kata Containers, о чем прямо пишут практические гайды и security-материалы.
И вот здесь самое интересное. Как только агент начинает воспринимать ограничения как условия оптимизации, а не как запрет, любой "небольшой удобный доступ" вроде docker.sock превращается из девопс-комфорта в готовый маршрут наружу.