Drop:具備 gVisor 支援的免 root Linux 沙箱

Drop 為 Linux 應用程式提供免 root 隔離

Drop 是一款 Linux 沙箱工具,旨在隔離程式與 AI 編碼代理,且無需使用者離開其現有工作環境。與傳統容器不同,Drop 利用主機既有的發行版,這表示所有先前安裝的程式在沙箱內皆可使用,無需設定容器映像。

核心架構與安全模型

Drop 利用 Linux 使用者命名空間來建立一次性、隔離的環境。它實作的安全模型基於以下基礎元件:

  • 命名空間隔離: Drop 建立獨立的程序、掛載、網路、IPC 與 cgroup 命名空間。這確保沙箱化程序擁有自己的程序樹與網路堆疊,與主機隔離。
  • 免 root 執行: 此工具不需 root 權限即可執行。它在執行沙箱化程式前會丟棄所有使用者命名空間能力,防止程式在命名空間內執行如 bind mount 等特權操作。
  • 檔案系統虛擬化: 每個環境都被指派一個可寫入且持久的專屬家目錄。主機原始家目錄預設為隱藏,防止沙箱化程序存取如 SSH 金鑰等敏感檔案。
  • gVisor 整合: 對於較高的安全需求,Drop 支援 gVisor 使用者空間核心。這在沙箱化應用程式與主機核心之間增加一層隔離,減少核心漏洞的攻擊面。

主要使用案例

Drop 特別針對兩種高風險情境進行最佳化:

  1. 隔離編碼代理: AI 代理可使用 --dangerously-skip-permissions 旗標執行,讓 Drop 在作業系統層級強制執行權限。這可防止幻覺指令(例如 rm -rf ~)或提示注入影響實際主機家目錄或存取本機服務。
  2. 第三方程式隔離: 透過 PyPI 或 npm 等套件管理器安裝的程式可在 Drop 內執行,以控制供應鏈攻擊或惡意套件的損害。

設定與工作流程

Drop 使用高階 TOML 設定語言來定義哪些檔案、目錄與本機網路服務會暴露給沙箱。為了簡化工作流程,Drop 實作了一個跨環境共用的基礎設定,讓使用者無需重複設定即可建立新的隔離空間。

社群觀點與比較

Hacker News 社群的使用者與開發者將 Drop 與其他隔離工具進行比較,並強調了幾個取捨:

  • 與 Bubblewrap (bwrap) 的比較: 雖然兩者都使用命名空間,但 Drop 提供了更結構化的環境管理系統(類似 Python 的 virtualenv)以及可選的 gVisor 支援,而 bwrap 通常用於臨時、手動設定。
  • 與容器(Docker/Podman)的比較: 使用者指出,Drop 相較於標準容器的主要優勢在於沒有映像管理負擔;它使用主機既有的二進位檔與函式庫。
  • 目前限制: 早期採用者已發現開發具硬體加速的 GUI 應用程式(例如遊戲)以及在沙箱內管理需要 docker-compose 的容器化應用程式時存在挑戰。

「到目前為止我對它非常滿意……它在便利性與隔離性之間取得了很好的平衡,我希望未來能預設用它來進行所有開發。」

「我一定會試試這個,看看它對我有沒有用。讓我覺得不可思議的是,除了透過內建於 harness 中的不透明規則之外,大型 AI 公司竟然還沒有人解決這個問題。」

Sources

相關

  • Dispatch
  • Dispatch
  • 專案
  • Dispatch
  • 專案