Vercel Sandbox: SNI-фильтрация для безопасного выполнения ненадёжного кода
Vercel Sandbox теперь поддерживает фильтрацию исходящего трафика на основе SNI и CIDR-блоков, позволяя разработчикам точно контролировать сетевые подключения изолированного кода. Это обновление особенно актуально для безопасного выполнения ненадёжного или сгенерированного ИИ кода: если код скомпроме

Vercel Sandbox теперь поддерживает фильтрацию исходящего трафика на основе SNI и CIDR-блоков, позволяя разработчикам точно контролировать сетевые подключения изолированного кода. Это обновление особенно актуально для безопасного выполнения ненадёжного или сгенерированного ИИ кода: если код скомпрометирован, он не сможет извлечь данные или совершить нежелательные вызовы API. По умолчанию песочницы имеют неограниченный доступ в интернет, но теперь администраторы могут настроить белые списки доменов и IP-диапазонов, блокируя любой другой трафик.
Почему SNI-фильтрация лучше IP-блокировки
Традиционные межсетевые экраны, основанные на IP-адресах, плохо подходят для современных интернет-приложений. Один и тот же IP-адрес может обслуживать тысячи доменов, особенно при использовании CDN и облачных провайдеров. Например, IP-адрес популярного облачного сервиса может одновременно обслуживать десятки тысяч сайтов. Блокировка или разрешение по IP в таких условиях либо слишком груба, либо требует постоянного обновления списков, что неэффективно. Фильтрация на уровне хостов, напротив, позволяет точно указать, к каким именно доменам разрешён доступ, игнорируя остальные.
Обычно для фильтрации на уровне хостов требуется HTTP-прокси, который анализирует заголовки Host. Однако такой подход не работает для не-HTTP протоколов, таких как Redis, PostgreSQL или WebSocket. Vercel решила эту проблему, создав межсетевой экран, который анализирует первые незашифрованные байты TLS-рукопожатия, извлекая целевое имя хоста из поля SNI. Поскольку почти весь современный интернет-трафик зашифрован по TLS, такой подход покрывает большинство сценариев. Для устаревших или незашифрованных систем предусмотрена поддержка правил на основе IP/CIDR.
Как работает SNI-фильтрация в Vercel Sandbox
SNI-фильтрация в Vercel Sandbox основана на перехвате рукопожатия TLS. Когда код в песочнице пытается установить исходящее TLS-соединение, межсетевой экран проверяет поле SNI в незашифрованной части рукопожатия. Если целевой хост не входит в список разрешённых, соединение отклоняется до передачи каких-либо данных. Это позволяет блокировать нежелательные подключения на раннем этапе, не дожидаясь, пока данные начнут передаваться. Для не-TLS трафика или для случаев, когда нужно разрешить целую подсеть, можно использовать CIDR-правила. Политики можно обновлять динамически на работающей песочнице без перезапуска процесса.
Какие возможности конфигурации предоставляет Vercel Sandbox?
Разработчики могут определить, к каким доменам песочница может обращаться, используя точные имена хостов или шаблоны с подстановочными знаками. Например, можно разрешить доступ ко всем поддоменам конкретного сервиса, используя .example.com. Политики могут быть изменены в любой момент во время выполнения сессии. Это позволяет реализовать сценарии, когда на старте песочница имеет полный доступ для установки зависимостей, затем сеть блокируется перед выполнением ненадёжного кода, после чего на короткое время открывается для стриминга результатов, и снова закрывается. Все изменения применяются мгновенно без перезапуска. Функция доступна на всех тарифных планах Vercel.
Технические детали и примеры использования
Межсетевой экран Vercel Sandbox работает на уровне ядра, что обеспечивает минимальную задержку и высокую производительность. Он поддерживает как IPv4, так и IPv6 адресацию. Для настройки политик используется простой JSON-конфиг, который можно передать при создании песочницы или обновить динамически через API. Например, чтобы разрешить доступ только к api.example.com и заблокировать всё остальное, достаточно указать:
{ "allowedDomains": ["api.example.com"], "blockedDomains": [], "allowedCIDRs": [], "blockedCIDRs": [] }
Если нужно разрешить целую подсеть, например, для доступа к внутреннему Redis-серверу, можно использовать CIDR-блок: "allowedCIDRs": ["10.0.0.0/8"]. Важно отметить, что фильтрация по SNI работает только для TLS-соединений. Для незашифрованного трафика (например, HTTP) необходимо использовать CIDR-правила, что менее точно, но всё же позволяет ограничить доступ.
Кому и зачем нужно это обновление
Обновление в первую очередь полезно разработчикам, которые запускают ненадёжный или сгенерированный ИИ код в изолированных средах. Например, в приложениях, использующих агентов ИИ, которые могут выполнять произвольные команды. Теперь можно ограничить их сетевые возможности только необходимыми API, снижая риск утечки данных. Также это важно для платформ, предоставляющих пользовательские скрипты или плагины. Для бизнеса это означает повышение безопасности и соответствие требованиям по защите данных. Разработчикам из России и СНГ функция доступна в рамках стандартных планов Vercel.
Будущее развитие и планы Vercel
Vercel продолжает развивать безопасность своей платформы. В будущем можно ожидать расширения возможностей фильтрации, возможно, добавления логирования и аудита сетевых подключений. Также вероятна интеграция с другими сервисами Vercel для более тонкого управления политиками. Пока что функция доступна в документации и готова к использованию. Разработчики могут начать применять её уже сегодня, чтобы защитить свои приложения от потенциальных угроз, связанных с выполнением ненадёжного кода.
Итог
Vercel Sandbox с новым межсетевым экраном на основе SNI предоставляет разработчикам мощный инструмент для контроля исходящего трафика. Это позволяет безопасно выполнять ненадёжный код, не опасаясь утечки данных или нежелательных вызовов. Функция уже доступна и может быть настроена динамически, что делает её гибким решением для современных сценариев разработки.