沙箱执行模式:隔离环境中的 Agent 操作
沙箱执行模式:隔离环境中的 Agent 操作
1. 概念定义
沙箱执行(Sandbox Execution)为 Agent 提供隔离的文件系统和命令执行环境。Agent 在沙箱内的读写、命令执行操作不会影响宿主系统,从而在执行不受信任的代码或命令时保护宿主安全。
核心概念:
- 虚拟路径:Agent 看到的路径(如
/mnt/user-data/)映射到宿主机的物理路径 - Provider 模式:通过统一的 Sandbox 接口,支持多种后端(Local、Docker、Kubernetes)
- 生命周期管理:每个任务 acquire 一个沙箱实例,完成后 release
2. 沙箱模式对比
| 模式 | 隔离级别 | 性能 | 适用场景 |
|---|---|---|---|
| Local | 低(仅目录隔离) | 最快 | 开发调试、受信任环境 |
| Docker | 中(容器隔离) | 中等 | 生产部署、多用户场景 |
| Kubernetes | 高(Pod 隔离) | 较慢 | 大规模并发、企业部署 |
3. 虚拟路径系统
Agent 不直接操作宿主机路径,而是通过虚拟路径:
虚拟路径的好处:
- 可移植性:Agent 代码不依赖具体的宿主机目录结构
- 安全性:路径翻译层作为第二道防线,防止路径穿越攻击
- 一致性:不同沙箱模式(Local/Docker)使用相同的虚拟路径
4. 沙箱工具集
典型的沙箱提供以下工具:
| 工具 | 功能 | 安全考量 |
|---|---|---|
bash | 执行 shell 命令 | 最高风险,仅在 Docker/K8s 模式启用 |
ls | 目录列表 | 仅显示沙箱内目录 |
read_file | 读取文件内容 | 限制读取范围 |
write_file | 写入文件 | 限制写入范围,支持追加模式 |
str_replace | 字符串替换 | 精确修改文件内容 |
5. 陷阱与规避
5.1 Local 模式的安全风险
Local 沙箱仅通过目录隔离,Agent 的 bash 命令可以直接操作宿主机。
规避:Local 模式默认禁用 bash,仅启用文件读写工具。
5.2 路径穿越攻击
Agent 可能尝试通过 ../ 逃逸沙箱目录。
规避:
- 路径翻译层在每次操作前验证目标路径
- 拒绝解析到沙箱根目录之外的路径
5.3 沙箱资源泄漏
沙箱实例未及时 release,导致容器/目录堆积。
规避:
- 中间件在 Agent 运行结束时自动 release
- LRU 缓存限制沙箱实例数量
- 定期清理超时的沙箱