第四阶段 · 安全与人类控制第 16 / 30 章
本章目录

第 16 章 · 沙箱、文件与网络

本章目标:理解沙箱如何把权限意图落实为操作系统边界,并学会分别设计文件、进程和网络访问。

1. 沙箱防的不是“坏模型”

模型可能因为错误推理、提示词注入或参数拼接做出危险动作。沙箱不判断动机,只限制进程能访问的资源。这种机械边界比提示词里的“请勿访问”可靠,因为模型无法通过换一种措辞取消操作系统规则。

本地 Agent 常见模式是 read-only、workspace-write 和 full access。read-only 适合探索与审查;workspace-write 允许在指定根目录修改并默认关闭网络;full access 只适合明确受控环境。

2. 文件系统边界

沙箱需要定义可读根、可写根和受保护路径。.git、SSH 配置、云凭据、浏览器资料和用户主目录通常应特殊保护。即使 workspace 可写,版本控制元数据也不应被普通模型命令随意修改。

路径检查属于应用层,操作系统沙箱属于执行层。两者同时存在时,即使某个工具漏掉路径校验,进程仍难以越界。

3. 网络为什么默认关闭

联网扩大了数据泄露、供应链和提示词注入风险。一个仓库里的恶意说明可能诱导 Agent 上传源代码;包管理器可能执行第三方安装脚本;访问网页会把不可信文本带回模型上下文。

需要联网时,优先使用域名允许列表而不是开放全部出口。规则要处理精确域名、子域名、重定向、DNS 解析到私有地址和本地端口。允许 example.com 不应自动允许任意看起来相似的域名。

4. Setup 与 Agent 阶段分离

云端执行常把环境准备和 Agent 工作分成两阶段。Setup 可以联网安装依赖并使用临时秘密;Agent 阶段默认离线,秘密在进入模型可操作阶段前移除。这样既能准备环境,又减少任务运行时的攻击面。

本地也可以借鉴:由人类或可信脚本预装依赖,Agent 只运行锁定版本;不要每次遇到缺包就允许模型自由联网安装最新版本。

5. 本地服务与回环地址

前端测试需要 Agent 访问 localhost,这与访问公网不同。网络策略可以显式允许某个回环端口,同时继续拒绝其他私有网段。宽泛允许本地网络可能暴露数据库、容器守护进程和内部管理接口。

Unix socket 也属于高风险通道。能访问 Docker socket 的进程通常等于拥有宿主高权限,因此不能因为它不是“网络”就忽略。

6. 验证沙箱

不要只读配置文件,要实际运行探针:能否写 workspace,能否写父目录,能否连接允许域名,能否访问被拒绝路径。测试结果应进入自动化回归,因为系统升级和平台差异可能改变边界。

边界扩大原则

遇到权限拒绝时,先寻找更窄的替代方案:允许一个目录、一条命令或一个域名,而不是切换到 full access。权限应随任务最小化,而不是随挫折最大化。