OpenAI 于 2026 年 6 月 2 日披露,TanStack 这一流行的开源 npm 包中的安全漏洞迫使公司更换所有 macOS 应用程序的代码签名证书,包括 ChatGPT、Codex、Atlas 和 Codex CLI。公司要求所有 macOS 用户在 2026 年 6 月 12 日之前更新他们的应用程序,否则可能会面临访问问题。iOS、Android 和 Windows 版本不受影响。 TanStack 由 Tanner Linsley 开发,广泛用于 JavaScript 生态系统,包括 TanStack Query(前身为 React Query)、TanStack Table 和 TanStack Router 等包。该库在 npm 上每周下载量超过 2000 万,支持无数企业应用程序。2026 年 5 月 28 日,安全研究人员发现恶意行为者已入侵 TanStack 的 npm 发布管道,注入了可能从开发环境中窃取签名密钥和证书的代码。攻击利用了 npm 包发布流程中的漏洞,特别是针对 CI/CD 系统中缓存的维护者身份验证令牌。 此漏洞代表了一场复杂的供应链攻击。据 GitHub 和 Reddit 上的安全论坛称,恶意代码嵌入在 2026 年 5 月 27 日发布的 @tanstack/query-core 版本 5.45.2 中。代码在构建过程中执行,扫描环境变量和包含代码签名凭证的配置文件。尽管 OpenAI 坚称没有证据显示数据外泄或生产系统遭到破坏,但公司出于极大的谨慎更换了所有 macOS 的代码签名证书。这意味着 OpenAI 的 macOS 应用程序的每个现有安装现在都携带过期的证书,这些证书将在 6 月 12 日被吊销。 代码签名证书是软件的数字护照,证明应用程序确实来自 OpenAI,且未被篡改。当证书被吊销时,macOS Gatekeeper(操作系统的安全守卫)将拒绝运行使用该证书签名的应用程序。未在截止日期前更新的用户将看到可怕的安全警告或发现其应用程序完全被屏蔽。OpenAI 基本上是在强制进行严格的截止,以确保攻击者理论上无法使用被攻破的签名材料分发 macOS 会信任的假 OpenAI 应用程序。 npm 安全社区迅速响应。npm 安全团队在 5 月 28 日发现后的数小时内就从注册表中删除了受影响的 TanStack 版本。Tanner Linsley 在 5 月 29 日发布了一份安全公告,确认了此漏洞并敦促所有用户审核其构建环境。GitHub 高级安全扫描标记了恶意代码模式,Yarn 和 pnpm 等主要包管理器发布了警报。然而,损害窗口虽窄但真实:任何在 5 月 27 日至 28 日之间拉取受影响版本并构建包含签名凭证的软件的开发者都可能透露这些秘密。 OpenAI 的响应表明,即使是具备高端安全操作的公司也必须将供应链漏洞视为生存威胁。公司的安全团队很可能通过依赖项的自动监控或从 npm 生态系统的警报中发现了问题。OpenAI 选择了透明度和强制更新周期,而不是默默修补并期待最好的结果。这种方法反映了来自像 Microsoft 和 Google 等公司的最佳实践,后者越来越多地将证书轮换视为应对任何潜在威胁的强制措施,无论确认影响如何。 对于开发者来说,这一事件突显出现代软件开发的一些残酷事实:

  1. 每个 npm 包都是潜在的攻击媒介,即使是维护良好、流行的库
  2. 代码签名秘密绝不应存在于环境变量或提取第三方代码的构建系统中
  3. 依赖项审计必须连续进行,而不仅仅是在重大更新期间
  4. 供应链攻击现在被针对发行管道本身,而不仅仅是包内容
  5. 当签名密钥可能暴露时,证书轮换是唯一安全的响应