攻击的源头并非一个复杂难解的零日漏洞,而是一组被窃取的登录凭证。一名红帽员工的GitHub账户凭证最早在2026年4月13日就出现在信息窃取软件的日志中,在被武器化利用前,竟有近七周的空白期。利用此权限,攻击者向
RedHatInsights GitHub组织的代码仓库直接推送了未经授权的提交。
这些提交并非无关紧要。在RedHatInsights/javascript-clients仓库中,攻击者注入了恶意的GitHub Actions工作流。该工作流请求OIDC身份令牌,并执行了一个经过混淆处理的载荷。该载荷在官方的
@redhat-cloud-services npm命名空间下发布了32个被木马化的软件包版本,每个版本都带有此次攻击的标志:“Miasma: The Spreading Blight”(Miasma:蔓延的疫病)。由于这些包是通过红帽的合法CI/CD(持续集成与持续交付)流水线发布,并使用了通过OIDC发布工作流生成的有效签名,它们附带了真实的SLSA(软件构件供应链安全级别)溯源签名。这意味着,标准的安全检查会将它们标记为“已验证”
。
这些恶意软件包平均每周有大约8万次下载。任何开发人员只要运行
npm installpreinstall生命周期钩子立刻执行。该载荷会从AWS、Azure、GCP、GitHub、HashiCorp Vault、Kubernetes配置、SSH密钥以及本地开发环境中收集凭证
。随后,它利用这些窃取的密钥向被侵入者有权访问的其他项目注入恶意代码,将每台被感染的开发工作站和CI/CD流水线都变成了新的传播节点
。
此蠕虫最恶劣的行为不仅仅是窃取凭证,还在于它对AI编程工具的利用。Miasma的变种植入了针对Claude Code、Cursor、Gemini CLI和GitHub Copilot的恶意规则文件。当开发人员仅仅是将被感染的代码仓库克隆并在集成开发环境(IDE)中打开时,这些文件就会被自动执行。实际上,仅仅阅读代码——甚至不用安装任何包——就能触发恶意载荷。
2026年6月5日,蠕虫攻入微软。一个名为“Switched DataConverter to OrchestrationContext [skip ci]”的恶意提交出现在Azure/durabletask仓库中,其元数据被篡改,以显示提交日期为2020年3月9日,这很可能是为了逃避审查。此次提交是桥头堡。由此,蠕虫蔓延至微软四个GitHub组织下的73个仓库:Azure、Azure-Samples、Microsoft和MicrosoftDocs
。受影响的项目包括
azure-functions-host等核心基础设施,以及涵盖.NET、Go、Java、JavaScript、MSSQL和Python在内的整个持久任务(Durable Task)系列家族。
要理解Miasma,就必须明白TeamPCP将其武器开源背后的算计。
TeamPCP是一个在2025年和2026年初致力于完善一系列自我传播供应链蠕虫的攻击组织。他们的活动在2026年5月11日达到顶峰,当时他们一次性发布了373个恶意包版本,横跨172个npm和PyPI包,总下载量超过5.18亿次。仅这一波行动就证明了该蠕虫的能力:从GitHub Actions运行器内存中提取OIDC令牌,获取有效的签名证书,并生成能通过溯源验证的恶意软件包
。
紧接着,在2026年5月12日,TeamPCP以MIT许可证将完整的Mini Shai-Hulud源代码发布到了GitHub上。与此同时,该组织还在BreachForums论坛上宣布了一项竞赛,悬赏价值1千美元的门罗币(Monero),奖励那些使用其框架发动最大规模供应链攻击的人
。这一信息非常明确:该工具包如今已是公共财产。
开源的后果立竿见影。五天内,一个npm用户账户就推送了四个恶意包,其中包含一个近乎逐字克隆的Shai-Hulud蠕虫。OX Security公司分析后认为,该克隆体“几乎没有任何改动”,仅替换了攻击者自己的命令控制服务器端点和私钥。供应链攻击的工业化已然开始,而防御者当时对此还一无所知。
距离开源仅仅17天后,Miasma便袭击了红帽。 该恶意软件的代码是Mini Shai-Hulud的结构化变种,将其原有的《沙丘》主题引用替换成了希腊神话元素。但其技战术——
preinstall脚本执行、混淆JavaScript载荷、凭证窃取和CI/CD自我传播——却大体上完全相同。
关键在于,研究人员无法断言Miasma一定是TeamPCP亲手所为。云安全联盟(CSA)明确指出,“不能排除模仿者使用同一公开代码库实施攻击的可能性”。Palo Alto Networks旗下的Unit 42团队也强调,“归因仍不明确”,因为源代码的公开意味着任何有能力的攻击者都能复刻同样的攻击
。这种模糊性并非旁注—它是开源策略刻意为之的特性,旨在向生态系统注入大量噪音,淹没溯源工作
。
开源框架不仅催生了Miasma,还引发了一波即时跟进的模仿行动。
2026年6月3日,一个名为Phantom Gyp的新变种出现,波及了包括@vapi-ai/server-sdk和ai-sdk-ollama在内的57个额外的npm包。该变种使用了一个被武器化的
binding.gyp文件,在包安装过程中执行恶意代码,绕过了已被严密监控的postinstall执行路径。OpenSourceMalware的研究人员确认,此次攻击是首次证实的、使用TeamPCP框架实施的现网攻击,尽管TeamPCP从未宣称对此负责
。
到6月8日,SANS互联网风暴中心报告称,更广泛的攻击者群体已开始积极利用开源化的Mini Shai-Hulud框架,多个独立的威胁行为者发动了他们自己的攻击。该恶意软件已超越npm生态系统:研究人员发现了一个Ruby变种,它似乎是通过大语言模型(LLM)翻译而成的—一个粗糙但功能完善的移植版本,而这并非原始开源代码的一部分
。从npm到多个生态系统的适应速度之快,充分说明了攻击面已发生了多么彻底的改变。
针对Miasma的响应异常迅速且公开,这反映了事件的规模之大以及主要平台所有者的参与程度。
GitHub的响应是即刻的。在2026年6月5日检测到攻击后约105分钟内,该平台就禁用了70多个微软拥有的代码仓库。被禁用的仓库遍布Azure、Azure-Samples、Microsoft和MicrosoftDocs组织
。尽管在禁用期间,部分受影响的微软CI/CD流水线被中断,但几天之内,所有仓库都已恢复并被声明为安全状态
。
微软于2026年6月2日通过其威胁情报团队发布了一份详细的技术分析报告,涵盖了从最初红帽被入侵到CI/CD漏洞利用的完整攻击链。微软还采取了极不寻常的一步—删除了自身73个代码仓库,并告知BleepingComputer,该决定是出于担心这些仓库在分发“潜在的恶意内容”
。这一行动对微软内部CI/CD工作流造成的干扰表明,即使是平台所有者也无法幸免于供应链蠕虫带来的下游影响。
红帽于2026年6月1日发布了安全公告RHSB-2026-006,确认了此次入侵事件,并声明此次泄露仅限于内部开发工具,对红帽企业Linux(RHEL)或OpenShift产品没有影响。该公司已撤销所有受影响的npm包版本,并通知了下游消费者。
**英国国家网络安全中心(NCSC)**则将此次事件升级为更广泛的政策推动。2026年6月4日,NCSC发表了一篇博客文章,明确敦促各组织审查其开源依赖项,减少遭受供应链攻击的风险。时机并非巧合—该文章直接引用了Miasma攻击作为催化剂
。2026年6月9日,NCSC发布了更新版的《网络基础要素供应链手册》,呼吁英国公司将“网络基础要素”认证作为对供应商的标准要求
。
NCSC的指南聚焦于三个方面:可见性(审计软件包更新,识别非预期的依赖项,维护软件物料清单)、评估(评估供应商的安全实践)和行动(将供应链安全作为董事会层面的优先事项)。英国政府也已正式介入TeamPCP的攻击事件,这反映出一种转变:开源依赖安全正被视为国家网络安全政策问题,而不仅仅是开发人员的个人卫生习惯。
Miasma攻击并非史上最大或最复杂的供应链泄露事件。但它可能是最有启发性的,它让我们看清了接下来会发生什么。
第一,开源攻击框架已将整个生态系统武器化。 TeamPCP决定以MIT许可证发布Mini Shai-Hulud,是一种刻意为之的策略:武装一群模仿者,制造归因混乱,迫使防御者去对抗数量未知、使用同一战术手册的独立攻击者。这并非理论推演—在源代码发布后五天内,模仿活动就被记录在案,而数周之后,Miasma的归因仍然悬而未决
。
第二,npm的preinstall钩子是一个系统性漏洞。 此次攻击反复利用了一个本为合法构建脚本设计的功能,但它对生命周期脚本的执行缺乏足够的控制。在Phantom Gyp变种中,
binding.gyp文件被用作额外的执行向量,这表明攻击者正积极寻找新的生命周期环节来劫持。在注册表级别对
preinstall及其他生命周期脚本进行限制,已成为一项紧迫任务。
第三,AI编程助手已成为一个新的攻击面。 Miasma是首批明确将Claude Code、Cursor、Copilot和Gemini CLI作为载荷投递机制,通过恶意规则文件发起攻击的供应链攻击之一。当开发人员克隆一个仓库并将其打开时,那些旨在帮助他们写出更好代码的AI工具,反而可能执行恶意代码。随着AI辅助开发成为默认工作流,这一攻击途径可能会进一步扩大。
第四,CI/CD流水线如今已成为最高价值目标。 此蠕虫能从运行器内存中提取OIDC令牌,并生成带有有效SLSA溯源证明的软件包。这意味着,作为供应链完整性黄金标准的加密验证,可能被绕过。如果溯源检查通过了,防御者便无法获得任何异常信号来标记此次入侵。保护CI/CD流水线中的凭证,已不再是可选项。
Comments
0 comments