OpenAI Codex CLI 曝出严重漏洞:通过本地配置注入恶意命令

研究人员在OpenAI Codex CLI中发现一个严重漏洞(CVE-2025-61260),该漏洞允许攻击者通过植入项目仓库的特定配置文件,在开发者执行命令时,自动、无提示地运行任意系统命令,实现远程代码执行,从而构成供应链攻击的严重风险。

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 文件,以及一个伴随的包含 mcp_servers 条目的 ./.codex/config.toml 文件,Codex CLI 会将其配置解析到该本地文件夹,解析 MCP 定义,并在启动时立即调用已声明的命令/参数。这期间没有交互式批准,没有对命令或参数的二次验证,当这些值发生变化时也不会重新检查——CLI 将项目本地的 MCP 配置视为可信的执行材料。

这一系列行为将普通的仓库文件变成了一个执行载体:能够提交或合并 .env./.codex/config.toml 文件的攻击者,可以导致任何克隆该仓库并运行 codex 的开发者设备上运行任意命令。在实践中,我们通过确定性载荷(文件创建)和将良性命令替换为反向 Shell 载荷来演示这一点;两者都在没有用户提示的情况下执行。由于该行为将信任绑定到已解析的 CODEX_HOME 下的 MCP 条目的存在,而非条目的内容,因此一个最初无害的配置可以在批准或合并后被换成一个恶意的配置,从而创建一个隐蔽、可复现的供应链后门,并在正常的开发者工作流中触发。

技术深度分析

Codex 在启动时解析其配置路径,然后解析并实现它找到的任何 MCP 服务器条目,以便它们在运行时可用。当有效的 CODEX_HOME 指向仓库文件夹时,Codex 将该仓库级别的配置视为权威来源,并会调用 mcp_servers 下列出的命令+参数,作为预期的启动/自动化流程的一部分。在存在漏洞的行为中,没有二次验证,没有交互式批准,命令/参数更改时也没有重新检查。CLI 只是运行项目配置声明的内容。

这意味着攻击者可以执行以下步骤:

  1. 准备一个看起来良性的项目结构的仓库。
  2. 添加一个将配置重定向到仓库的 .env 文件。
  3. 提交一个包含声明了命令+参数的 mcp_servers 条目的 ./.codex/config.toml。在本示例中,我们使用了无害的文件创建载荷,但同样的链条可以替换为反向 Shell。
  4. 当开发者克隆或更新项目并运行 codex 时,仓库中设置 CODEX_HOME=./.codex.env 文件会导致 Codex 加载 ./.codex/config.toml 并立即执行其 mcp_servers.*.command,且不发出提示。该命令在用户上下文中运行;攻击者可以悄悄地换入反向 Shell、窃取数据或获取凭据。

现实世界的影响

此漏洞可在开发者对仓库运行 codex 的任何环境中,实现静默、可重复的远程代码执行。通过滥用项目本地配置加载,能够提交代码或合并请求的攻击者可以将一个原本无害的仓库变成持久后门,每当开发者运行 codex 时便会触发,且无需额外的提示或批准。

具有写入或合并请求权限的攻击者可以:

  • 实现持久远程访问:在 ./.codex/config.toml 中嵌入反向 Shell 或持久化载荷(与重定向 CODEX_HOME.env 文件一起提供),并在每次开发者运行 codex 时重新获得访问权限。
  • 静默执行任意命令:只要 Codex 加载项目配置,MCP 条目中定义的任何 Shell 命令都会立即在用户上下文中运行。
  • 权限提升和数据窃取:开发者机器通常持有云令牌、SSH 密钥和源码;攻击者可以窃取凭据、外泄密钥或推送进一步的利用程序。
  • 持久化并在合并后交换载荷:由于信任与解析后的配置位置绑定而非其内容,最初无害的条目可以在之后被恶意命令替换,而不会触发重新批准。
  • 通过供应链组件传播:被入侵的模板、起始仓库或流行的开源项目可以通过一次提交,使许多下游使用者“武器化”。
  • 污染 CI 和构建流水线:如果 CI、自动化或构建代理在检出代码上运行 codex,那么入侵可以从工作站蔓延到构建工件和下游部署。
  • 启用横向移动和权限提升:利用窃取的凭据和本地访问权限,攻击者可以转向云资源、仓库或内部网络。

这打破了 CLI 预期的安全边界:项目提供的文件变成了可信的执行材料,而这种隐式信任只需极少的努力,且无需超出标准开发工作流的用户交互即可被利用。

负责任的漏洞披露时间线

  • 2025年8月7日:Check Point Research 负责任地向 OpenAI Codex CLI 团队披露了该问题。
  • 2025年8月20日:OpenAI 在 Codex CLI 版本 0.23.0 中发布了修复。该补丁阻止了 .env 文件静默地将 CODEX_HOME 重定向到项目目录,从而关闭了我们演示的自动执行路径。
  • 我们的测试确认该修复是有效的。Codex CLI 现在阻止了 CODEX_HOME 的项目本地重定向,要求使用更安全的默认设置,并停止立即执行攻击者提供的项目文件。

为确保安全,我们强烈建议所有用户更新到 Codex CLI 版本 0.23.0 或更高版本。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计