Drop:支持 gVisor 的无根 Linux 沙箱

Drop 为 Linux 应用提供无根隔离

Drop 是一款 Linux 沙箱工具,旨在隔离程序和 AI 编码代理,而无需用户离开其现有的工作环境。与传统容器不同,Drop 利用宿主系统现有的发行版,这意味着沙箱内可以直接使用所有已安装的程序,无需设置容器镜像。

核心架构与安全模型

Drop 利用 Linux 用户命名空间创建一次性隔离环境。它基于以下原语实现安全模型:

  • 命名空间隔离: Drop 创建独立的进程、挂载、网络、IPC 和 cgroup 命名空间。这确保沙箱进程拥有独立的进程树和网络栈,与宿主系统隔离。
  • 无根执行: 该工具运行不需要 root 权限。它在执行沙箱程序之前会丢弃用户命名空间中的所有能力,防止程序在命名空间内执行特权操作(如绑定挂载)。
  • 文件系统虚拟化: 每个环境都有自己可写且持久的主目录。默认情况下,宿主系统原始主目录被隐藏,防止沙箱进程访问 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 的容器化应用方面存在的挑战。

“到目前为止我对它非常满意……它在便利性和隔离性之间取得了很好的平衡,我希望能够达到默认用它进行所有开发的程度。”

“我一定会试试这个,看看它对我效果如何。让我感到不可思议的是,除了通过内置在框架中的不透明规则之外,大型 AI 公司竟然还没有解决这个问题。”

SUMMARY: Drop 是一款无根 Linux 沙箱,利用 Linux 命名空间和可选的 gVisor 集成,为编码代理和第三方程序提供隔离环境。

TITLE: Drop:支持 gVisor 的无根 Linux 沙箱

Sources

相关

  • Dispatch
  • Dispatch
  • 项目
  • Dispatch
  • 项目