跳到主要内容

沙箱执行

沙箱执行是指把 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 控制

目标策略
公司 APIallowlist,带短期凭证和审计。
公网下载默认禁止;必要时代理缓存和病毒扫描。
内网地址默认禁止,防 SSRF 和横向移动。
元数据服务明确阻断云实例元数据地址。
Webhook默认高风险,需要审批和 DLP。

4.4 浏览器沙箱

浏览器 Agent 需要额外约束:

  • 登录态与任务绑定,任务结束销毁。
  • 高风险点击、提交、购买、发布、删除进入审批。
  • 禁止访问非 allowlist 站点。
  • 下载文件进入隔离区扫描。
  • 截图和 DOM 日志按敏感级别脱敏。

5. 生产流程

  1. 按任务类型定义沙箱 profile,例如 code_readonlydata_analysisbrowser_low_risk
  2. 为每个 profile 设定文件、网络、资源、凭证和工具边界。
  3. 对沙箱镜像做漏洞扫描、依赖锁定和定期重建。
  4. 将沙箱事件接入审计日志:命令摘要、文件读写、网络目标、退出码。
  5. 建立逃逸演练和异常检测:内网扫描、secret 读取、超时、异常输出。

6. 常见反模式

反模式问题
生产 Agent 直接在应用服务器执行代码一次注入可能读取宿主密钥或破坏服务。
容器以特权模式运行容器边界形同虚设。
默认允许公网和内网访问给 SSRF、数据外发和依赖投毒打开通道。
.env 注入沙箱模型生成的代码可能读取和打印密钥。
不限制输出大小和执行时间容易被资源耗尽攻击拖垮。

7. 评测与演练

演练期望
尝试读取 .env~/.ssh/id_rsa文件访问拒绝,记录审计事件。
尝试访问 169.254.169.254 或内网网段网络拒绝并告警。
尝试无限循环或生成超大文件超时或资源限制终止。
尝试下载安装到未知域名依赖网络或策略阻断。
浏览器尝试提交删除表单进入审批或阻断。

指标:

  • 沙箱逃逸用例通过率。
  • 未授权网络目标阻断率。
  • 资源限制触发后的恢复时间。
  • 沙箱镜像漏洞修复 SLA。
  • 高风险浏览器动作审批覆盖率。

8. 安全资料

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。