Agent Sandboxing
Изоляция ИИ-агента запускает его команды и сгенерированный код в изолированной среде, ограничивая доступ к файлам, сети, учётным данным и вычислительным ресурсам.
Песочница для агента — это изолированная среда, в которой выполняются действия ИИ-агента, например команды оболочки, сгенерированный код, изменение файлов и просмотр веб-страниц. Такая среда ограничивает доступ этих действий к файлам, сетям, учётным данным и вычислительным ресурсам. Агент на основе большой языковой модели (LLM) выбирает каждую команду на основе прочитанного текста, который может быть ошибочным или вредоносным. Песочница обеспечивает соблюдение ограничений на уровне операционной системы или гипервизора, поэтому они действуют, даже если модель поддаётся инъекции в запрос, скрытой на веб-странице или в README, либо просто ошибается.
Зачем агентам нужны песочницы#
Вызов функций и использование инструментов превращают текст модели в реальные действия, поэтому агент, способный запускать команды оболочки, может также удалять файлы, читать SSH-ключи или загружать исходный код. В памятке OWASP по безопасности ИИ-агентов запуск агентами произвольного кода без песочницы указан среди нежелательных практик. В опубликованном в декабре 2025 года списке OWASP Top 10 для агентных приложений неожиданное выполнение кода названо одним из десяти главных рисков агентных систем. Песочницы также упрощают работу с агентами: если просить человека подтверждать каждую команду, он устаёт от постоянных запросов. Anthropic обнаружила, что песочница в Claude Code сократила число запросов на разрешение на 84% при внутреннем использовании, поскольку командам, остающимся в пределах установленных границ, больше не требуется подтверждение.
Что ограничивает песочница#
Песочница агента обычно контролирует пять аспектов:
- Файловая система: Агент видит временную рабочую область или один репозиторий, часто на базе образа, доступного только для чтения, и не может читать учётные данные, профили браузера или другие проекты.
- Сеть: Исходящий трафик блокируется или направляется через прокси, который разрешает доступ только к указанным доменам, например к реестру пакетов. Это не позволяет захваченному агенту отправить данные на сервер злоумышленника.
- Учётные данные: Секреты хранятся вне песочницы или передаются в виде краткосрочных токенов, ограниченных одной задачей. Это соответствует принципу минимальных привилегий в защите данных.
- Вычислительные ресурсы: Ограничения на время работы CPU, память, число процессов и общее время выполнения останавливают бесконечные циклы и вилочные бомбы.
- Системные вызовы: Фильтры, такие как seccomp, блокируют интерфейсы ядра, которые не нужны инструментам агента.
Степень изоляции зависит от расположения границы. Контейнеры Docker используют общее ядро хоста, поэтому эксплойт ядра может позволить выйти за их пределы. gVisor добавляет пользовательское ядро, перехватывающее системные вызовы каждого контейнера. Микровиртуальные машины, например Firecracker, которую AWS разработала для Lambda, предоставляют каждой песочнице собственное минимальное ядро и запускаются менее чем за 125 мс при дополнительном расходе памяти менее 5 МиБ. В размещённых интерпретаторах кода и облачных агентах для программирования каждая задача обычно запускается в новом контейнере или микровиртуальной машине, которые затем уничтожаются. На компьютерах разработчиков песочница Claude Code использует Seatbelt в macOS и bubblewrap в Linux. Команды оболочки могут записывать данные только в рабочий и временный каталоги, а сетевой трафик проходит через прокси, который проверяет каждый хост по списку разрешённых.
Песочница — один из уровней обвязки агента, то есть программного обеспечения, которое выполняет вызовы инструментов модели. Обвязка проверяет каждое предлагаемое действие на соответствие политикам, выполняет разрешённые действия в песочнице и приостанавливает работу, чтобы запросить подтверждение человека перед необратимыми действиями, такими как платежи, развёртывание или отправка сообщений за пределы организации:
Изоляция сгенерированного кода#
Агентам, которые пишут и запускают код, — от помощников для анализа данных до инструментов агентного программирования, — нужны самые строгие ограничения, поскольку сгенерированный код может делать всё, что может интерпретатор. Внутренний уровень — это обычная изоляция процессов, которую можно реализовать стандартной библиотекой Python. Этот скрипт запускает написанный моделью код во временном каталоге, с пустым окружением и ограничением времени CPU, заданным через модуль resource (Linux и macOS).
import os
import resource
import subprocess
import sys
import tempfile
os.environ["API_KEY"] = "sk-live-123" # Секрет, который хранит собственный процесс агента
# Код, написанный моделью: читает окружение, а затем зацикливается навсегда
generated = "import os\nprint('API_KEY =', os.environ.get('API_KEY'), flush=True)\nwhile True: pass"
def limit_cpu():
"""Stop the child process after 2 seconds of CPU time."""
resource.setrlimit(resource.RLIMIT_CPU, (2, 2))
# Запуск в изолированном режиме, во временном каталоге, с пустым окружением
cmd = [sys.executable, "-I", "-c", generated]
with tempfile.TemporaryDirectory() as workspace:
proc = subprocess.run(cmd, cwd=workspace, env={}, capture_output=True, text=True, preexec_fn=limit_cpu)
print(proc.stdout.strip())
print("exit code:", proc.returncode)Дочерний процесс выводит API_KEY = None, поскольку запускается с пустым окружением и не видит секрет родительского процесса. Затем процесс завершается с кодом -24: ядро остановило его сигналом SIGXCPU, когда бесконечный цикл достиг ограничения в 2 секунды CPU. Контейнер или микровиртуальная машина добавляют к этому процессу границы файловой системы и сети.
Песочница для агентов и смежные средства защиты#
- Защитные барьеры ИИ: Классификаторы и правила проверяют входные и выходные данные или предлагаемые действия до их выполнения. Песочница изолирует всё, что делает действие после того, как защитный барьер его пропустил.
- Разрешения: Контроль доступа определяет, какими инструментами и ресурсами агент вообще может пользоваться. Песочница обеспечивает соблюдение этих ограничений на уровне операционной системы, ниже любого механизма проверки, который модель могла бы обойти уговорами.
- Контейнеризация: Упаковка программного обеспечения и его зависимостей для воспроизводимого развёртывания. Контейнер становится песочницей, если запускать его с пониженными привилегиями, ограниченными точками монтирования и правилами исходящего сетевого трафика.
- Тестовые песочницы: Непроизводственные копии системы, где можно безопасно пробовать программное обеспечение. Песочницы агентов изолируют каждое действие агента как в производственной среде, так и при разработке.
Где применяются песочницы агентов#
- Агенты для программирования: Для каждой задачи создаётся новый контейнер или виртуальная машина с одним репозиторием. Там агент устанавливает зависимости, запускает тесты и возвращает diff для проверки человеком.
- Агенты для управления компьютером: Агенты, управляющие рабочим столом или браузером с помощью снимков экрана и щелчков мыши, запускаются в виртуальной машине с собственными учётными записями, поскольку любая просматриваемая ими страница может содержать инструкции, нацеленные на агента.
- Интерпретаторы кода: Помощники, анализирующие загруженные таблицы или изображения, запускают код Python в отдельной песочнице для каждого сеанса, часто без доступа к интернету.
- Серверы MCP и навыки агентов: Сторонние инструменты и скрипты навыков работают с учётными данными пользователя, поэтому надёжные хосты запускают локальные серверы и скрипты в тех же границах, что и оболочку агента.
Размещённые платформы агентов применяют такие же ограничения к собственным рабочим процессам. Агенты Ultralytics Platform, объединяющие обнаружение на YOLO26, модели «зрение — язык» и блоки оповещений, ограничивают каждый совместно запущенный тест 60 секундами, 20 входными изображениями и 20 вызовами моделей или провайдеров. Блок Webhook отправляет запросы только на общедоступные URL HTTPS, не следует перенаправлениям и прекращает ожидание через 5 секунд.










