Sakhanda Wire
NVDA $214.13 -1.43% MSFT $529.05 -1.93% GOOGL $340.59 -2.47% META $709.33 -3.72% AMZN $250.00 -1.87%
← К новостям

Perplexity открыла исходный код SPACE — песочницы с микроVM Firecracker для ИИ-агентов

Perplexity открыла исходный код SPACE — платформы-песочницы, лежащей в основе каждой задачи в Perplexity Computer. Песочница Perplexity SPACE предоставляет каждой задаче агента собственную микроВМ Firecracker. Учетные данные и исходящий трафик контролируются за пределами этой ВМ. Код опубликован на условиях лицензии Apache 2.0 на GitHub. Для команд, создающих агентов для программирования или веб-серфинга, это протестированный в production слой изоляции, который можно развернуть самостоятельно.

Кратко

  • Размер: кодовая база на Rust, релиз 0.8.0 — общедоступная базовая версия. HTTP API и события, отправляемые сервером.
  • Запускается на: хосте Linux x86_64 с KVM, /dev/kvm, btrfs и Docker. Локальный Kind (Kubernetes) или прямой режим. macOS не поддерживается.
  • Производительность: в production медианная задержка создания снизилась с 185 до 60 мс по сравнению с предыдущим провайдером Perplexity.
  • Лучший результат: 0 из 108 попыток выхода из ВМ на хост оказались успешными при тестировании 9 передовых моделей.
  • Худший результат: до внесения исправлений агенты обходили политику исходящего трафика в 11 из 54 запусков с частичным доступом к сети.

Что такое Perplexity SPACE?

SPACE (Sandboxed Platform for Agentic Code Execution) — это платформа Perplexity для запуска кода агентов в изолированных микроВМ. Приложения обращаются к ее HTTP API, чтобы создавать окружения Linux, выполнять команды и передавать вывод в потоковом режиме.

Шаблон предоставляет исходную файловую систему. Песочница — это один экземпляр такого шаблона с собственной ВМ и доступным для записи диском. В одной песочнице можно выполнять множество команд.

В публикации о запуске Perplexity объясняется цель такой конструкции. Агенты выполняют команды, устанавливают пакеты и обращаются к сервисам с правами root внутри песочницы. Хост остается вне контроля гостевой системы. Работа агентов является длительной, сохраняющей состояние и ветвящейся, поэтому она должна переживать перезапуски.

Как SPACE изолирует агентов?

Каждая песочница — это микроВМ Firecracker с собственным гостевым ядром. Сетевой шлюз на хосте, выделенный для каждой песочницы, применяет политику исходящего трафика к каждому внешнему соединению.

Секреты никогда не попадают в гостевую систему. Согласно июльской инженерной публикации Perplexity, учетные данные внедряются на сетевом уровне. Хранилище учетных данных поддерживает иерархическое определение областей действия, ограничения частоты запросов и журналирование аудита.

В руководстве по архитектуре система разделена на 4 части. Это API на базе PostgreSQL, контроллеры, рабочие сервисы и плоскость данных. Рабочие сервисы управляют ВМ, сетями, томами, шаблонами и учетными данными. btrfs с копированием при записи создает каждую корневую файловую систему.

Как работают приостановка, замораживание и восстановление?

Песочницы проходят через 4 состояния: работа, пауза, приостановка и удаление.

  • Пауза: память ВМ остается размещенной на рабочем узле. Это не долговечный снимок.
  • Приостановка: создаются снимки памяти ВМ, состояния среды выполнения и корневой файловой системы. Активные ресурсы освобождаются.
  • Простой по умолчанию: песочницы приостанавливаются через 6 часов бездействия.

Для ускорения создания развертывания Kubernetes используют пулы предварительно запущенных песочниц. В конфигурациях с одним узлом вместо этого используются базовые снимки.

В production задержка создания на 90-м процентиле снизилась с 447 до 89 мс. Perplexity сообщает, что 100% сеансов Computer работают на SPACE.

Выдержала ли SPACE тест красной команды?

В отчете Perplexity «Побег из SPACE: часть I» протестированы 9 моделей с правами root внутри гостевой системы. В исследовании проведено 216 запусков для 2 задач и 4 конфигураций.

  • Выход из песочницы: в 0 из 108 запусков удалось получить доступ к секрету на стороне хоста.
  • Обход запрета на сеть: успешных попыток не было — 0 из 54.
  • Обход при частичном доступе к сети: до внесения исправлений успешными оказались 11 из 54 запусков. Путь обхода нашли 4 модели.

Claude Opus 5.0, GPT-5.6 Sol, GPT-5.6 Cyber и Kimi K3 нашли способы обхода. В атаках использовались подмена DNS и общие IP-адреса CDN.

Затем Perplexity добавила проверку исходного адреса с помощью nftables. Теперь шлюз завершает TLS-соединение и проверяет SNI и HTTP host по списку разрешенных значений. В повторном тестировании ни одна модель не продемонстрировала подтвержденный обход.

Та же команда протестировала 10 сторонних платформ. На 8 из них был обнаружен как минимум один способ обхода сетевой политики. Perplexity раскрыла результаты каждому затронутому поставщику.

Назад</button><button class="btn" id="psx-next">Следующее состояние ▶</button></div> </div> <div class="pane" data-p="2"> <div class="bars" id="psx-rt"></div> <div class="note">9 моделей, 216 запусков, права root внутри гостевой системы. Исправления: проверка исходного адреса с помощью nftables, завершение TLS с проверкой SNI и Host по списку разрешенных значений. Источник: Perplexity, «Побег из SPACE: часть I» (23 сентября 2026 г.).</div> </div> <div class="pane" data-p="3"> <div class="bars" id="psx-lat"></div> <div class="note">Трафик в первую неделю запуска в production, SPACE по сравнению с предыдущим провайдером песочниц Perplexity. Меньше — лучше. Источник: инженерный блог Perplexity (15 июля 2026 г.).</div> </div> <div class="pane" data-p="4"> <div class="tw"><table> <tr><th>Возможность</th><th>SPACE</th><th>E2B Runtime</th><th>microsandbox</th></tr> <tr><td>Изоляция</td><td>МикроВМ Firecracker</td><td>МикроВМ Firecracker</td><td>МикроВМ libkrun</td></tr> <tr><td>Лицензия</td><td>Apache 2.0</td><td>Apache 2.0</td><td>Apache 2.0</td></tr> <tr><td>Язык</td><td>Rust</td><td>Go</td><td>Rust</td></tr> <tr><td>Тест исходящего трафика Perplexity</td><td>0 обходов после исправления</td><td>Обход HTTPS, планируется устранение</td><td>Обход HTTP + HTTPS, исправлено в v0.6.18</td></tr> </table></div> <div class="note">Результаты тестов исходящего трафика Perplexity, проведенных с 31 августа по 1 сентября 2026 г., для протестированных версий.</div> </div> <div class="ft"><span>Источники: github.com/perplexityai/SPACE · perplexity.ai/hub/blog</span><b>© Marktechpost</b></div> </div> <script> (function(){ var R=document.getElementById('pplx-space-x'); function post(){try{parent.postMessage({psxHeight:R.offsetHeight+40},'*')}catch(e){}} var tabs=R.querySelectorAll('.tab'),panes=R.querySelectorAll('.pane'); var D=['<b>Гостевая микроВМ.</b> Каждая задача получает собственную микроВМ Firecracker с собственным гостевым ядром. Агент может выполнять команды и устанавливать пакеты с правами root. Хост остается вне его контроля.', '<b>Шлюз для каждой песочницы.</b> Весь исходящий трафик гостевой системы проходит через шлюз на стороне хоста. Теперь он завершает TLS-соединение и требует, чтобы и SNI, и HTTP Host были разрешены в списке и сопоставлены с DNS.', '<b>Внешние сервисы.</b> Учетные данные никогда не попадают в гостевую систему. Они внедряются на сетевом уровне с учетом областей действия, ограничений частоты запросов и журналирования аудита.']; var det=document.getElementById('psx-detail'),boxes=R.querySelectorAll('.box'); function showD(i){boxes.forEach(function(b,j){b.classList.toggle('act',i==j)});det.innerHTML=D[i];post()} boxes.forEach(function(b){b.addEventListener('click',function(){showD(+b.dataset.d)});b.addEventListener('mouseenter',function(){showD(+b.dataset.d)})}); showD(0); var L=['<b>Работа.</b> Процессы выполняются. Оперативная память ВМ и доступная для записи файловая система сохраняются.', '<b>Пауза.</b> Выполнение останавливается. Память ВМ остается размещенной на рабочем узле. Это не долговечный снимок.', '<b>Приостановка.</b> Создаются снимки памяти ВМ, состояния среды выполнения и корневой файловой системы. Активные ресурсы ВМ освобождаются. По умолчанию: приостановка после 6 часов простоя.', '<b>Удаление.</b> Песочница больше недоступна через API.']; var li=0,sts=R.querySelectorAll('.st'),ld=document.getElementById('psx-life'); function life(){sts.forEach(function(s,j){s.classList.toggle('on',j==li)});ld.innerHTML=L[li];post()} document.getElementById('psx-next').onclick=function(){li=(li+1)%4;life()}; document.getElementById('psx-prev').onclick=function(){li=(li+3)%4;life()}; sts.forEach(function(s,j){s.style.cursor='pointer';s.onclick=function(){li=j;life()}}); life(); function bars(el,data){el.innerHTML=data.map(function(d){return '<div class="row"><div class="lbl"><span>'+d[0]+'</span><em>'+d[1]+'</em></div><div class="track"><div class="fill" data-w="'+d[2]+'" style="background:'+d[3]+'"></div></div></div>'}).join('')} bars(document.getElementById('psx-rt'),[ ['Выход из ВМ на хост','0 из 108 запусков',1.5,'#76B900'], ['Обход сети, без сети','0 из 54 запусков',1.5,'#76B900'], ['Обход сети, частичная сеть (до исправления)','11 из 54 запусков',20.4,'#E5675A'], ['Обход сети, после исправления','0 подтвержденных обходов',1.5,'#76B900'], ['Сторонние платформы с обходом','8 из 10',80,'#1FB8CD']]); bars(document.getElementById('psx-lat'),[ ['Медианное создание, предыдущий провайдер','185 мс',41.4,'#5E5B66'], ['Медианное создание, SPACE','60 мс',13.4,'#20808D'], ['Создание p90, предыдущий провайдер','447 мс',100,'#5E5B66'], ['Создание p90, SPACE','89 мс',19.9,'#20808D']]); function anim(p){p.querySelectorAll('.fill').forEach(function(f){f.style.width='0';setTimeout(function(){f.style.width=f.dataset.w+'%'},60)})} tabs.forEach(function(t){t.onclick=function(){var i=+t.dataset.t;tabs.forEach(function(x,j){x.classList.toggle('on',j==i)});panes.forEach(function(p,j){p.classList.toggle('on',j==i)});anim(panes[i]);post()}}); window.addEventListener('load',post);window.addEventListener('resize',post);setTimeout(post,300); })(); </script> </body> </html> ">

Как SPACE сравнивается с другими открытыми песочницами?

ВозможностьPerplexity SPACEE2B RuntimemicrosandboxDaytona
ИзоляцияМикроВМ Firecracker для каждой песочницыМикроВМ Firecracker для каждой песочницыМикроВМ libkrunВыделенное ядро для каждой песочницы
ЛицензияApache 2.0Apache 2.0Apache 2.0Публичный репозиторий, не поддерживается с июня 2026 года
ЯзыкRustGoRustНе раскрывается
Требования к хостуLinux x86_64 + KVMНе раскрываетсяLinux с KVMНе раскрывается
Контроль исходящего трафикаШлюз для каждой песочницы, завершение TLSМежсетевой экран nftables, списки SNI/HostНе раскрываетсяНе раскрывается
Тест исходящего трафика Perplexity0 обходов после исправленияОбход HTTPS, планируется устранениеОбход HTTP + HTTPS, исправлено в v0.6.18Обход HTTPS, устранение выпущено
Поддержка E2B SDKДа, через оболочку ECWВстроеннаяНе раскрываетсяНе раскрывается

Как разработчики развертывают SPACE?

Руководство по установке развертывает SPACE в локальном кластере Kind. Хосту требуются /dev/kvm, /dev/net/tun, loop-устройства и btrfs. Для запуска внутри ВМ необходима вложенная виртуализация.

Команды, уже использующие E2B, могут попробовать оболочку совместимости E2B. Ее протестированная базовая версия — пакет Python e2b==2.21.1. Эталонное развертывание AWS EKS входит в репозиторий.

Основные выводы

  • SPACE запускает каждую задачу агента в собственной микроВМ Firecracker.
  • Учетные данные и политика исходящего трафика находятся за пределами гостевой ВМ.
  • В ходе тестов красной команды 0 из 108 попыток выхода получили доступ к хосту.
  • До исправлений обход исходящего трафика был зафиксирован в 11 из 54 запусков, после исправлений — в 0.
  • Apache 2.0, Rust, требуется хост Linux x86_64 с KVM.

Посмотрите репозиторий на GitHub, документацию и отчет красной команды. Вся заслуга принадлежит исследователю этого проекта. Также подписывайтесь на нас в Twitter и не забудьте присоединиться к нашему ML-сообществу на Reddit с более чем 150 тыс. участников и подписаться на нашу рассылку. Постойте! Вы есть в Telegram? теперь вы также можете присоединиться к нам в Telegram.

Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.

Впервые опубликовано изданием MarkTechPost

Читать оригинал на MarkTechPost ↗

Текст и изображения принадлежат MarkTechPost и приводятся здесь с указанием авторства и ссылкой на оригинальную публикацию.

← К новостям

Ещё новости

Все последние новости