Песочница без сетевой границы — половина защиты для агента

Агент, который читает репозиторий и запускает сгенерированный код, может утянуть секреты через сеть — без escape из microVM. Достаточно открытого исходящего трафика: промпт-инъекция в issue, логе или зависимости подскажет, что отправить наружу.
Изоляция на машине и контроль сети — разные вопросы. Песочница без egress control держит процесс, но не его последствия: где можно подключиться, какие credentials доступны и как права меняются на жизненном цикле запуска.
Обход без escape
Недоверенный код не ломает kernel — он находит сетевой путь, который модель безопасности не учла. VM работает штатно, containment уже нет.
- DNS-резолвер в «отключённой» сети;
- пустой allowlist, который по умолчанию пускает всё;
- hostname, который политика и прокси читают по-разному;
- registry пакетов как relay для данных.
Граница включает DNS, прокси, identity-сервисы и каждый намеренно разрешённый destination.
Выборочная связность
Полный disconnect не подходит: агенту нужны git, зависимости, модель, БД и upload результата. Практичнее deny по умолчанию и точечные разрешения:
- AI-провайдер — да, остальной публичный интернет — нет;
- один bucket object storage, не целая облачная сеть;
- приватный сервис при блоке остального private address space;
- registry на этапе настройки, отключение перед untrusted execution;
- API-запрос без ключа внутри песочницы.
Domain rules и CIDR дополняют друг друга: первые точны для сервисов с плавающими IP, вторые держат фиксированную инфраструктуру. Политику можно сужать по этапам workflow без рестарта.
Firewall на хосте
Vercel Sandbox ставит firewall вне microVM — код внутри не отключит его. Linux редиректит исходящий TCP и DNS через файрвол; для ограничений по домену читается SNI из начала TLS handshake до upstream connect. Обычный TLS проходит без расшифровки; для отдельных доменов TLS терминируется с уникальным CA песочницы — можно матчить path, method, query, headers и инжектить credential.
Ключи снаружи compute
Ключ в переменной окружения — bearer credential: любой процесс копирует и шлёт третьей стороне. Vercel инжектит auth header на boundary хоста: credential не входит в microVM, CA уникален для sandbox и удаляется при остановке. Matchers сужают path и headers — сгенерированный код может submit в один endpoint, но не read на том же API.
Request forwarding гоняет выбранные HTTPS через ваш прокси с Vercel OIDC token (team, project, sandbox). Прокси становится слоем политик: redact полей, supply-chain scan пакетов, audit trail, обмен identity за узкий credential. Полный egress firewall во всех Sandboxes без payment method — изоляция и сетевой контроль в baseline, не addon после продакшена.
Источник: A sandbox without a network boundary is only half a sandbox.