Представь ситуацию: ты поручаешь ИИ-агенту протестировать скрипт или собрать пайплайн. Агент генерирует код, ставит пакеты в терминале и дергает внешние API. Где ты запускаешь этот код? В девяти случаях из десяти разработчики поднимают стандартный контейнер Docker.
И в этот самый момент в архитектуре возникает критическая брешь безопасности. Контейнеры никогда не проектировались как надежная граница изоляции враждебного или непроверенного кода: они делят общее ядро Linux с хостом. Если сгенерированный скрипт использует известную уязвимость ядра (container breakout), агент получает прямой доступ к корневой файловой системе сервера, переменным окружения и закрытым сетевым портам. Ранее мы уже подробно разбирали этот парадокс в материале Иллюзия безопасности: почему ИИ-агенты не совершали побег из песочниц и что происходит при снятии лимитов, где отсутствие жестких рамок приводило к мгновенному сканированию внутренней сети.
Инженерная команда Perplexity AI выложила в открытый доступ решение, на котором работает их собственный сервис Perplexity Computer — платформу SPACE (Sandboxed Platform for Agentic Code Execution). Это открытая оркестровка изолированных сред на базе технологии аппаратной виртуализации Firecracker microVM под лицензией Apache 2.0.
Жесткая изоляция ядра: архитектура Firecracker microVM
Вместо пространств имен cgroups и namespaces в SPACE каждая песочница запускается как самостоятельная минималистичная виртуальная машина. У нее есть собственное независимое ядро Linux, изолированная память и файловая система на базе снимков btrfs. Даже если агент получит внутри права root, он заперт в гостевой микро-ВМ на аппаратном уровне процессора через расширения KVM.
Архитектура SPACE написана на Rust и разделена на две плоскости:
- Control Plane: HTTP REST API для декларативного создания песочниц из базовых шаблонов (Python, Node.js), управления их ресурсами и заморозки состояния (suspend/resume);
- Data Plane: потоковые соединения через WebSocket и Server-Sent Events для передачи ввода-вывода (stdin/stdout/stderr) в реальном времени.
Особое внимание авторы уделили безопасности секретов. В SPACE чувствительные токены API не пробрасываются в переменные окружения гостевой машины. Подстановка авторизационных заголовков происходит на внешнем сетевом шлюзе хоста (egress gateway), где действует строгий белый список разрешенных доменов, блокирующий атаки класса SSRF и скрытый майнинг.
Практика: создание песочницы и исполнение кода через API
Для старта песочницы достаточно отправить POST-запрос к Control Plane платформы:
# Инициализация изолированной песочницы с шаблоном Python
curl -s -X POST http://localhost:8080/v1/sandboxes \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SPACE_API_KEY" \
-d '{
"template": "python-data-science:latest",
"timeout_seconds": 300,
"memory_mb": 2048,
"vcpu": 2
}'
# Сервер возвращает идентификатор сессии:
# {"sandbox_id": "sbx_01j9a8b7c6d5e4f3", "status": "ready"}
Холодный старт занимает считанные сотни миллисекунд, а в режиме пулов прогрева (Warm Pools) готовая ВМ выдается за 10–20 мс. Теперь выполним команду внутри изолированной среды и снимем результат:
# Выполнение команды внутри гостевой ОС с получением вывода
curl -s -X POST http://localhost:8080/v1/sandboxes/sbx_01j9a8b7c6d5e4f3/commands \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SPACE_API_KEY" \
-d '{
"command": ["python3", "-c", "import sys; print(f\"Изолированный рантайм: {sys.version}\")"],
"stream": false
}'
# Приостановка песочницы с сохранением состояния диска на btrfs
curl -s -X POST http://localhost:8080/v1/sandboxes/sbx_01j9a8b7c6d5e4f3/suspend \
-H "Authorization: Bearer $SPACE_API_KEY"
Платформа поддерживает слой совместимости с популярным SDK E2B (E2B Compatibility Wrapper), что позволяет переключить существующие агентные пайплайны на собственную защищенную инфраструктуру.
Для запуска Firecracker microVM физический сервер или облачный инстанс обязан поддерживать вложенную виртуализацию (nested virtualization) и иметь доступ к символьному устройству /dev/kvm. В обычных виртуальных машинах без поддержки аппаратного KVM запустить SPACE не удастся.
