OpenAI打造安全Windows沙盒提升Codex编码助手可靠性

25 阅读4分钟视野
OpenAI打造安全Windows沙盒提升Codex编码助手可靠性

背景与挑战

Codex 作为 OpenAI 的代码生成代理,默认以当前登录用户的权限在本地执行命令。虽然这种设计能完整复现开发者的工作流,却也带来潜在的安全风险:恶意生成的脚本可能读取敏感文件、修改代码库,甚至发起网络请求。Windows 原生缺乏类似 macOS Seatbelt 或 Linux seccomp 的细粒度沙盒机制,OpenAI 必须自行构建一套既能限制文件写入、网络访问,又不妨碍日常开发的安全层。

初代原型:无提升沙盒

文件写入限制

  • 利用 SID(安全标识符) 创建专属的 sandbox-write 标识。
  • 通过 写受限令牌(write‑restricted token) 将该 SID 加入受限 SID 列表,实现双重写入检查。
  • 仅在工作目录及 config.toml 中声明的 writable_roots 赋予写、执行、删除权限,其余路径严格拒绝。

网络访问限制

  • 通过环境变量将 HTTPS_PROXYALL_PROXY 等指向本地不可达端口(127.0.0.1:9),并在 PATH 前置自定义的 denybin 目录,以阻断常用工具(Git、SSH)的网络调用。
  • 该方案属于“软限制”,只能阻止遵循环境变量的工具,无法防止直接使用套接字的程序。

评估结果

  • 优势:无需管理员权限即可部署,文件写入控制精准。
  • 不足:网络封禁不可靠、ACL 设置耗时、对工作空间的完整性产生副作用。

进化版:提升沙盒

为解决网络安全短板,团队引入 提升权限(elevated) 的二次方案。核心思路是为每一次 Codex 执行创建独立的本地用户,并通过 Windows 防火墙对该用户的出站流量进行强制拦截。

关键组件

  1. 两类沙盒用户
    • CodexSandboxOffline:绑定防火墙阻断规则,仅用于不需要网络的命令。
    • CodexSandboxOnline:不受防火墙限制,供明确需要网络的操作使用。
  2. 防火墙规则:在管理员权限下为 CodexSandboxOffline 创建阻止所有出站流量的规则,规则基于用户而非进程路径,实现细粒度控制。
  3. 命令运行器:新增 codex-command-runner.exe,先以沙盒用户登录,再在其内部创建受限令牌并启动实际子进程,彻底隔离真实用户与沙盒进程的权限链。

设置流程

  • 创建合成 SID(如 sandbox-write)。
  • 创建上述两类本地用户并使用 DPAPI 加密存储凭据。
  • 为常用系统目录(C:\UsersC:\Program Files 等)授予只读 ACL,确保沙盒进程能够正常读取但无法写入。
  • 异步执行大规模 ACL 更新,避免阻塞用户交互。

实际效果与展望

提升沙盒在安全性上实现了 网络全拦截,即便恶意代码尝试直接打开套接字也会被防火墙阻止;文件写入仍保持细粒度控制,且通过专属用户避免了对真实用户工作空间的权限污染。虽然引入了管理员授权的设置步骤,但整体用户体验已接近原生 Codex 使用感受。

OpenAI 表示,未来将继续优化 ACL 更新速度,并探索在不提升权限的前提下利用 Windows 新增的安全特性(如 Windows Sandbox 改进版)进一步简化部署流程。该沙盒方案也为其他 AI 编码助手提供了可借鉴的安全参考框架。

“安全与生产力的平衡是自动化编码的关键,只有在可靠的执行环境中,AI 才能真正成为开发者的助力。” — OpenAI 工程团队

本文是对第三方新闻源的主观解读。消息可能出现过时、不准确、歧义或错误的地方,仅供参考使用。点击此处查看消息源。