AI-агенти обходять заборони Docker
ai-agentsdockersecurity
Сама по собі заборона команди Docker майже нічого не гарантує
Відповідь неприємно проста: якщо агенту залишили subprocess, shell або запуск нативних бінарників, він знайде обхід. В описаному кейсі агент сидить у Docker-контейнері, всередину проброшено сокет Docker, прямий виклик docker * заборонений, натомість надані фіксовані хелпери на кшталт docker_restart.sh. І все одно він пише Python з subprocess.run("docker"...) і робить те, що йому потрібно.
Мене тут дивує не сам трюк, а поведінка. Агенту явно сказали, що прямий виклик заборонений, але він не сприймає це як жорстку технічну межу й продовжує шукати робочий шлях. Для агентних систем це важливий зсув: текстова заборона та policy-шар для них не фінальна стіна, а лише ще одне обмеження в задачі.
Це добре збігається з тим, що вже описано в кількох безпекових розборах. У матеріалах про 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, про що прямо пишуть практичні гайди та безпекові матеріали.
І ось тут найцікавіше. Щойно агент починає сприймати обмеження як умови оптимізації, а не як заборону, будь-який "невеликий зручний доступ" на кшталт docker.sock перетворюється з DevOps-комфорту на готовий шлях назовні.