沙箱不变量不可信执行默认没有宿主权限、长期凭据和任意网络;每项能力显式授予、受预算、可撤销、可审计,任务结束后环境与秘密可证明被清理。

代码执行把模型错误升级为系统风险

攻击面包括任意命令与依赖安装、读取源码/密钥/其他租户数据、网络外传与横向移动、CPU/内存/磁盘/进程耗尽,以及持久化后门污染后续任务。即使用户没有恶意,间接 Prompt Injection、恶意仓库和包安装脚本也能驱动同一攻击链。

威胁模型先列资产、信任边界、攻击者输入和失败后果,再选择隔离强度。只保护文件而允许任意网络,机密仍可从环境或元数据服务泄露;只断网而复用污染工作区,会跨任务泄露。

按能力授予,而不是给一个万能 Shell

把读取指定文件、写入工作区、执行受控命令、访问允许域名和调用业务 API 分成独立 Capability。每项绑定 Run/租户/身份、Scope、资源上限和有效期。高风险能力通过策略或人工升级,升级不应顺便放宽其他维度。

能力声明示例
能力默认最小 Scope
文件读取拒绝显式路径、只读、阻止符号链接逃逸
进程执行拒绝命令/镜像、参数策略、时间和进程数
网络出站拒绝代理、协议、域名/IP、请求大小
业务 API拒绝短期主体、动作和资源权限

多层隔离共同缩小爆炸半径

进程与系统调用

使用非特权用户、独立 namespace、系统调用过滤和更强的用户态内核/虚拟机边界。容器共享宿主内核,不能自动等同于强租户隔离;gVisor 等方案通过用户态内核减少对宿主系统调用暴露,但仍需补丁、配置和分层防护。

临时工作区

每任务独立目录,只挂载必要输入;宿主源码、Docker Socket、云凭据目录和其他租户卷不得出现。解析规范路径并防路径穿越、符号链接和硬链接逃逸;导出 Artifact 前做类型、恶意内容和秘密扫描。

默认拒绝出站

通过受控代理执行 DNS、域名/IP、重定向、协议、端口与请求大小策略,阻断环回、链路本地、云元数据和私网。仅域名白名单会被 DNS 重绑定、重定向和解析差异绕过;在实际连接目标上再次校验。

资源配额。限制 CPU、内存、磁盘、inode、进程/线程、打开文件、输出和执行时间。超时后终止整个进程组并回收子进程;只 kill 父 Shell 会留下后台任务。配额耗尽作为独立错误记录,不让模型无限重试。

沙箱身份与业务身份要分开

沙箱计算身份只允许启动/管理隔离环境;业务 Tool 在调用时依据真实用户和策略换取短期、最小 Scope 凭据。不要把宿主环境变量整体传入,也不要让模型读取 Token 后自行拼 HTTP。

凭据优先通过内存或代理注入,不写磁盘、不进入 Context/Trace/Artifact。等待或长任务恢复时重新授权;权限撤销事件应让在途高风险 Capability 失效。密钥轮换和泄露响应必须能定位使用过它的 Run。

环境生命周期决定残留风险

高风险/多租户默认每任务新建并销毁;复用只能在同信任域、强清理且有性能证据时采用。基础镜像固定摘要、最小包集并持续扫描;依赖从受控源获取,安装脚本和原生扩展按不可信代码处理。

沙箱生命周期:清理是可验证步骤,不是异步愿望
Provision固定镜像与能力清单
Execute强制配额和网络策略
Export扫描并最小化 Artifact
Destroy撤权、删卷、杀进程、验证残留

销毁验证覆盖临时卷、缓存、日志、进程、网络会话和凭据;失败环境进入隔离并告警,不能直接回池复用。

危险操作需要可理解的授权

审批展示解析后的命令、工作目录、文件路径、网络目标、身份、预期副作用和有效范围。批准绑定参数与时限,之后命令变化须重新审批。记录实际执行、退出码、资源使用和导出 Artifact,而不仅是模型原始意图。

审计输出限长并脱敏;Shell 输出可能包含秘密或控制字符。禁止以“方便排障”为由记录完整环境变量、文件正文和网络响应。

用对抗任务检验边界

测试路径穿越、符号链接/挂载逃逸、Fork Bomb、磁盘/inode 填满、超时子进程、DNS 重绑定/重定向、私网与元数据访问、依赖投毒、恶意 Artifact 和跨租户缓存残留。每项验证攻击被哪一层阻断,并确认单层失效后仍不能触达关键资产。

验证环境逃逸与资源耗尽测试应在隔离的非生产环境、受控目标和明确停止条件下执行;不能为了验证安全而攻击真实基础设施。

持续记录镜像/内核/Runtime 版本和策略,因为隔离保证会随配置与漏洞变化。上线后监控拒绝事件、配额耗尽、异常出站、销毁失败和 Capability 升级,并定期撤销不再使用的权限。

容器内使用非 root,是否已经足够?
不够。仍共享宿主内核,并需文件、网络、资源、身份、镜像供应链和生命周期多层控制。
为什么网络域名白名单仍可能被绕过?
DNS 重绑定、重定向和解析/连接目标差异可能把允许域名导向私网;代理需在每次解析和实际连接目标上校验。
沙箱复用的验收证据是什么?
不仅是删除目录,还要证明进程、卷、缓存、日志、网络会话和凭据均被清理,并通过跨任务残留读取测试。

资料与事实边界

以下以官方文档、标准、论文和原始工程资料为主。厂商 API、价格、限额与模型能力会变化,落地时仍需按目标版本做能力探测和回归。

  1. OpenAI Agents SDK:Sandbox agents concepts — 沙箱任务、计算提供方、工具与 Runtime 的当前概念边界;该能力可能仍处 beta
  2. gVisor:Security Model — 用户态内核、系统调用拦截与纵深防御边界
  3. Cloudflare Sandbox SDK:Security — 隔离、网络、文件、秘密和生命周期的实现参考
  4. OWASP:Docker Security Cheat Sheet — 非特权、资源限制、Socket 与宿主边界的安全清单