OpenAI 重构 Windows 平台 Codex 沙箱实现方案
OpenAI 为 Codex 编码智能体构建的 Windows 平台沙箱实现方案,经历了从非提权到提权架构重构的完整工程迭代。该 Codex 沙箱实现利用合成 SID、写受限 token 与专用防火墙规则,在无需过度干预的前提下,有效切断了智能体进程对主文件系统的越权修改与外网访问。

Windows 原生隔离工具的局限与原初构想
Codex 的默认运行权限与真实用户一致,这意味着它能执行开发者在本地终端中拥有的一切操作。这种高权限设计虽然为智能体处理长任务提供了便利,但也带来了不可控的潜在风险。为了限制其越权行为,OpenAI 团队首先评估了 Windows 生态中现有的隔离原语。
Windows 原生提供的三种主流隔离方案均未能直接适配 Agent 的工作流:AppContainer 是基于能力的细粒度隔离模型,适合预先明确访问边界的独立应用,但无法容纳 Codex 这种开放式的开发环境;Windows Sandbox 虽然是强隔离的轻量级虚拟机,但要求宿主与客机的文件桥接,且在家庭版 Windows 中不可用;强制性完整性控制(MIC)虽然能通过低完整性进程限制写入,却会不可逆地改变真实开发仓库的信任评级,带来更广泛的主机安全风险。
基于上述评估,工程师团队决定绕过受限于特定工作负载的现成工具,转而利用 Windows 基础安全机制组合出一套定制化的隔离边界。

非提权模式下的边界控制挑战
Codex 团队在初代原型中提出了”非提权沙箱”(unelevated sandbox)设计,核心目标是不向用户申请管理员权限即可完成环境初始化。在文件系统控制层面,方案依赖合成 SID 与受限 token 的组合来划定写入红线。
Windows 的 SID(安全标识符)允许团队创建仅属于沙箱环境的虚构身份,并通过 ACL 精确授予特定目录的读写权限。配合写受限 token(write-restricted token)后,任何写入操作必须同时通过常规用户身份校验与受限 SID 列表校验。这保证了 Codex 只能在配置好的目录中修改文件,而不会被授予越界权限。

网络访问控制起初采用了软件层面的代理劫持策略。团队将 HTTPS_PROXY、GIT_HTTPS_PROXY 等环境变量指向无效地址(127.0.0.1:9),并在 PATH prepend 目录中放置伪造的 SSH 脚本来阻断路径解析。但这种基于环境变量的抑制本质上仅为建议性(advisory)约束。
该设计暴露出明显的架构缺陷:依赖真实主机文件系统的 ACL 修改导致初始化速度受目录拓扑影响严重;环境变量的劫持极易被忽略或绕过,无法抵御实现了自定义 Socket 栈的恶意代码。网络层防护的脆弱性直接导致该原型无法进入最终产品线。
提权架构重构与多进程分权设计
为彻底解决网络拦截问题,方案演进至当前的”提权沙箱”(elevated sandbox)阶段。这一迭代放松了对无提权的坚持,转为在运行时创建专门的 Windows 本地账户:CodexSandboxOffline(受防火墙规则约束)与 CodexSandboxOnline。这一微小的身份边界转移,彻底改变了防火墙策略的匹配维度。
架构层现在被划分为四个独立的二进制模块:主进程 codex.exe 维持无提权状态以处理用户界面与模型通信;codex-windows-sandbox-setup.exe 负责处理所有需要管理员权限的初始化工作,包括创建合成 SID、配置离线账户凭证(通过 DPAPI 加密存储)、以及生成全局防火墙出站阻断规则。

执行层引入了全新的 codex-command-runner.exe 二进制文件。由于 Windows 跨进程创建受限子进程时会遇到权限壁垒,团队将流程拆分为两段:主程序调用 CreateProcessWithLogonW 以沙箱账户身份启动 runner;runner 进程随后提取当前 token、生成受限 token,并调用 CreateProcessAsUserW 在沙箱账户侧安全落地最终的子进程命令。这种进程间边界跨越消除了权限提升时的操作断层。

为了解决新账户读取系统目录(如 C:\Program Files 和 C:\Users)的难题,沙箱初始化流程加入了异步 ACL 授权逻辑。虽然为常用系统路径赋予读取权限会消耗一定计算资源,但团队将其置于后台非阻塞线程执行,确保了用户体验的连贯性。

编码智能体安全架构的平衡法则
该架构最终形成了具备四层隔离边界的成熟设计。与 macOS 上的 Seatbelt 或 Linux 上的 seccomp 等原生系统级隔离不同,Windows 原生并未提供能够直接映射给自主编码智能体的现成组件。团队只能在 AppContainer 的过窄边界、Windows Sandbox 的过重隔离以及 MIC 的不可控副作用之间进行取舍。

Codex 沙箱实现过程表明,Agent 工具链的安全防护必须区别于传统应用程序隔离。经典应用安全倾向于切断网络与写权限,而编码智能体必须在真实开发环境中保持对 Git、Python、包管理者及编译工具的高可用性。这种对兼容性与强制执行力的持续拉扯,构成了此次工程迭代的核心命题。所有架构层面的复杂度——包括拆分独立二进制、创建专属账户与异步处理——均服务于在不阻断 Agent 流的前提下,守住主系统与外网的安全底线。
考虑到 Agent 工具在本地执行的不可预测性,这种基于系统账户与底层防火墙规则的强制隔离模式,或将推动后续开发者工具在 Windows 平台的安全基线上移。随着 Windows 自身隔离原语的演进,Codex 的沙箱实现路径为同类编码智能体提供了可参照的架构蓝图。

评论 0