multikernel/sandlock

The lightest AI sandbox. A process-based sandbox for Linux, no container, no VM, no privilege, no prompt injection

解決的問題

Sandlock 是一個輕量級的 Linux 進程沙箱,無需 root 權限、cgroups 或容器鏡像即可為不可信代碼提供嚴格的隔離。它填補了重量級虛擬機/容器與完全不受保護的執行環境之間的空白,允許用戶在對檔案系統存取、網路連接和系統資源進行精確控制的情況下執行程式。

工作原理

Sandlock 使用 Rust 編寫,並結合使用 Linux 核心功能來強制執行安全邊界:

  • Landlock:用於檔案系統、網路和 IPC 隔離。
  • seccomp-bpf:用於 syscall 過濾。
  • seccomp user notification:允許監督進程即時攔截並處理特定的 syscall,以實施資源限制、虛擬化 /proc 並實現寫時複製 (COW) 檔案系統。
  • COW Filesystem:攔截對工作目錄的寫入操作並將其暫存在上層目錄中,確保在變更提交之前原始檔案受到保護。
  • Transparent Proxy:實現 HTTP 級 ACL(方法、主機和路徑),並可以將憑證或 CA 憑證注入 HTTPS 流量。

適用對象

  • 需要安全執行不可信代碼(例如 AI 代理或第三方腳本)的開發人員。
  • 與容器或 MicroVM 相比,希望獲得快速啟動時間(約 5ms)的用戶。
  • 需要在不管理複雜的容器運行時或 root 存取權限的情況下隔離進程的系統管理員。

亮點

  • 無需 Root 權限:完全在沒有 root 權限或 cgroups 的情況下運行。
  • 細粒度的網路控制:支持 IP 白名單/黑名單、特定連接埠規則和 HTTP 級 ACL。
  • 資源限制:透過 seccomp 通知強制執行記憶體和進程數量限制。
  • 動態策略:具有 policy_fn 功能,允許在執行時檢查 syscall 事件以即時調整權限。
  • 靈活的整合:提供 CLI、Rust 函式庫以及 Python 和 Go 的 SDK。
  • OCI 相容性:包含用於與 containerd、CRI-O 和 Kubernetes 配合使用的 OCI 運行時 shim。