现代软件开发生命周期是效率的奇迹,但它仍然摇摇欲坠地平衡在由第三方代码构建的纸牌屋之上。我们在三月下旬看到了这一现实的体现,当时处于人工智能绝对前沿的公司 OpenAI 透露,其 macOS 应用程序签名过程已卷入一场复杂的供应链攻击。罪魁祸首并非其专有大语言模型(LLM)中的零日漏洞,而是一个恶意版本的 Axios——这是现存最无处不在的 JavaScript 库之一。
从风险角度来看,这一事件凸显了现代 DevOps 的架构悖论。我们在生产数据周围建立了巨大且富有弹性的堡垒,但我们经常让施工现场的后门敞开着。在这种情况下,施工现场是一个 GitHub Actions 工作流——一个旨在对 OpenAI 的 macOS 应用程序进行签名和公证的自动化流水线。按照设计,这些工作流通常会访问公共互联网以拉取依赖项。3 月 31 日,那次常规的拉取带回了一个特洛伊木马。
在幕后,入侵并非始于 OpenAI,而是始于 npm 注册表。被谷歌威胁情报小组(GTIG)识别为与朝鲜有关联的组织 UNC1069 成功劫持了 Axios 软件包维护者的账户。这使得他们能够推送两个带毒版本:1.14.1 和 0.30.4。
这些版本不仅仅是损坏了,它们被武器化了。它们包含一个名为 plain-crypto-js 的恶意依赖项。当 OpenAI 的自动化工作流执行其构建过程时,它下载了 Axios 1.14.1,进而触发了恶意负载的执行。这是一个嵌套供应链攻击的典型案例,即通过延伸数层深度的信任网触达主要目标。
评估攻击面后,我们发现恶意负载旨在部署一个名为 WAVESHAPER.V2 的跨平台后门。该恶意软件是一种多功能工具,能够感染 Windows、macOS 和 Linux 系统,为攻击者提供持久的立足点,以便窃取数据或在网络中横向移动。
在发生入侵时,时机就是一切。OpenAI 的取证分析表明,他们可能险些避免了一场灾难。该公司表示,虽然 GitHub Actions 工作流可以访问用于 ChatGPT 桌面版、Codex 和 Atlas 的高度敏感的证书和公证材料,但恶意负载很可能未能将其窃取。
这种运气——如果我们可以这样称呼的话——归功于作业的具体顺序。证书注入和恶意负载执行的时间点并未对攻击者有利。然而,正如任何资深的事件响应人员都会告诉你的那样,希望不是一种策略。从主动防御的角度出发,OpenAI 已选择将签名证书视为已泄露,无论是否存在窃取证据。
这是正确的做法。在高风险的安全领域,完整性是二元的。一旦环境被已知的恶意行为者触碰,信任就破裂了。因此,OpenAI 正在撤销并轮换受影响的证书,此举有效地切断了在风险窗口期间签名的任何应用程序的信任链。
从终端用户的角度来看,此次证书撤销的影响是重大的。从 2026 年 5 月 8 日开始,旧版本的 OpenAI macOS 应用程序(包括 ChatGPT 桌面应用)将不再接收更新或支持。由于底层证书正在失效,操作系统最终将拒绝运行或更新这些应用,将其视为潜在的非法应用。
这创建了一条强制迁移路径。用户必须更新到最新版本,以确保其软件保持功能正常,更重要的是,保持安全。这是一个鲜明的提醒:软件永远不是真正的成品;它是一个生命体,需要不断的维护才能在不断演变的威胁格局中保持韧性。
观察威胁格局,UNC1069 事件并非孤立事件;它是我们管理依赖项方式中系统性漏洞的症状。我们经常将 npm 等包管理器视为受信任的公用设施,类似于供水管线或电网。但与公用设施不同,我们拉取的代码是由人类编写的,他们的账户可能会被钓鱼、胁迫或入侵。
为了减轻这些风险,组织必须转向粒度验证模型。这不仅仅涉及补丁管理;它需要我们处理构建流水线的方式发生根本性转变。
| 缓解策略 | 技术实现 | 对安全的影响 |
|---|---|---|
| 依赖项锁定 (Dependency Pinning) | 使用锁定文件 (package-lock.json) 确保使用确切版本。 | 防止自动更新到恶意版本。 |
| SBOM 生成 | 为每次构建生成软件物料清单 (Software Bill of Materials)。 | 为漏洞追踪提供清晰的库存。 |
| 隔离构建环境 | 在临时的、网络受限的容器中运行 CI/CD 作业。 | 限制恶意软件窃取机密的能力。 |
| SCA 工具 | 实施软件成分分析 (Software Composition Analysis) 以扫描已知恶意软件。 | 在带毒软件包到达生产环境前检测出它们。 |
OpenAI 在此事上的透明度值得称赞,但该事件对整个行业来说是一个警钟。如果像 OpenAI 这样拥有资源和技术深度的公司都能受到供应链入侵的影响,那么规模较小的组织除非采取更严格的姿态,否则基本上就是待宰的羔羊。
我们必须停止将网络边界视为护城河,并开始以对待开放网络同样的怀疑态度来对待我们的内部构建流程。零信任不仅适用于用户访问;它必须应用于构建我们工具的代码本身。
可操作的建议: 对您的 CI/CD 流水线进行彻底审计。确保所有机密——尤其是代码签名证书——都存储在专用的硬件安全模块 (HSM) 或具有严格范围访问权限的加密机密管理器中。此外,对任务关键型工作流中的任何依赖项更新实施强制性的手动审批或自动化安全门。
来源:
免责声明:本文仅供信息参考和教育目的,不替代专业的网络安全审计或事件响应服务。



