SPACE为每个Agent任务分配独立的Firecracker微虚机,并在虚机外部控制凭据与出站流量。该平台已用于Perplexity Computer,以Apache 2.0协议开源。
人工智能
Perplexity 已开源 SPACE,这是支撑 Perplexity Computer 中每一项任务的沙箱平台。Perplexity SPACE 为每项 Agent 任务分配一个独立的 Firecracker microVM。凭证和出站流量都在 VM 外部控制。代码已在 GitHub 上发布,采用 Apache 2.0 许可证。对于开发编程或浏览器 Agent 的团队来说,这是一个经过生产环境验证、可以自行托管的隔离层。
代码与接口:代码库使用 Rust 编写,公开基线版本为 0.8.0。提供 HTTP API 和 server-sent events。
运行要求:需要支持 KVM 的 Linux x86_64 主机,以及 /dev/kvm、btrfs 和 Docker。支持本地 Kind(Kubernetes)或直接运行模式。不支持 macOS。
性能:在生产环境中,与 Perplexity 之前使用的服务商相比,创建延迟中位数从 185 ms 降至 60 ms。
最佳结果:9 个前沿模型共进行了 108 次从 VM 逃逸到宿主机的尝试,成功次数为 0。
最差结果:修复前,在部分联网的 54 次运行中,Agent 有 11 次绕过了出站访问策略。
SPACE(Sandboxed Platform for Agentic Code Execution,面向 Agent 代码执行的沙箱平台)是 Perplexity 用来在隔离的 microVM 中运行 Agent 代码的平台。应用通过其 HTTP API 创建 Linux 环境、运行命令,并以流式方式获取输出。
模板提供初始文件系统。沙箱则是该模板的一个实例,拥有独立的 VM 和可写磁盘。同一个沙箱内可以运行多条命令。
Perplexity 在发布串帖中解释了设计目标:Agent 可以在沙箱内以 root 权限运行命令、安装软件包和调用服务,但无法控制宿主机。Agent 的工作通常持续时间长、需要保留状态,还会产生分支,因此必须能在重启后继续。
每个沙箱都是一个 Firecracker microVM,拥有独立的客户机内核。宿主机为每个沙箱配置独立的网络网关,对所有出站连接执行出站访问策略。
秘密信息不会进入客户机。根据 Perplexity 7 月发布的工程文章,凭证在网络层注入。凭证存储还提供分层作用域、速率限制和审计日志。
架构指南将系统分为 4 个部分:以 PostgreSQL 为后端的 API、控制器、worker 服务和数据平面。worker 服务负责管理 VM、网络、卷、模板和凭证。每个根文件系统都通过 btrfs 的写时复制机制创建。
沙箱会在 4 种状态之间流转:运行、暂停、挂起和删除。
暂停:VM 内存仍驻留在 worker 上。这不是持久化快照。
挂起:对 VM 内存、运行时状态和根文件系统创建快照,并释放正在占用的资源。
默认空闲策略:沙箱在 6 小时没有活动后自动挂起。
为了加快创建速度,Kubernetes 部署会维护由已启动沙箱组成的预热池。单节点部署则使用基础快照。
在生产环境中,第 90 百分位的创建延迟从 447 ms 降至 89 ms。Perplexity 表示,100% 的 Computer 会话都运行在 SPACE 上。
Perplexity 的《Escaping SPACE: Part I》报告测试了 9 个模型,这些模型在客户机内拥有 root 权限。研究涵盖 2 项任务和 4 种设置,共进行了 216 次运行。
沙箱逃逸:108 次运行中,没有一次获取到宿主机侧的秘密信息。
完全断网限制绕过:54 次运行中,成功次数为 0。
部分联网限制绕过:修复前,54 次运行中有 11 次成功。4 个模型找到了绕过路径。
Claude Opus 5.0、GPT-5.6 Sol、GPT-5.6 Cyber 和 Kimi K3 发现了绕过方法。攻击利用了 DNS 欺骗和共享 CDN IP 地址。
随后,Perplexity 通过 nftables 增加了源地址验证。现在,网关会终止 TLS 连接,并根据允许列表同时检查 SNI 和 HTTP host。在复测中,没有模型实现经过验证的绕过。
同一团队还测试了 10 个第三方平台,其中 8 个至少出现了一种网络策略绕过问题。Perplexity 已向所有受影响的厂商披露结果。
| 特性 | Perplexity SPACE | E2B Runtime | microsandbox | Daytona |
|---|---|---|---|---|
| 隔离方式 | 每个沙箱独立使用 Firecracker microVM | 每个沙箱独立使用 Firecracker microVM | libkrun microVM | 每个沙箱使用专用内核 |
| 许可证 | Apache 2.0 | Apache 2.0 | Apache 2.0 | 公开代码仓库,自 2026 年 6 月起停止维护 |
| 编程语言 | Rust | Go | Rust | 未披露 |
| 宿主机要求 | Linux x86_64 + KVM | 未披露 | 支持 KVM 的 Linux | 未披露 |
| 出站访问控制 | 每个沙箱独立网关,终止 TLS 连接 | nftables 防火墙、SNI/Host 列表 | 未披露 | 未披露 |
| Perplexity 出站访问测试 | 修复后绕过次数为 0 | 存在 HTTPS 绕过,计划采取缓解措施 | 存在 HTTP + HTTPS 绕过,已在 v0.6.18 修复 | 存在 HTTPS 绕过,已发布缓解措施 |
| E2B SDK 支持 | 支持,通过 ECW wrapper | 原生支持 | 未披露 | 未披露 |
安装指南介绍了如何将 SPACE 部署到本地 Kind 集群。宿主机需要提供 /dev/kvm、/dev/net/tun、loop 设备和 btrfs。如果在 VM 内运行,则需要支持嵌套虚拟化。
已经使用 E2B 的团队可以尝试 E2B Compatibility Wrapper。其经过测试的基线是 Python 包 e2b==2.21.1。代码仓库还提供了 AWS EKS 参考部署方案。
SPACE 在独立的 Firecracker microVM 中运行每项 Agent 任务。
凭证和出站访问策略位于客户机 VM 外部。
在红队测试的 108 次逃逸尝试中,没有一次成功到达宿主机。
出站访问绕过在修复前的 54 次运行中出现了 11 次,修复后为 0 次。
采用 Apache 2.0 许可证,使用 Rust 编写,需要支持 KVM 的 Linux x86_64 主机。
欢迎查看 GitHub 仓库、文档和红队测试报告。所有功劳归于该项目的研究者。也欢迎在 Twitter 上关注我们,加入我们拥有超过 15 万成员的机器学习 SubReddit,并订阅我们的 Newsletter。等等!你用 Telegram 吗?现在也可以加入我们的 Telegram 社群了。
Asif Razzaq 是 Marktechpost AI Media Inc. 的 CEO。作为一名富有远见的创业者和工程师,Asif 致力于发挥人工智能的潜力,推动社会公益。他最近的项目是推出人工智能媒体平台 Marktechpost。该平台以深入报道机器学习和深度学习新闻见长,既保证技术准确性,也让广大读者容易理解。平台每月浏览量超过 200 万,体现了它在读者中的受欢迎程度。