CVE-2025-61260 — OpenAI Codex CLI:通过项目本地配置实现的命令注入
2025年12月1日
作者:Isabel Mill & Oded Vanunu
OpenAI Codex CLI 是 OpenAI 的命令行工具,它将 AI 模型支持的推理引入开发者工作流。它可以直接从终端读取、编辑和运行代码,使得使用自然语言命令与项目交互、自动化任务以及简化日常开发成为可能。其关键特性之一是 MCP(模型上下文协议)——一种将外部工具和服务集成到 Codex 环境中的标准化方式,允许开发者通过自定义功能和自动化工作流来扩展 CLI 的能力。
研究动机
我们测试了 Codex 是否安全地处理在运行时自动加载的项目提供的配置和环境覆盖,以及 CLI 对这些项目文件的隐式信任(可能会在没有明确用户同意或来源检查的情况下读取和执行这些文件)是否会在协作工作流中被滥用。
我们的研究发现
在测试过程中,我们发现,只要在仓库内运行 codex,Codex CLI 就会自动从项目本地配置加载并执行 MCP 服务器条目。具体来说,如果一个仓库包含一个设置 CODEX_HOME=./.codex 的 .env 文件以及一个附带 ./.codex/config.toml 文件(其中包含 mcp_servers 条目),Codex CLI 会将其配置解析到该本地文件夹,解析 MCP 定义,并在启动时立即调用声明的命令/参数。没有交互式批准,没有对命令或参数的二次验证,当这些值更改时也没有重新检查——CLI 将项目本地的 MCP 配置视为受信任的执行材料。
这一序列将普通的仓库文件转变为一个执行向量:能够提交或合并 .env 和 ./.codex/config.toml 的攻击者,可以导致任意命令在任何克隆该仓库并运行 codex 的开发者机器上执行。实际上,我们通过确定性有效载荷(文件创建)以及用反向 Shell 有效载荷替换良性命令来证明了这一点;两者都在没有用户提示的情况下执行。因为该行为将信任绑定到已解析的 CODEX_HOME 下的 MCP 条目的存在,而不是条目的内容,所以一个最初无害的配置可以在批准后或合并后被替换为恶意配置,从而创建一个隐蔽、可复现的供应链后门,在正常的开发者工作流中触发。
技术深度剖析
Codex 在启动时解析其配置路径,然后解析并具体化它找到的任何 MCP 服务器条目,以便运行时可用。当有效的 CODEX_HOME 指向一个仓库文件夹时,Codex 将该仓库级别的配置视为权威来源,并将调用 mcp_servers 下列出的命令 + 参数,作为预期的启动/自动化流程的一部分。在易受攻击的行为中,没有二次验证,没有交互式批准,当命令/参数更改时也没有重新检查。CLI 只是运行项目配置声明的命令。
这意味着攻击者可以执行以下步骤:
- 准备一个具有看似良性的项目结构的仓库。
- 添加一个将配置重定向到仓库的
.env文件:CODEX_HOME=./.codex。 - 提交一个包含声明了命令 + 参数的
mcp_servers条目的./.codex/config.toml。在此示例中,我们使用了无害的文件创建有效载荷,但相同的链可以被替换为反向 Shell。 - 当开发者克隆或更新项目并运行
codex时,仓库的.env设置CODEX_HOME=./.codex会导致 Codex 加载./.codex/config.toml并立即执行其mcp_servers.*.command,而无需提示。该命令在用户的上下文中运行;攻击者可以静默地换入反向 Shell、泄露数据或窃取凭据。在下面的图像示例中,我们通过在受害者机器上打开计算器来演示这一点。
现实世界影响
此漏洞使得在开发者针对仓库运行 codex 的任何环境中都能实现静默、可重复的远程代码执行。通过滥用项目本地配置加载,能够提交代码或合并 PR 的攻击者可以将原本无害的仓库转变为持久后门,每当开发者运行 codex 时就会触发,无需额外的提示或批准。
具有写入或 PR 权限的攻击者可以:
- 实现持久远程访问:在
./.codex/config.toml中嵌入反向 Shell 或持久性有效载荷(与重定向CODEX_HOME的.env文件一起交付),并在每次开发者运行codex时重新获得访问权限。 - 静默执行任意命令:任何在 MCP 条目中定义的 Shell 命令都会在
codex加载项目配置时立即在用户的上下文中运行。 - 提权和数据泄露:开发者机器通常持有云令牌、SSH 密钥和源代码;攻击者可以窃取凭据、泄露秘密或推送进一步的漏洞利用。
- 在合并后持久存在并替换有效载荷:由于信任与已解析的配置位置绑定,而不是内容,最初无害的条目稍后可以被恶意命令替换,而不会触发重新批准。
- 通过供应链构件传播:受损的模板、初始仓库或流行的开源项目可以通过单次提交使许多下游使用者受到攻击。
- 污染 CI 和构建流水线:如果 CI、自动化或构建代理对检出的代码运行
codex,则攻击可以从工作站蔓延到构建构件和下游部署。 - 实现横向移动和权限提升:利用窃取的凭据和本地访问权限,攻击者可以转向云资源、仓库或内部网络。
这打破了 CLI 预期的安全边界:项目提供的文件变成了受信任的执行材料,而这种隐式信任可以以最小的努力、无需超出标准开发工作流的用户交互被利用。
负责任披露时间线:
- Check Point Research 于 2025 年 8 月 7 日负责任地向 OpenAI Codex CLI 团队披露了此问题。
- OpenAI 于 2025 年 8 月 20 日在 Codex CLI 版本 0.23.0 中发布了修复。该补丁阻止了
.env文件静默地将CODEX_HOME重定向到项目目录,从而关闭了我们演示的自动执行路径。 - 我们的测试确认修复是有效的。Codex CLI 现在阻止项目本地重定向
CODEX_HOME,要求使用更安全的默认设置,并停止立即执行攻击者提供的项目文件。
为确保防护,我们强烈建议所有用户更新到 Codex CLI 版本 0.23.0 或更高版本。