SPACE 如何将请求路由到正确的沙盒执行实例
Perplexity 的 SPACE 通过身份检查和签名路由,将 AI 智能体请求绑定到正确的沙盒执行实例。

当有人请 AI 智能体分析电子表格或测试软件时,他们相信它能安全地处理自己的文件和数据。智能体需要隔离的环境,以便在不暴露其他用户数据、不干扰其他用户工作负载的前提下完成这些工作。
随着智能体以更高的自主性承担更复杂的任务,这些环境有助于控制错误,并限制不安全或恶意代码可能造成的损害。沙盒在共享控制平面服务、工作节点和路由基础设施的同时,提供了这种隔离。
这些共享基础设施必须将每项操作交付给获授权处理它的执行实例。陈旧的路由可能会将有效请求发送到另一个沙盒,或发送到正确沙盒的旧执行实例。SPACE 是 Perplexity 的安全沙盒平台,它将每项操作绑定到所选的执行实例,并在转发前检查目标。
几个月来,SPACE 每天处理数百万次执行,每次执行都受唯一的加密身份保护,错误率低于 0.0002%,且未出现任何连接中断。
路由问题
沙盒安全还取决于能否将每个请求送达正确的目标。即使是一次简单的文件读取,也要经过共享基础设施,而这些基础设施必须在沙盒暂停、恢复或在机器之间迁移时持续追踪其运行位置。
一次文件读取要经过多个组件。SPACE 的控制平面将沙盒解析为某个执行实例和工作节点。请求从 node-api 进入,传递给沙盒管理器 sbx-manager,再经由 Unix 套接字到达主机桥接器 spaced-host。桥接器通过 VSOCK(主机到客户机的套接字传输)将请求转发给 Firecracker microVM 内的 spaced-guest。
每项决策所依赖的状态都可能滞后于基础设施的变化。数据库可能仍保留旧的放置位置,缓存的地址可能指向别处,套接字路径也可能被另一个监听器接管。即使连接成功,仍有可能到达错误的目标。一次读取可能暴露其他用户的数据;一次写入可能修改错误的文件系统。
快照又带来了另一个问题。在另一个工作节点上恢复沙盒时,会保留其逻辑身份,但会启动一个新的执行实例。延迟到达的请求或仍然存续的连接可能会到达其前一个执行实例,并以正确的沙盒名义返回旧状态。
沙盒身份与执行身份
SPACE 将用户的环境与为其提供服务的运行时区分开来:
- 沙盒身份:逻辑环境的稳定 ID。调用方授权确定对该沙盒的访问权限。
- 路由/执行身份:所选的运行时实例(incarnation)及其放置位置,包括其所在的工作节点、底层基础设施(substrate)和激活(activation)。
执行代际用于区分不同的运行时实例。在 Kubernetes 上,路由还包含 Pod UID。地址用于定位端点;执行实例身份则决定这些端点是否可以处理该操作。
假设沙盒 S 以执行实例 7 的身份在工作节点 A 上运行,随后以执行实例 8 的身份在工作节点 B 上恢复。为执行实例 8 选定的请求如果到达执行实例 7,就必须失败。仅检查沙盒 ID 无法发现这种不一致。
经签名的执行选择
每个请求都携带经过签名的证明,说明哪个沙盒执行实例可以处理它,以及允许哪些访问。接收组件会先将该证明与自身的运行时身份进行核对,然后才允许请求继续。
完成调用方授权后,SPACE 会签发一个短期有效的签名能力令牌,用于标识沙盒、执行实例、放置位置和允许的访问。公共服务端口的能力令牌还会指定允许的端口和协议。
接收端的沙盒管理器会验证签名,并将完整身份与其在本地持久化的运行时记录进行比对。签名确定了是谁授权了这次选择;比对则确定这次选择是否与接收方相符。
ServicePort 流量在客户机连接打开之前,会在每个沙盒专属的网络网关 netgtw 处接受第二次检查。网关会将身份与受信任的激活状态进行比对,并检查端口和协议。控制操作则进入桥接端点验证环节。
SPACE 使用 Ed25519 签名。能力令牌由控制平面签名密钥签发;工作节点和网关上的公开验证密钥无法签发能力令牌。
能力令牌的有效期为 120 秒,过期判定最多允许 15 秒的时钟偏差。当所选身份与已安装身份不一致时,即使签名有效、令牌未过期,也不足以放行请求。
在错误的目标处拒绝请求
即使请求本身已获授权,接收端工作节点也能发现路由错误。它会检查自己运行的是否为该请求所选的执行实例,如果不一致就拒绝该请求。
如果一个选定由执行 8 处理的请求到达了仍在为执行 7 提供服务的工作节点 A,工作节点 A 会在转发前拒绝该请求。一旦接收方安装了执行 8 的身份,它也会拒绝执行 7 的能力凭证,即使这些凭证尚未过期。
这一保证存在一个重要边界。在工作节点得知退役消息或能力令牌过期之前,针对执行实例 7 的能力令牌仍可能与正在服务执行实例 7 的工作节点相匹配。在更新传播期间,本地强制执行与有限的能力令牌生命周期协同发挥作用。
桥接端点验证
匹配的运行时记录确定了预期的执行实例。控制桥还必须连接到属于该次激活的进程和传输,而不是继承了相同地址的替代者。
沙盒管理器和节点管理器会验证主机桥接器的对端凭证,以及桥接器和 Firecracker 进程的身份(包括启动时间),以检测被复用的 ID 或已更改的可执行文件
传输检查利用套接字所有权、客户机身份和内核套接字证据,将 VSOCK 监听器与预期的 Firecracker 进程绑定在一起。桥接器只在验证通过后才转发操作,并拒绝透明重连。每个新连接都必须重新通过这些检查。
这项验证覆盖 Kubernetes 和直接管理的主机上的 Firecracker 控制桥。ServicePort 流量在其网关处进行执行实例和端口检查;它并不证明客户机内任意应用程序的身份。
流的生命周期与路由恢复
有些连接在沙盒的执行实例变更时仍保持打开,因此身份检查必须延伸到初始请求之外。SPACE 会让与旧执行实例绑定的连接退役,并允许符合条件的操作在相同的安全检查下重新连接到当前执行实例。
终端和文件监视的存续时间可能比打开它们的请求更长。SPACE 将后端流与身份纪元绑定,因此一旦接收方安装了替换的执行实例,流就无法继续附着在前一个执行实例上。
SPACE 会在打开流之前重新检查持久身份。替换其路由或执行实例会取消该流的租约,从而停止输入和输出。
所有权变更不同于执行实例替换。在未变更的 Kubernetes 驻留实例上进行生命周期操作交接时,会保留其路由身份、未过期的能力令牌和流。对于同一路由和执行代际内仅涉及激活尝试的变更,网关也会保留已建立的流。新的打开请求则需要使用更新后的身份。
恢复过程不会削弱这些检查。对于同一沙盒内的实例不匹配,身份比较器可以返回 RefreshRoute;对于不同的沙盒,则返回 Deny。身份被拒绝后,只有可识别的刷新信号才会触发路由修复。传输故障遵循各操作专属的独立恢复规则。无效的签名、用途或端口配置文件仍会被拒绝。
符合条件的操作可以解析当前的执行实例,并进行一次重建后的尝试。缓存仅在仍指向被拒绝的路由时才会被替换,从而防止延迟到达的拒绝结果驱逐较新的条目。原生会话刷新会保留原有的缓存过期时间,从而将路由修复与调用方授权的续期区分开来。
重放规则仍因操作而异。即使面向客户端的 WebSocket 保持打开,替换后的后端也必须重新通过准入检查。
权衡与信任边界
执行实例身份成为安全关键状态。控制平面更新和验证密钥包必须送达各服务组件,而退役在每个接收方安装更新时生效。较短的能力令牌生命周期限制了传播期间的重复使用。
该设计假定身份强制执行已启用,并信任控制平面签名方、工作节点内核以及节点本地管理服务。工作节点 root 权限或特权集群管理员权限遭到攻破的情况不在威胁模型范围之内。桥接验证是本地的进程与传输验证,而非基于硬件的远程证明。
签名验证、运行时比对和桥接验证会给请求路径增加额外工作。它们使用的是本地状态,而不必在每个私有跳点都进行远程授权查询。
行业比较
真正值得比较的是:当一个已获授权的请求到达正确沙盒的错误执行实例时,各平台如何处理。以下发现仅针对所检查的实现,而非平台的整体安全性。SPACE、OpenShell 和 E2B 的检查日期为 2026 年 10 月 8 日:
- OpenShell:通过网关代际与授权检查、后端身份验证以及对活跃监督程序连接的确认,提供了相当的新调用执行实例选择机制和监督程序到运行时的绑定(网关准入、运行时身份验证与绑定)。SPACE 在其整个服务路径中携带经签名的选择结果,并增加了工作节点本地的进程与传输验证;OpenShell 则将相应检查分布在其网关、启动身份和经过身份验证的运行时协议中(运行时设计)。
- E2B:会追踪执行 ID,并按 Firecracker 生命周期隔离代理池,但其入站代理在选择逻辑沙盒和端口时,并不附带可供接收方比对的预期执行实例身份(路由发布、代理准入)。如果较旧的执行实例仍以活跃状态注册在持有匹配凭证的陈旧接收方上,这些检查就无法将其与所选的较新执行实例区分开来,尽管正常的销毁流程会移除路由并关闭与生命周期绑定的连接(凭证、销毁)。
- CubeSandbox:在恢复时修复路由并使缓存失效,但其私有入口使用沙盒范围的凭证,且转发时不附带预期的运行时实例(恢复路由、入口路由)。路由修复缩短了陈旧路由的窗口期;而 SPACE 绑定执行实例的能力令牌还为接收方提供了独立依据,可据此拒绝错误的运行时实例。
以身份作为隔离边界
安全的任务委派取决于能否将每个智能体的工作限制在为其设定的边界之内。microVM 提供隔离,而外围平台则必须确保每个请求和持续中的连接都能到达获授权处理它的执行实例。
SPACE 将执行实例身份纳入这一保护之中。通过检查目标、验证桥接端点,并将连接与授权它们的执行实例绑定,SPACE 能在沙盒暂停、恢复和迁移时始终守住这些边界。
随着基础设施不断演进,我们也在持续推进这项工作。对于 SPACE 和其他沙盒平台而言,安全性要求针对常规路由错误和恶意工作负载测试这些路径,并在测试发现漏洞的地方加固边界。