Drop:支持 gVisor 的无根 Linux 沙箱
Drop 为 Linux 应用提供无根隔离
Drop 是一款 Linux 沙箱工具,旨在隔离程序和 AI 编码代理,而无需用户离开其现有的工作环境。与传统容器不同,Drop 利用宿主系统现有的发行版,这意味着沙箱内可以直接使用所有已安装的程序,无需设置容器镜像。
核心架构与安全模型
Drop 利用 Linux 用户命名空间创建一次性隔离环境。它基于以下原语实现安全模型:
- 命名空间隔离: Drop 创建独立的进程、挂载、网络、IPC 和 cgroup 命名空间。这确保沙箱进程拥有独立的进程树和网络栈,与宿主系统隔离。
- 无根执行: 该工具运行不需要 root 权限。它在执行沙箱程序之前会丢弃用户命名空间中的所有能力,防止程序在命名空间内执行特权操作(如绑定挂载)。
- 文件系统虚拟化: 每个环境都有自己可写且持久的主目录。默认情况下,宿主系统原始主目录被隐藏,防止沙箱进程访问 SSH 密钥等敏感文件。
- gVisor 集成: 对于更高的安全需求,Drop 支持 gVisor 用户态内核。这为沙箱应用与宿主内核之间增加了一层隔离,减少了内核漏洞的攻击面。
主要使用场景
Drop 专门针对两种高风险场景进行了优化:
- 隔离编码代理: AI 代理可以使用
--dangerously-skip-permissions标志运行,让 Drop 在操作系统层面强制执行权限。这可以防止幻觉命令(例如rm -rf ~)或提示注入影响实际的宿主主目录或访问本地服务。 - 第三方程序隔离: 通过 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
- 项目