Безопасность ИИ-агентов: детальный гид по изоляции ненадежного кода
Развитие систем искусственного интеллекта привело к появлению автономных ИИ-агентов, способных самостоятельно решать сложные задачи. Одним из наиболее частых требований таких агентов является выполнение сгенерированного ими или пользователем программного кода. Это может быть как безобидный запуск тестов, так и установка сторонних библиотек из публичных репозиториев. Однако выполнение недоверенных инструкций на хост-системе несет критические угрозы безопасности. В руках злоумышленников или из-за ошибок модели агент может выполнить код, который скомпрометирует операционную систему, получит доступ к приватным SSH-ключам, облачным токенам и учетным данным, организует сетевое сканирование внутренней инфраструктуры или запустит бесконечный процесс генерации потоков (fork bomb), приводящий к отказу в обслуживании (OOM).
Угрозы бесконтрольного выполнения кода
Предоставление ИИ-агенту возможности выполнять произвольный код без жестких ограничений эквивалентно запуску потенциально вредоносного ПО непосредственно на вашем сервере. Код получает доступ к ресурсам ядра операционной системы и может использовать любые доступные системные вызовы.
Основные риски включают в себя:
- Утечка секретов: Сканирование файловой системы на предмет файлов конфигурации, переменных окружения и ключей авторизации.
- Несанкционированный сетевой доступ: Использование сокетов для отправки конфиденциальных данных на внешние серверы (exfiltration) или атака на другие узлы в приватной сети.
- Монополизация ресурсов: Запуск скрытого майнинга криптовалют, переполнение дискового пространства или блокировка CPU.
- Компрометация хоста: Попытки эксплуатации уязвимостей ядра Linux для выхода из изолированного окружения (sandbox escape).
Сравнение четырех типов изоляции
Для предотвращения подобных инцидентов инженеры используют специализированные песочницы. Выбор технологии зависит от баланса между безопасностью, скоростью запуска и совместимостью с системными вызовами.
Рассмотрим основные подходы к изоляции:
| Критерий | OCI Контейнеры (Docker) | gVisor | Микровиртуальные машины (microVM) | WebAssembly (Wasm) |
|---|---|---|---|---|
| Уровень изоляции | Низкий (общее ядро) | Средний (userspace-ядро) | Высокий (аппаратная виртуализация) | Максимальный (capability-based) |
| Время старта | ~100–500 мс | ~150–200 мс | ~125–150 мс | < 5 мс |
| Расход памяти | Минимальный | Низкий | Средний (~5-15 МБ) | Минимальный (< 1 МБ) |
| Совместимость | Полная | Ограниченная (перехват syscall) | Полная (собственное ядро) | Очень низкая (требует компиляции) |
1. Стандартные OCI-контейнеры (namespaces и cgroups)
Контейнеры изолируют процессы с помощью пространств имен и контрольных групп ядра Linux, а также фильтрации вызовов через seccomp. Это обеспечивает высокую производительность и совместимость, однако процессы контейнера делят общее ядро хоста. В случае обнаружения уязвимости в ядре (например, уязвимости повышения привилегий), вредоносный код может легко получить доступ к хост-системе. Для недоверенного кода ИИ-агентов использовать стандартный Docker в чистом виде небезопасно.
2. Проект gVisor (userspace-ядро)
Разработанный компанией Google инструмент gVisor заменяет стандартный рантайм OCI на runsc. Он перехватывает системные вызовы от приложения и обрабатывает их внутри безопасного виртуального ядра, написанного на языке Go, работающего в пространстве пользователя. Это исключает прямой контакт недоверенного кода с ядром хоста. Однако gVisor страдает от высоких накладных расходов при выполнении большого количества операций ввода-вывода (syscall-heavy workloads), а также поддерживает не все системные вызовы Linux.
3. Микровиртуальные машины (например, AWS Firecracker)
Технология microVM использует аппаратную виртуализацию через KVM для запуска легковесных виртуальных машин с собственным минималистичным ядром Linux. Firecracker минимизирует количество эмулируемых устройств гостевой системы, что позволяет запускать окружение примерно за 125 миллисекунд с накладными расходами по памяти менее 5 МБ на одну инстанцию. Это обеспечивает надежный барьер безопасности аппаратного уровня, сохраняя при этом полную совместимость с Linux-библиотеками.
4. Среды выполнения WebAssembly (например, Wasmtime)
Изоляция на уровне WebAssembly (Wasm) компилирует код в независимый байт-код, исполняемый внутри виртуальной машины. Безопасность строится на модели вызова функций с явным предоставлением прав (capability-based security): модуль не имеет доступа к файлам или сети, пока хост-система явно не передаст ему соответствующий дескриптор. Преимущество — микросекундный запуск и высочайшая плотность размещения. Недостаток — невозможность запустить произвольный скомпилированный бинарный файл Linux без адаптации под стандарт WASI.
Архитектура и правила внедрения песочниц
При проектировании надежной системы выполнения кода для ИИ-агентов необходимо соблюдать комплексный подход. Недостаточно просто выбрать надежный рантайм, важно правильно настроить его параметры.
Основные принципы безопасного конфигурирования:
- Политики ограничения сети (Egress Policy): По умолчанию запрещайте песочницам доступ к сети. Если доступ необходим для загрузки пакетов, ограничивайте его белым списком доменов и блокируйте доступ к локальным IP-адресам внутренней сети.
- Лимиты ресурсов (Quotas): Жестко задавайте ограничения на объем выделяемой оперативной памяти, процессорного времени (CPU quota) и дискового пространства для предотвращения DoS-атак на хост-сервер.
- Монтирование в режиме Read-Only: Основная файловая система песочницы должна быть примонтирована в режиме только для чтения. Для записи результатов работы агента выделяйте отдельную изолированную временную папку (tmpfs).
- Управление секретами: Никогда не передавайте переменные окружения с мастер-ключами внутрь песочницы. Все необходимые токены должны предоставляться точечно и иметь минимальный уровень привилегий.
- Жизненный цикл окружений: Каждая сессия выполнения кода ИИ-агента должна запускаться в абсолютно новой, чистой песочнице и полностью уничтожаться сразу после завершения работы.
- Аудит системных вызовов: Настройте сбор и анализ логов системных вызовов внутри песочниц для раннего обнаружения аномального поведения программ.

