数周内第二次:微软软件包被植入凭据窃取器
微软官方仓库第二次被供应链攻击者劫持,这次恶意包专门在 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(开放 ID 连接)令牌凭证,这是一种为软件完整性提供密码学签名保证的方法。
如同5月份Microsoft的durabletask遭到入侵的情况一样,上周的攻击也利用了类似功能来窃取一个合法的Microsoft 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运行器能够访问的每一个云身份,表明威胁行为者有明确的意图,即利用从代码库获得的访问权限直接进入实时云环境。
被攻破的开发人员凭证导致请求了一个合法的GitHub OIDC token。随后,一个带有有效SLSA溯源的恶意构建被发布,最终使传统扫描器将其视为常规的可信更新。通过窃取合法的维护者凭证,该蠕虫能够完全像经过身份验证的发布者一样行事。
此外,Miasma为每一次单独的感染生成一个唯一加密的有效载荷。这意味着传统基于哈希的IOC在广泛检测时实际上毫无用处,因为文件签名会随每个软件包版本而改变。Red Hat的Andrew McNamara在一篇专门的博客文章中解释了SLSA的边界在哪里不足。
虽然此前的 Mini Shai-Hulud 恶意软件迭代版本仅专注于本地秘密窃取,但 Miasma 蠕虫似乎配备了专门针对 GCP 和 Azure 云身份设计的高级数据收集器。它会尝试窃取受感染的开发者机器和 CI/CD 运行器所能访问的每一个云身份,这清楚地表明威胁行为者意图利用访问权限超越代码库,直接进入实时云环境。
在感染微软软件包的 Miasma 蠕虫中,凭证窃取功能在开发者一旦通过 AI 智能体(包括 Claude Code、Gemini CLI、Cursor 和 VS Code)打开该软件包时就会被触发。如果攻击者成功从那些在受影响的 AI 智能体中打开软件包的机器上窃取了凭证,那么后续攻击极有可能发生。
在五月攻击中被入侵的微软 GitHub 账户与上周末使用的账户是同一个。目前尚不清楚该账户两次被入侵的原因。这可能意味着微软未能完全更改该账户的凭证。也可能是某个未知软件包在微软开发者机器上运行,窃取了新凭证。微软目前未提供细节。
恶意软件包的自复制加密验证以及绕过基于哈希检测的能力使得这些攻击难以被检测到。而正如同一微软账户的后续入侵所显示的那样,这些漏洞可能难以彻底修复。任何接触过这 73 个软件包(列表在此)中任何一个的人,都应立即放下手头其他工作,进行彻底调查,以防存在任何被泄露的凭证被用于未来攻击。