A deep dive on agent sandboxes
4 months ago
- #coding-agents
- #sandboxing
- #security
- 现代编程代理之所以强大,源于其访问权限,其中bash是它们最具表现力也最危险的工具。
- 在虚拟化环境(如容器)中运行编程代理是最安全的做法,但实际应用却很少见。
- 命令白名单机制(如Claude Code和Cursor采用)在权限与风险间取得平衡,但存在脆弱性和使用不便的缺点。
- Codex CLI提供三种权限模式:只读模式、自动模式(当前默认)和完全访问模式,各自具有不同的限制级别。
- Codex的自动模式最值得关注,它在无需显式容器化的情况下限制网络和外部工作区访问。
- Codex采用macOS的Seatbelt和Linux的Landlock+seccomp进行沙箱隔离,在操作系统层面实施限制。
- Linux实现更为复杂:Landlock负责文件系统限制,seccomp处理系统调用过滤。
- 子进程管理机制确保沙箱进程被正确隔离和清理,同时控制环境变量传递。
- 命令白名单和信任列表将命令分类为安全命令、需审批命令和需非沙箱执行的命令。
- 调试工具如`codex debug seatbelt`和`codex debug landlock`可用于测试沙箱行为。
- Codex采用的原生操作系统沙箱技术实现了低开销的高效隔离,这对安全执行代理程序至关重要。