沙箱执行
沙箱执行是指把 Agent 触发的代码、Shell、浏览器、文件处理、插件和外部工具运行在受限环境中,限制文件系统、网络、进程、资源、凭证和副作用范围。它是防止提示注入、恶意文档、代码漏洞和供应链问题扩散到宿主系统的关键控制。
核对日期:2026-05-09。
1. 定义与边界
Agent 沙箱不是“用容器跑一下”这么简单。生产沙箱应覆盖:
| 维度 | 控制 |
|---|---|
| 文件系统 | 工作目录隔离、只读挂载、路径 allowlist、临时文件清理。 |
| 网络 | 默认拒绝、域名/IP allowlist、禁止内网探测、限制 egress。 |
| 进程 | 禁止特权模式、限制 fork、禁止访问宿主 socket。 |
| 资源 | CPU、内存、磁盘、执行时间、并发、输出大小上限。 |
| 凭证 | 不注入长期密钥;按任务发短期、低权限凭证。 |
| 观测 | 记录命令、参数摘要、文件读写、网络目标和退出码。 |
沙箱降低影响面,但不替代权限、审批、DLP 和审计。
2. 攻击机制
常见攻击:
- 读取
.env、SSH key、浏览器 cookie、云元数据服务。 - 通过任意 URL 请求扫描内网或 SSRF。
- 下载安装恶意依赖或执行远程脚本。
- 生成无限循环、超大输出或压缩炸弹。
- 利用浏览器自动化点击危险按钮或下载恶意文件。
3. 风险场景
| 场景 | 风险 | 沙箱重点 |
|---|---|---|
| 代码 Agent | 执行测试、安装依赖、修改文件 | 文件边界、命令 allowlist、网络限制 |
| 数据分析 Agent | 执行 Python、读取 CSV、生成图表 | 数据目录隔离、包依赖限制、输出脱敏 |
| 浏览器 Agent | 登录后台、点击网页、提交表单 | 站点 allowlist、动作审批、下载隔离 |
| 文档处理 Agent | 解析 PDF、Office、图片 OCR | 宏禁用、解析器隔离、文件大小限制 |
| MCP Server | 连接本地资源和外部工具 | Server 权限、网络、凭证和工具列表控制 |
4. 工程防护
4.1 默认拒绝
沙箱策略应默认拒绝高风险能力:
sandbox:
filesystem:
mode: "workspace_only"
allow_write: ["./artifacts", "./tmp"]
deny_read: ["~/.ssh", ".env", "/etc", "/var/run"]
network:
default: "deny"
allow_domains: ["api.company.example", "docs.company.example"]
process:
timeout_seconds: 60
memory_mb: 1024
cpu_quota: "1"
secrets:
inject: false
4.2 命令与依赖控制
- 优先使用固定工具镜像和锁定依赖。
- 禁止
curl | sh、任意包安装、特权容器、宿主目录挂载。 - 对需要联网安装依赖的任务进入审批或专用构建环境。
- 输出文件写入 artifacts 目录,禁止覆盖源文件或系统文件。
4.3 网络 egress 控制
| 目标 | 策略 |
|---|---|
| 公司 API | allowlist,带短期凭证和审计。 |
| 公网下载 | 默认禁止;必要时代理缓存和病毒扫描。 |
| 内网地址 | 默认禁止,防 SSRF 和横向移动。 |
| 元数据服务 | 明确阻断云实例元数据地址。 |
| Webhook | 默认高风险,需要审批和 DLP。 |
4.4 浏览器沙箱
浏览器 Agent 需要额外约束:
- 登录态与任务绑定,任务结束销毁。
- 高风险点击、提交、购买、发布、删除进入审批。
- 禁止访问非 allowlist 站点。
- 下载文件进入隔离区扫描。
- 截图和 DOM 日志按敏感级别脱敏。
5. 生产流程
- 按任务类型定义沙箱 profile,例如
code_readonly、data_analysis、browser_low_risk。 - 为每个 profile 设定文件、网络、资源、凭证和工具边界。
- 对沙箱镜像做漏洞扫描、依赖锁定和定期重建。
- 将沙箱事件接入审计日志:命令摘要、文件读写、网络目标、退出码。
- 建立逃逸演练和异常检测:内网扫描、secret 读取、超时、异常输出。
6. 常见反模式
| 反模式 | 问题 |
|---|---|
| 生产 Agent 直接在应用服务器执行代码 | 一次注入可能读取宿主密钥或破坏服务。 |
| 容器以特权模式运行 | 容器边界形同虚设。 |
| 默认允许公网和内网访问 | 给 SSRF、数据外发和依赖投毒打开通道。 |
把 .env 注入沙箱 | 模型生成的代码可能读取和打印密钥。 |
| 不限制输出大小和执行时间 | 容易被资源耗尽攻击拖垮。 |
7. 评测与演练
| 演练 | 期望 |
|---|---|
尝试读取 .env、~/.ssh/id_rsa | 文件访问拒绝,记录审计事件。 |
尝试访问 169.254.169.254 或内网网段 | 网络拒绝并告警。 |
| 尝试无限循环或生成超大文件 | 超时或资源限制终止。 |
| 尝试下载安装到未知域名依赖 | 网络或策略阻断。 |
| 浏览器尝试提交删除表单 | 进入审批或阻断。 |
指标:
- 沙箱逃逸用例通过率。
- 未授权网络目标阻断率。
- 资源限制触发后的恢复时间。
- 沙箱镜像漏洞修复 SLA。
- 高风险浏览器动作审批覆盖率。
8. 安全资料
- NIST AI RMF: https://www.nist.gov/itl/ai-risk-management-framework
- NIST SP 800-218 Secure Software Development Framework: https://csrc.nist.gov/publications/detail/sp/800-218/final
- NIST SP 800-218: Secure Software Development Framework: https://csrc.nist.gov/pubs/sp/800/218/final
- OWASP Top 10 for LLM Applications 2025: https://owasp.org/www-project-top-10-for-large-language-model-applications/
- AWS Agentic AI Security Controls: https://docs.aws.amazon.com/prescriptive-guidance/latest/agentic-ai-security/introduction.html
- Google Secure AI Framework: https://saif.google/
9. 二次精修:沙箱分层与逃逸演练
9.1 沙箱能力矩阵
| 能力 | 文件沙箱 | 容器沙箱 | 微虚拟机/隔离运行时 | 浏览器沙箱 |
|---|---|---|---|---|
| 文件隔离 | 中 | 高 | 高 | 中 |
| 网络控制 | 低 | 中 | 高 | 中 |
| 进程隔离 | 低 | 中 | 高 | 中 |
| 启动成本 | 低 | 中 | 高 | 中 |
| 适合场景 | 文档转换、临时文件 | 代码执行、依赖安装 | 不可信代码、高敏数据 | 网页自动化、截图、表单 |
9.2 默认拒绝策略
sandbox_policy:
filesystem:
writable_paths: ["/tmp/run"]
readonly_paths: ["/workspace/input"]
denied_paths: ["/", "/home", "/etc", "/var/run"]
network:
default: deny
allow:
- host: "api.company.com"
ports: [443]
process:
timeout_seconds: 60
max_memory_mb: 1024
max_output_mb: 20
secrets:
mount: false
9.3 浏览器 Agent 特有边界
- 自动点击、提交表单、下载文件、上传文件、付款、发帖和删除动作必须是高风险动作。
- 浏览器环境中的 cookie、localStorage、截图和 DOM 内容都可能包含敏感数据。
- 需要区分“浏览网页获取公开信息”和“登录企业系统执行变更”两类完全不同的风险。
- 对外部站点的 prompt injection 应与 RAG 外部文档同等处理。
9.4 逃逸演练用例
| 用例 | 攻击动作 | 期望 |
|---|---|---|
| 读宿主文件 | cat ~/.ssh/id_rsa | 文件策略阻断 |
| 网络扫描 | 访问内网网段或 metadata endpoint | 网络 deny |
| 依赖投毒 | 安装未知包并执行 postinstall | 包源 allowlist 或阻断 |
| 资源耗尽 | 无限循环、压缩炸弹、超大输出 | 超时和配额终止 |
| 浏览器提交 | 自动点击删除/付款按钮 | 人工审批或阻断 |
9.5 运营指标
- 沙箱启动失败率、执行超时率、资源配额触发率。
- 未授权文件访问阻断次数。
- 未授权网络目标阻断次数。
- 沙箱镜像 CVE 修复时长。
- 高风险浏览器动作审批覆盖率。
核对日期:2026-05-09。