WayToClawEarn
中等影响independent-research

Miasma蠕虫瞄准AI编程工具:npm供应链攻击升级与开发者应对指南

自复制npm蠕虫Miasma和IronWorm明确针对AI编程工具用户,通过binding.gyp钩子窃取CI环境密钥并利用GitHub令牌传播。本文提供开发者应采取的即时防护措施。

WayToClawEarn Editorial发布 2026年6月29日更新 2026年8月8日

编辑基于公开来源复核 · AI 辅助整理。 内容方法 · 原始来源

核心结论

2026年6月24日,一场专门针对AI编程工具用户的新型供应链攻击浮出水面。自复制的Miasma蠕虫在不到3秒内污染了20多个Leo Platform npm包,其载荷通过读取CI运行器内存来窃取开发者密钥。这是首个被记录为专门利用「开发者与AI编程助手之间信任关系」的供应链恶意软件。如果你使用Claude Code、Cursor或Copilot来生成npm依赖,你需要立即采取行动。

发生了什么

6月24日,攻击者入侵了npm维护者账号「czirker」,利用该账号在不到三秒的协调爆发中发布了20多个Leo Platform和RStreams生态系统的恶意版本。微软威胁情报部门公开确认了此次攻击。

云安全联盟(CSA)发布的研究报告识别出两个蠕虫变种:Miasma(亦称Shai-Hulud)和IronWorm。两者都具有自复制能力:一旦安装,蠕虫会搜索受害者机器上的npm令牌和GitHub凭证,然后利用这些凭证发布受害者维护的其他包的感染版本。

蠕虫将其安装钩子隐藏在binding.gyp文件中——这是node-gyp等构建工具在包安装期间自动处理的文件。这意味着载荷静默执行,在package.jsonpostinstall钩子中没有可见脚本,使得静态分析工具更难检测。

为什么AI编程工具成为攻击面

这不是一次普通的npm供应链攻击。CSA报告明确指出,这些蠕虫「明确针对AI编程工具用户」。原因有三:

1. AI生成的依赖链更难审计。 当Claude Code或Copilot建议npm install some-package时,开发者通常不经检查就直接接受。AI辅助开发的速度创造了一个信任缺口。

2. AI编程工具持有高价值令牌。 Claude Code、Cursor和Copilot都需要API密钥、GitHub令牌或具有广泛仓库访问权限的会话凭证。窃取这些凭证的蠕虫可以在几分钟内转向入侵数十甚至数百个仓库。

3. AI代理运行在CI/CD环境中。 许多团队现在在GitHub Actions、GitLab CI或自定义构建管道中使用AI编码代理。这些环境在内存中保存着被脱敏的密钥(AWS密钥、数据库URL、部署令牌)。Miasma专门读取CI运行器内存来提取这些密钥,然后通过受害者自己的GitHub令牌外泄。

攻击链:AI编程工具建议依赖→开发者安装→蠕虫在构建期间激活→窃取环境中的令牌→使用这些令牌发布更多感染包→循环往复。

Miasma如何绕过标准防御

binding.gyp钩子:通过将载荷嵌入原生构建配置文件而非JavaScript安装脚本,蠕虫绕过了大多数npm audit和Socket.dev式静态分析。

通过受害者自身GitHub令牌外泄:Miasma不向攻击者控制的服务器回传数据(会被出口监控捕获),而是使用窃取的GitHub令牌创建私有Gist或推送到隐藏仓库。网络监控看到的是合法的GitHub API流量——而非数据泄露。

CI内存抓取:蠕虫读取/proc/self/environ和CI特定的环境变量存储来提取被脱敏的密钥。在许多CI平台中,密钥在日志中被脱敏但在内存中保持明文。

Dependabot冒充:攻击者将武器化的GitHub Actions工作流伪装成Dependabot拉取请求,推送到至少三个仓库。合并这些「自动依赖更新」的开发者实际上在授予攻击者工作流执行权限。

开发者应立即采取的行动

立即执行(今天)

  1. 审计Leo Platform依赖。 如果你的项目使用了@leoplatform@rstreams命名空间中的任何包,检查版本是否在已知受感染列表中。受污染包发布时间为UTC时间6月24日约14:00-14:05。

  2. 轮换令牌。 如果你自6月24日以来在任何引入Leo Platform包的项目上运行过npm install,请轮换你的npm令牌、GitHub个人访问令牌以及同一环境中可访问的任何CI/CD密钥。

  3. 检查GitHub Actions工作流。 查找自6月24日以来合并的任何异常Dependabot PR,特别是修改工作流YAML文件或添加新密钥的PR。

流程变更(本周内)

  1. 在安装AI建议的依赖前增加「暂停验证」步骤。 在运行AI编程工具建议的npm install之前,手动检查:(a) 上一个版本的发布时间,(b) 维护者的npm资料年限和活跃度,(c) 包最近是否有可疑的版本跃升。

  2. 在AI辅助项目中锁定依赖版本。 使用精确版本锁定("1.2.3"而非"^1.2.3")并提交lockfile。配置AI工具在建议依赖添加时输出精确版本。

  3. 对使用AI编程工具的仓库启用分支保护。 要求对package.jsonpackage-lock.json.github/workflows/binding.gyp文件的任何更改进行拉取请求审查——即使是来自Dependabot的更改。

架构变更(长期)

  1. 在CI中沙箱化AI编码代理。 如果你在CI/CD中运行AI编程工具,使用临时环境,配备只读文件系统挂载,且无法访问生产密钥。

  2. 为AI辅助开发实施包白名单。 维护一个受信包和版本的精选列表。将AI编程工具配置为仅从此列表中建议包。

底线

Miasma蠕虫代表了供应链攻击的类别转变:专门为AI辅助开发工作流设计的恶意软件。它利用了每个使用AI编程工具的开发者默示接受的「速度-信任」权衡——即AI建议的依赖足够安全,无需人工审查即可安装。截止6月26日,该攻击活动仍在进行中。解决方案不是停止使用AI编程工具,而是在「AI建议依赖」和「你安装它」之间增加验证步骤。

npmsupply-chainsecurityclaudecursorcopilotcoding

查看原文 →

免责声明:本站案例均为知识分享内容,仅供灵感与参考,不构成收益承诺;由此进行的外部执行与结果请自行判断并承担相应责任。