这是继 2025 年的 Shai-Hulud 蠕虫之后,第二起确认的自我传播 npm 攻击。说明这种玩法已经被黑客摸透了,以后只会更多。
npm 生态系统正遭遇一场前所未有的供应链灾难!
一个名为CanisterWorm的自我传播蠕虫病毒已感染 超过 140 个恶意包制品,波及 66 个以上独特 npm 包。
该蠕虫利用窃取的开发者凭证自动传播,无需人工干预即可感染新的包,形成指数级扩散的"供应链瘟疫"。

事件起因
事情要从去年说起。
有个黑客团伙叫TeamPCP,他们先黑进了Trivy(就是那个很火的漏洞扫描工具)。
他们在Trivy的v0.69.4版本里塞了后门,然后一口气在GitHub上强推了75个恶意标签。
很多开发者中招后,这帮人拿到了大量的 npm 账号密码。

然后他们写了这个CanisterWorm蠕虫——它会自动用你的账号去发布新的毒包,感染更多人。
它是怎么传染的?三步走
第一步:你装了个带毒的包
npm install @emilgroup/xxx ← 看起来正常的包,postinstall 脚本偷偷运行
第二步:它偷你的 npm 账号
翻你的.npmrc文件找 token看环境变量里的NPM_TOKEN找到就保存下来第三步:它用你的身份发毒包
"检测到你有 5 个 npm 包,正在帮你发布 v1.2.3..."
然后下一个开发者安装这些包,循环往复...
已经有多少人中招?
140+ 个恶意版本被发布66 个以上的包被感染重灾区:@emilgroup/*(28 个)、@opengov/*(16 个)如果你最近装过这些组织的包,你的系统可能已经有后门了。

这蠕虫最阴的地方——它用区块链当服务器。
具体来说,它连的是Internet Computer (ICP)的 canister(类似智能合约)。
这玩意儿是去中心化的,没有固定 IP,没有单一服务器,你根本没办法查封它。
它每50分钟去区块链上问一次:"有新指令吗?"
现在那个指令指向的是一个 YouTube 视频(Rick Roll),所以目前是"休眠"状态。
但黑客随时可以把视频链接换成真正的恶意代码,瞬间激活全球所有感染的机器。
还有更狠的:它会看你在哪个国家
最新版本加了地理识别:
检测到是伊朗的电脑 → 直接格式化硬盘 + 强制重启(搞破坏)其他国家的 → 悄悄装后门(搞潜伏)这说明攻击者不单单只是为了钱。
我们现在可以做什么?(按优先级)
应急方案(5 分钟内):
去https://www.npmjs.com/settings/tokens删掉所有token,重新创建跑上面的检查命令,看有没有pgmon服务如果你维护npm包,检查最近有没有异常版本发布删掉node_modules和package-lock.json,重新装依赖加这个配置,禁止安装时自动跑脚本:npm config set ignore-scripts true
(缺点是有些正常包也会失效,但安全第一)
长期方案
给npm账号开2FA(双因素认证)用短期有效的token,别用永久token装包前看看是不是最新源,版本号有没有异常写在最后
以前的供应链攻击:黑客手动一个个包植入,被抓就完了。
这次的蠕虫:全自动传播,越传越多,根本停不下来。
而且这是继 2025 年的Shai-Hulud蠕虫之后,第二起确认的自我传播 npm 攻击。说明这种玩法已经被黑客摸透了,以后只会更多。
现在就去检查你的 npm token 和系统服务。别等明天,明天可能就轮到你当"帮凶"了。
信息来源:GBHackers、Socket、Aqua Security 等安全团队
相关链接:https://gbhackers.com/canisterworm-hijacks-npm/
