数周内第二次:微软软件包被植入凭据窃取器
阅读原文· arstechnica.com微软官方仓库第二次被供应链攻击者劫持,这次恶意包专门在 AI 编码代理中触发凭证窃取,蠕虫还能伪造 SLSA 信任链,任何用过受感染包的开发者都应立刻排查。
73个软件包被植入自复制窃密程序,一旦被AI智能体打开就会立即运行。这是数周内第二次发现微软相关软件包被伪装成凭据窃取器。
上周晚些时候,来自微软的数十个经过加密验证的开源软件包遭到入侵,被植入了高级凭证窃取代码,当开发人员在 AI 编码智能体中打开这些软件包时,该代码会被触发。
多位研究人员表示,总共 73 个软件包被标记为恶意,GitHub 上的自动化系统在平台上将其屏蔽。微软旗下的 GitHub 并未指出这些软件包是恶意的——以及使用 AI 智能体处理这些软件包的开发者应假定其系统已遭入侵——而是表示已禁用这些软件包,“因违反 GitHub 服务条款”。该文本还鼓励软件包所有者联系 GitHub。
开发者:假定已遭入侵并据此行事
直到周一,微软才提出这些软件包可能已被感染。在一封电子邮件中,该公司表示:“我们暂时移除了部分仓库,以调查潜在的恶意内容。”
这起事件是近几个月内第二次针对微软官方仓库账户的供应链攻击。5 月中旬,StepSecurity 公司记录了微软在 PyPI 上的 durabletask Python SDK 被入侵。该软件包是一个用于构建容错工作流和编排的框架,用于自动化分布式事务和其他工作流。它每月获得 40 万次下载。
被入侵的软件包执行了一个 28 KB 的有效载荷,从 AWS、Azure、GCP、Kubernetes、密码管理器以及超过 90 种开发者工具配置中窃取凭证。然后通过云基础设施横向传播,感染其他开发者机器。该攻击与一个被追踪为 TeamPCP 的威胁行为者有关,在入侵了微软用于发布该软件包的凭证后,对 durabletask 软件包进行了投毒。该技术使攻击者能够完全绕过仓库的构建流水线。
此次攻击中使用的恶意软件被追踪为 Miasma。它本质上是 TeamPCP 近期开源的 Mini Shai-Hulud 工具包的克隆。安全公司 Cloudsmith 表示,该恶意软件会收集用于 SLSA(软件工件供应链级别)溯源证明的 OIDC(OpenID Connect)令牌凭证,这是一种为软件完整性提供加密签名保证的方法。
与微软 durabletask 在 5 月被攻破的情况类似,上周的那次攻击同样利用了该功能来窃取一个合法的微软 OIDC token。该攻击还被用于另一场供应链攻击,毒害了数十个 Red Hat 软件包。
“这个 Miasma 蠕虫的巧妙之处在于它如何遵循合法的工作流程,”Cloudsmith 表示。“它没有利用 GitHub 或 npm 中的任何软件漏洞。相反,它利用了现代工程生态系统底层信任模型。”该公司继续说道:
受损的开发人员凭证导致请求了一个合法的 GitHub OIDC token。随后,一个带有有效 SLSA 来源的恶意构建被发布,最终使得常规扫描器将其视为常规的可信更新。通过窃取合法的维护者凭证,该蠕虫能够完全扮演一个经过身份验证的发布者的角色。此外,Miasma 为每一次感染生成一个唯一加密的有效载荷。这意味着传统的基于哈希的威胁指标(IOC)在广泛检测中实际上毫无用处,因为每次版本发布文件签名都会改变。Red Hat 的 Andrew McNamara 在一篇专门的文章中解释了 SLSA 的局限性所在。虽然之前版本的 Mini Shai-Hulud 恶意软件只专注于本地机密数据爬取,但 Miasma 蠕虫似乎配备了专门为 GCP 和 Azure 中的云身份设计的高级数据收集器。它试图收集被感染的开发机器和 CI/CD 运行器能够访问到的所有云身份,这证明了威胁行为者有明确的意图,即利用访问权限从代码库直接进入活跃的云环境。
虽然早期版本的 Mini Shai-Hulud 恶意软件仅专注于本地机密窃取,但 Miasma 蠕虫似乎配备了专门针对 GCP 和 Azure 云身份而设计的高级数据收集器。它会尝试收割受感染开发者机器和 CI/CD 运行器能够访问到的每一个云身份,这证明了威胁行为者的明确意图——利用对代码库的访问权限,直接侵入活跃的云环境。
感染 Microsoft 软件包的 Miasma 蠕虫中的凭证窃取功能,会在开发者通过 AI 智能体(包括 Claude Code、Gemini CLI、Cursor 和 VS Code)打开该软件包时立即触发。如果凭证确实从受影响的 AI 智能体所打开的软件包所在机器上被成功窃取,那么后续攻击极有可能发生。
在 5 月攻击中被入侵的 Microsoft GitHub 账户,与上周晚些时候被利用的是同一个账户。目前尚不清楚此次双重入侵的原因。这可能意味着 Microsoft 未能完全更换该账户的凭证。这也可能是在某台 Microsoft 开发者机器上运行了一个未知软件包,从而窃取了新凭证。Microsoft 目前未提供更多细节。
恶意软件包的自复制加密验证机制以及绕过基于哈希的检测的能力,使得这些攻击难以被发现。而正如同一 Microsoft 账户随后再次被入侵所表明的,这些入侵很难被完全修复。任何接触过此处列出的 73 个软件包中任何一个的人,都应立即放下手头其他工作,进行全面调查,以免有任何泄露的凭证被用于未来的攻击。