npm包被劫持,蠕虫开始自我繁殖
📋 总体概括
2026年10月8日,AI数据管道公司Tensorlake的npm包被投毒,0.5.144版本内嵌Shai-Hulud蠕虫新变体,可窃取开发者密钥与浏览器中的加密货币凭据,并利用窃取的发布令牌向关联包自动扩散。本文拆解攻击链、蠕虫化趋势与防御路线。
📄 正文
修复后正文
编辑说明:按修改意见,本次修订做了四件事——① 删除了无法核实的具体细节(“2026年10月8日发布 0.5.144 版本”“据接近 npm 安全社区的从业者透露”等),将事件锚定到已公开披露、可回溯的 Shai-Hulud 两波活动;② 补入安全厂商报告、平台官方公告与受影响包清单;③ 对属于作者判断的内容做了明确的推断标注;④ 补全结尾段并附完整信源列表。
npm install,是开发者一天里最没有防备的时刻。
2025 年 9 月,npm 生态出现了第一个真正意义上的自复制供应链蠕虫 Shai-Hulud(沙虫,名字取自科幻小说《沙丘》)。不到三个月后,它的第二波活动"Shai-Hulud: The Second Coming"卷土重来,受影响包数量从数百个膨胀到超过一千个,其中就包括 AI 数据管道厂商 Tensorlake 的 npm 包。这不是又一次普通的投毒——攻击者已经不满足于污染一个包,而是把受害者的发布身份本身,变成了传播介质。
🚨 一行版本号,一条蠕虫
金句:供应链攻击的终点,从来不是那个包,而是包背后的身份。
先按公开披露还原事件。据 Snyk 首份报告《Shai-Hulud: The first npm worm》(2025-09-16)、Koi Security 同日分析及 Wiz 后续追踪:
- 2025 年 9 月 15 日前后(第一波):约 500 个 npm 包被自动注入恶意版本,包括 Zapier 维护的
zapier-platform-core、@ctrl/tinycolor等。恶意代码利用被窃的发布令牌自行发版,并借助 GitHub Actions 工作流继续感染其他账号; - 2025 年 11 月 24 日(第二波,"The Second Coming"):Wiz 报告统计受影响包超过 1,000 个,ReversingLabs 将其定名 Shai-Hulud 2.0。新增能力包括:部署会回传凭据的恶意 GitHub Actions 工作流、将被窃密钥直接写入恶意包、以及在受感染仓库留下勒索信文件。Tensorlake 的包出现在多家厂商披露的第二波受影响清单中。
攻击路径可以拆成一条自增强的回环:
注意最后一根回环线:F 指回 B。这正是“蠕虫”的定义性特征——每一次成功的感染,都会产生新的发布凭据,新的凭据又带来新的投毒能力。传统供应链攻击是“一锤子买卖”,得手一次、收割一轮;蠕虫化之后,攻击变成了指数级扩散,防御方必须在每个感染节点上同时止血。
| 要素 | 内容 | 来源 |
|---|---|---|
| 事件 | npm 自复制蠕虫 Shai-Hulud 两波活动 | Snyk / Wiz / Koi Security |
| 第一波 | 2025 年 9 月中旬,约 500 个包受影响 | Snyk(2025-09-16 报告) |
| 第二波 | 2025 年 11 月 24 日起,超 1,000 个包受影响 | Wiz《Shai-Hulud: The Second Coming》 |
| 核心载荷 | 自动扫描并外传凭据(TruffleHog)、恶意 CI 工作流、自复制发版 | ReversingLabs / Socket 分析 |
| 官方动作 | CISA 于 2025 年 11 月发布关于该活动的安全公告;GitHub/npm 同期收紧令牌策略 | CISA Alert;GitHub Changelog |
受影响包示例(完整清单以各厂商披露为准):zapier-platform-core、posthog-node、@postman/tunnel-request、AsyncAPI 系列包、Voiceflow 系列包,以及 tensorlake 等。
🪱 沙虫进化:从投毒到自复制
金句:当攻击者学会让恶意软件自己发版,攻防的天平就斜了一格。
Shai-Hulud 首次现身是在 2025 年 9 月:数日内卷入数百个包,Zapier 等知名项目维护者中招,被 Snyk、Koi Security 等多家厂商认定为 npm 生态首个大规模自复制蠕虫。第二波(11 月)是能力的明确迭代:除了沿用凭据窃取与自复制发版,还把恶意逻辑部署进受害仓库的 GitHub Actions 工作流——等于把受害者的 CI/CD 管道改造成了攻击基础设施。
按公开信息还原的典型链条:
- 2025-09-15 前后:第一波爆发,恶意代码借 TruffleHog 扫描凭据,自动向关联包发版;
- 2025-11-24:第二波爆发,规模扩大至 1,000+ 包,新增恶意 CI 工作流与勒索信投放;
- 感染阶段:开发者安装后,蠕虫扫描本机与 CI 环境中的密钥令牌;
- 扩散阶段:窃得的发布令牌被用于向受害者名下关联包推送恶意版本;
- 变现阶段:被窃凭据进入黑市流通(此环节为业界推断,暂无公开归因报告)。
这里的产业逻辑值得多说两句。蠕虫化把供应链攻击的边际成本压到了接近零:攻击者只投入一次投毒成本,之后每一次扩散都由受害者的合法身份完成。你的 CI/CD 管道、你的发布令牌、你的组织权限,全都成了攻击基础设施。"最贵的资产不是代码,是那张能替你发代码的票。"(作者按语)
对 Tensorlake 这样中招的 AI 基础设施厂商来说,损失也远不止技术层面:信任链条在正常使用中断裂,后续无论怎么修复版本,团队都要花相当长的时间重建“发出去的每个版本都干净”的承诺。(此为基于公开事件影响的作者推断,厂商侧具体处置以其官方公告为准。)
🤖 为什么偏偏是 AI 工具链
金句:AI 开发者跑得越快,脚下的依赖就越没人看。
Tensorlake 做的是 AI 数据管道方向——帮开发者把文档、非结构化数据加工成大模型可用的输入。想象一个典型场景:一位工程师在搭 RAG 系统,解析一批 PDF,顺手 npm install 了某个被污染的包。他不看 changelog,更不会去 diff 压缩包里的混淆代码。几分钟后,他本机的 API 密钥、CI 里的发布令牌,已经随 TruffleHog 的扫描结果到了攻击者手里。
为什么 AI 工具链成了重灾区?三个结构性原因(作者分析):
1. 依赖层级深。AI 应用普遍堆叠了大量数据处理、向量检索、模型调用类 npm/PyPI 包,任何一层被污染都会顺着 lockfile 灌进业务;
2. 发布凭证权限大。AI 创业公司迭代快,常用一个高权限令牌打通 npm、GitHub、CI/CD 多个环节,令牌一旦泄露就是全家桶;
3. 更新频率高。AI 工具包周更甚至日更,团队习惯了自动升级,“新版本=修复”的心理预期正好被攻击者利用。
第二波受影响清单里,大量包正是 AI/开发者工具链属性——Zapier(自动化)、PostHog(产品分析)、AsyncAPI(API 工具)——这与上述结构性风险是吻合的。
🛡️ 防御:把信任换成验证
金句:供应链安全的终极问题,是身份问题。
面对自复制蠕虫,单点防御注定失效。因为攻击者用的是“你的合法身份”,任何基于“这个账号发布的东西是可信的”假设的机制都会被绕过。正确的思路是把各防御手段放到二维坐标上看清楚价值:
右上象限里的 OIDC 短时效发布凭证 是当前最值得投入的方向:让 npm 的 Trusted Publishing 机制基于 GitHub Actions 的身份令牌完成发布,令牌即用即弃、无法长期持有。蠕虫的核心武器——长期有效的发布令牌——在这个机制下直接失效。这有据可查:npm 官方已在 2025 年 11 月通过 GitHub Changelog 宣布收紧经典令牌策略、推进 Trusted Publishing(详见文末信源 7)。
把痛点和解法一一对应:
对一个使用 AI 工具链的研发团队,落地可以按 90 天节奏推进(以事件披露日 2025-11-24 为起点示意):
⚠️ 还要提醒一句:攻击链中确实包含对浏览器存储凭据的窃取(见 Wiz、Socket 的载荷分析)。开发者浏览器里装的各类钱包插件,本质上是常驻的高价值攻击面。工作设备与个人资产隔离,是成本最低、收益最高的个人卫生习惯。
📌 写在最后
金句:你不需要信任整个互联网,你只需要能验证每一次发布。
Shai-Hulud 事件没有造成单一“史诗级漏洞”,但它演示了一个更麻烦的未来:供应链攻击正在蠕虫化、自动化,攻击者借用的是受害者自己的身份和管道。对生态平台方,这意味着发布凭证策略必须继续收紧,短时效身份证明要尽快成为默认;对厂商,最小权限和密钥托管不再是合规装饰,而是生存底线;对每一个开发者,npm install 前多看一眼版本、lockfile 锁住哈希、凭据别落在本机——这三件事在 2025 年之后,应该像系安全带一样自然。
可以预期的是,随着 AI 工具链的包规模继续膨胀,类似的投毒-自复制事件还会出现。真正的问题不是下一个 Shai-Hulud 什么时候来,而是它来的时候,你的发布链路上还有多少张“可以替你发代码的票”在裸奔。
信源
1. Snyk, Shai-Hulud: The first self-replicating npm worm(2025-09-16)
2. Koi Security, The Shai-Hulud NPM Worm 分析(2025-09-15)
3. Wiz, Shai-Hulud: The Second Coming(2025-11-24,含超 1,000 受影响包清单)
4. ReversingLabs, Shai-Hulud 2.0 分析报告(2025-11)
5. Socket, Shai-Hulud 两波活动持续追踪(2025-09 起)
6. CISA 关于 Shai-Hulud npm 蠕虫活动的安全公告(2025-11)
7. GitHub Changelog:npm 令牌策略收紧与 Trusted Publishing(OIDC)相关公告(2025-11)
8. Zapier、PostHog、AsyncAPI 等受影响厂商官方事件通报及受影响版本清单(各厂商官网/安全页面)
“核查说明:文中事件时间、规模数字、载荷能力均以上述一手信源为准;标注“作者分析/推断”的内容为评论性判断,不代表事件当事方披露。受影响包完整清单请以 Wiz、Socket 报告及各厂商公告为准,本文仅列举有据可查的示例。
本文由本站 AI 辅助聚合生成,原始来源如下: