代码执行把模型错误升级为系统风险
攻击面包括任意命令与依赖安装、读取源码/密钥/其他租户数据、网络外传与横向移动、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。
环境生命周期决定残留风险
高风险/多租户默认每任务新建并销毁;复用只能在同信任域、强清理且有性能证据时采用。基础镜像固定摘要、最小包集并持续扫描;依赖从受控源获取,安装脚本和原生扩展按不可信代码处理。
销毁验证覆盖临时卷、缓存、日志、进程、网络会话和凭据;失败环境进入隔离并告警,不能直接回池复用。
危险操作需要可理解的授权
审批展示解析后的命令、工作目录、文件路径、网络目标、身份、预期副作用和有效范围。批准绑定参数与时限,之后命令变化须重新审批。记录实际执行、退出码、资源使用和导出 Artifact,而不仅是模型原始意图。
审计输出限长并脱敏;Shell 输出可能包含秘密或控制字符。禁止以“方便排障”为由记录完整环境变量、文件正文和网络响应。
用对抗任务检验边界
测试路径穿越、符号链接/挂载逃逸、Fork Bomb、磁盘/inode 填满、超时子进程、DNS 重绑定/重定向、私网与元数据访问、依赖投毒、恶意 Artifact 和跨租户缓存残留。每项验证攻击被哪一层阻断,并确认单层失效后仍不能触达关键资产。
持续记录镜像/内核/Runtime 版本和策略,因为隔离保证会随配置与漏洞变化。上线后监控拒绝事件、配额耗尽、异常出站、销毁失败和 Capability 升级,并定期撤销不再使用的权限。
容器内使用非 root,是否已经足够?
为什么网络域名白名单仍可能被绕过?
沙箱复用的验收证据是什么?
资料与事实边界
以下以官方文档、标准、论文和原始工程资料为主。厂商 API、价格、限额与模型能力会变化,落地时仍需按目标版本做能力探测和回归。
- OpenAI Agents SDK:Sandbox agents concepts — 沙箱任务、计算提供方、工具与 Runtime 的当前概念边界;该能力可能仍处 beta
- gVisor:Security Model — 用户态内核、系统调用拦截与纵深防御边界
- Cloudflare Sandbox SDK:Security — 隔离、网络、文件、秘密和生命周期的实现参考
- OWASP:Docker Security Cheat Sheet — 非特权、资源限制、Socket 与宿主边界的安全清单