SPACE 如何將請求路由至正確的沙箱執行個體

Perplexity 的 SPACE 透過身分檢查和經簽署的路由,將 AI 代理程式的請求綁定至正確的沙箱執行個體。

Transparent glass cube reflecting orange and blue light, with bright starburst highlights against a dark background.

當有人請 AI 代理程式分析試算表或測試軟件時,他們是信任它能安全地處理自己的檔案和資料。AI 代理程式需要隔離的環境,才能在不洩露其他用戶資料、也不干擾其他用戶工作負載的情況下完成工作。

隨著 AI 代理程式以更高的自主性承擔更複雜的任務,這些環境有助控制錯誤,並限制不安全或惡意程式碼可能造成的損害。沙箱在共用控制平面服務、工作節點及路由基礎設施的同時,提供這種隔離。

這些共用基礎設施必須將每項操作送達獲授權處理該操作的執行個體。過時的路由可能會把有效請求送到另一個沙箱,或送到正確沙箱的較舊執行個體。SPACE 是 Perplexity 的安全沙箱平台,會將每項操作綁定至所選的執行個體,並在轉發前檢查目的地。

數月以來,SPACE 每日處理數以百萬計的執行,每次執行均受獨一無二的加密身分保護,錯誤率低於 0.0002%,而且沒有任何連線中斷。

路由問題

沙箱安全亦取決於能否將每個請求送達正確的目的地。即使是簡單的檔案讀取,也要經過共用基礎設施,而這些基礎設施必須在沙箱暫停、恢復或在機器之間遷移時,持續追蹤沙箱的運行位置。

一次檔案讀取會經過多個元件。SPACE 的控制平面將沙箱解析至某個執行個體和工作節點。請求經 node-api 進入,傳至沙箱管理器 sbx-manager,再經 Unix socket 傳至主機橋接器 spaced-host。橋接器透過 VSOCK(主機至客體的 socket 傳輸)將請求轉發至 Firecracker microVM 內的 spaced-guest。

每項決策都依賴可能落後於基礎設施變更的狀態。資料庫可能保留舊的配置位置,快取的位址可能指向別處,socket 路徑也可能換成另一個監聽器。連線成功仍可能到達錯誤的目的地。讀取可能洩露其他用戶的資料;寫入則可能修改錯誤的檔案系統。

快照帶來另一個問題。在另一個工作節點上恢復沙箱,會保留其邏輯身分,但會啟動新的執行個體。延遲的請求或仍存活的連線可能會到達其前一個執行個體,並以正確的沙箱名稱回傳舊狀態。

沙箱身分與執行身分

SPACE 將用戶的環境與為其提供服務的運行時分開:

  • 沙箱身分:邏輯環境的穩定 ID。呼叫者授權確立對此沙箱的存取權。
  • 路由/執行身分:所選的運行時實例及其部署位置,包括其工作節點、底層平台和啟動實例。

執行世代用於區分不同的運行時實例。在 Kubernetes 上,路由還包括 Pod UID。位址用於定位端點;執行身分則決定這些端點是否可以處理該操作。

假設沙箱 S 在工作節點 A 上以執行個體 7 運行,之後在工作節點 B 上以執行個體 8 恢復。為執行個體 8 所選的請求如果到達執行個體 7,就必須失敗。只檢查沙箱 ID 將無法察覺這種不一致。

經簽署的執行選擇

每個請求都帶有經簽署的證明,說明哪個沙箱執行個體可以處理該請求,以及允許哪些存取。接收端元件會先將該證明與自身的運行時身分比對,然後才讓請求繼續。

完成呼叫者授權後,SPACE 會簽發一個短效、經簽署的能力憑證,標明沙箱、執行個體、配置位置及允許的存取。公開服務連接埠的能力憑證亦會指定允許的連接埠和協定。

接收端的沙箱管理器會驗證簽章,並將完整身分與其在本機持久保存的運行時記錄進行比對。簽章確立了由誰授權這項選擇;比對則確立這項選擇是否與接收端相符。

ServicePort 流量在開啟客體連線前,會在個別沙箱的網絡閘道 netgtw 接受第二次檢查。閘道會將身分與受信任的啟用狀態比對,並檢查連接埠和協定。控制操作則會進入橋接器端點驗證。

SPACE 使用 Ed25519 簽章。控制平面的簽署金鑰負責簽發能力憑證;工作節點和閘道上的公開驗證金鑰則無法簽發能力憑證。

能力憑證的有效期為 120 秒,並容許最多 15 秒的到期時鐘偏差。當所選身分與已安裝的身分不一致時,即使簽章有效、權杖未到期,仍不足以放行。

於錯誤目的地拒絕請求

即使請求本身已獲授權,接收端的工作節點仍能發現路由錯誤。它會檢查自己是否正在運行為該請求所選的執行個體,若兩者不同,便會拒絕該請求。

如果選定給執行 8 的請求到達仍在為執行 7 提供服務的工作節點 A,工作節點 A 會在轉發前拒絕該請求。一旦接收端安裝了執行 8 的身分,即使執行 7 的權能尚未過期,接收端亦會拒絕這些權能。

這項保證有一個重要的界限。在工作節點得知執行個體 7 已退役或能力憑證到期之前,執行個體 7 的能力憑證仍可能與正在服務執行個體 7 的工作節點相符。在更新傳播期間,本機強制執行與有限的能力憑證有效期會相輔相成。

橋接器端點驗證

相符的運行時記錄確立了預定的執行個體。控制橋接器亦必須連接到屬於該次啟用的程序和傳輸,而不是承接了相同位址的替代者。

沙箱和節點管理器會驗證主機橋接器的對等端憑證,以及橋接器和 Firecracker 的程序身分(包括啟動時間),以偵測重用的 ID 或已變更的可執行檔

傳輸檢查會利用 socket 擁有權、客體身分及核心 socket 證據,將 VSOCK 監聽器與預期的 Firecracker 程序綁定。橋接器只會在驗證後轉發操作,並拒絕透明重新連線。每條新連線都必須再次通過檢查。

此驗證涵蓋 Kubernetes 及直接管理主機上的 Firecracker 控制橋接器。ServicePort 流量在其閘道使用執行個體與連接埠檢查;它不會證明客體內任意應用程式的身分。

串流生命週期與路由恢復

有些連線會在沙箱的執行個體變更時保持開啟,因此身分檢查必須延伸至初始請求之後。SPACE 會讓與舊執行個體綁定的連線退役,並讓符合資格的操作在相同的安全檢查下重新連接到目前的執行個體。

終端機和檔案監看的存續時間可能比開啟它們的請求更長。SPACE 將後端串流與身分紀元綁定,因此在接收端安裝替代執行個體後,串流便無法繼續連接到先前的執行個體。

SPACE 在開啟串流前會重新檢查持久身分。替換其路由或執行個體會取消該串流的租約,停止輸入與輸出。

擁有權變更有別於執行個體替換。在未變更的 Kubernetes 常駐資源上進行生命週期操作交接,會保留其路由身分、未到期的能力憑證及串流。對於同一路由和執行世代內僅涉及啟用嘗試的變更,閘道亦會保留已建立的串流。新的開啟操作則須使用更新後的身分。

復原過程會保持這些檢查不變。身分比較器可以在同一沙箱內出現實例不符時傳回 RefreshRoute,或在沙箱不同時傳回 Deny。身分被拒絕後,只有可識別的刷新訊號才會觸發路由修復。傳輸故障則另行遵循按操作而定的復原規則。無效的簽名、用途或連接埠設定檔仍會被拒絕。

符合資格的操作可解析目前的執行個體,並進行一次重建後的嘗試。快取替換以被拒絕的路由為條件,防止延遲的拒絕結果逐出較新的項目。原生工作階段刷新會保留原有的快取到期時間,將路由修復與呼叫者授權續期分開處理。

重播規則仍按個別操作而定。即使面向客戶端的 WebSocket 保持開啟,替代後端仍須再次通過准入檢查。

取捨與信任邊界

執行身分成為對安全至關重要的狀態。控制平面更新和驗證金鑰套件必須送達提供服務的元件,而退役會在每個接收端安裝更新時生效。短暫的能力憑證有效期可限制傳播期間的重用。

此設計假設已啟用身分強制執行,並信任控制平面簽署者、工作節點核心及節點本機管理服務。工作節點 root 權限或具特權的叢集管理員遭入侵,不在威脅模型範圍內。橋接器驗證屬於本機程序與傳輸驗證,而非基於硬件的遠端證明。

簽章驗證、運行時比對及橋接器驗證會增加請求路徑上的工作量。這些檢查使用本機狀態,而非在每個私有中繼點進行遠端授權查詢。

業界比較

值得比較的是,各平台如何處理已獲授權的請求到達正確沙箱的錯誤執行個體。這些發現只涉及所檢視的實作,並不代表整體平台安全性。我們於 2026 年 10 月 8 日檢視了 SPACE、OpenShell 及 E2B:

  • OpenShell:透過閘道世代與授權檢查、後端身分驗證,以及已確認的活躍監督程式連線,提供相近的新呼叫執行個體選擇機制,以及監督程式至運行時的綁定(閘道准入、運行時驗證與綁定)。SPACE 在其服務路徑中全程傳遞經簽署的選擇,並加入工作節點本機的程序與傳輸驗證;OpenShell 則將相應的檢查分散於其閘道、啟動身分及經驗證的運行時協定(運行時設計)。
  • E2B:會追蹤執行 ID,並按 Firecracker 生命週期隔離代理伺服器集區,但其入站代理伺服器只選擇邏輯沙箱和連接埠,沒有可供接收端比對的預期執行身分(路由發佈、代理伺服器准入)。若較舊的執行個體在過時的接收端上仍登記為運行中,且憑證相符,這些檢查便無法將其與所選的較新執行個體區分開來,儘管正常的拆除程序會移除路由並關閉與生命週期綁定的連線(憑證、拆除)。
  • CubeSandbox:恢復時會修復路由並使快取失效,但私有入站流量使用沙箱範圍的憑證,並在沒有預期運行時實例的情況下轉發(恢復路由、入站路由)。修復路由可縮短過時路由的時間窗口;SPACE 與執行個體綁定的能力憑證,亦讓接收端有獨立依據拒絕錯誤的實例。

以身分作為隔離界限

安全的委派,取決於能否讓每個 AI 代理程式的工作維持在預定的界限之內。microVM 提供隔離,而周邊平台則必須確保每個請求和持續中的連線,都能送達獲授權處理它們的執行個體。

SPACE 將執行身分納入這項保護之中。透過檢查目的地、驗證橋接器端點,以及將連線與授權它們的執行個體綁定,SPACE 可在沙箱暫停、恢復及遷移時維持這些界限。

隨著基礎設施不斷演進,我們會持續推進這項工作。對 SPACE 及其他沙箱平台而言,安全性需要針對日常路由錯誤和惡意工作負載測試這些路徑,並在測試發現不足之處強化界限。

  1. 逃離 SPACE:第一部分研究2026年9月23日
  2. 打造 SPACE:為長期運行的代理提供安全且高效的執行階段研究2026年7月15日
  3. 適用於代理程式的安全沙箱新聞2026年7月15日