OpenAI 为 Windows 上的 Codex 代理构建安全沙箱:从非提升方案到专用用户隔离
2026/05/15 08:00阅读量 2
OpenAI 工程团队为 Windows 平台的 Codex 编程代理设计了专用沙箱,以平衡安全与效率。先期尝试的“非提升沙箱”通过 SID 和 write-restricted token 限制文件写入,并用环境变量阻断网络,但隔离强度不足;后续迭代为“提升沙箱”,引入专用低权限 Windows 用户与 Windows Filtering Platform / 防火墙,实现类似 macOS Seatbelt 或 Linux seccomp 的强制隔离。该方案使 Windows 上的 Codex 具备了与其他平台一致的安全体验,无需用户频繁批准或开启完全访问。
OpenAI 的编程代理 Codex 运行在开发者本地机器上,默认拥有与用户相同的权限,既可高效执行任务,也存在潜在安全风险。此前 Windows 用户只能在“逐个批准每条命令”(效率低)和“开启完全访问模式”(无监管)之间选择,原因在于 Windows 缺乏现成的隔离工具。
现有 Windows 隔离方案均不适用
- AppContainer:基于能力隔离,适用于预先声明所有需求的窄作用域应用,不适合 Codex 这种运行 Shell、Git、Python 等任意工具的开放式工作流。
- Windows Sandbox:一次性轻量虚拟机,隔离性强但无法直接操作宿主机的代码库、工具和环境,且 Windows Home 版本不可用。
- Mandatory Integrity Control(MIC)完整性标签:若将工作区标记为低完整性,则所有低完整性进程均可写入,会改变宿主机的信任模型,风险不可控。
第一个原型:“非提升沙箱”(Unelevated Sandbox)
为避免请求管理员权限,团队利用 Windows 的安全标识符(SID)和写入限制令牌(write-restricted token)来强制文件写入约束:
- 创建合成 SID
sandbox-write,并通过 ACL 授予其对当前工作目录及配置的writable_roots的写入/执行/删除权限,同时显式拒绝.git等敏感目录。 - Codex 命令以包含
Everyone、当前登录会话 SID 和sandbox-writeSID 的写入限制令牌启动。 - 网络访问方面,采用“失败封闭”策略:设置代理环境变量(如
HTTPS_PROXY=http://127.0.0.1:9)、阻止 Git HTTP(S)/SSH 通信,并通过调整PATH和PATHEXT拦截 SSH/SCP 调用。
该方案虽降低了批准频率,但网络限制仅靠环境变量,强度不足,无法阻止绕过代理或二进制替换的攻击。
重新设计:“提升沙箱”(Elevated Sandbox)
为获得真正的强隔离,团队改为需要一次管理员权限的方案:
- 在安装/更新时创建一个专用的低权限 Windows 用户(如
codex-user)。 - 利用 Windows Filtering Platform(或 Windows Firewall)为 Codex 进程设定严格的网络流量规则,只允许与 OpenAI API 及用户明确允许的域名通信。
- 通过文件系统 ACL 仅授予该用户对工作区及指定目录的写入权限,其他路径默认只读。
- Codex 所有命令在该用户上下文中运行,继承其受限的权限和网络规则。
该设计实现了与 macOS Seatbelt 或 Linux seccomp 等效的强制隔离边界,同时保留了 Codex 在用户工作区内自由读写、执行命令的能力。
