网易首页 > 网易号 > 正文 申请入驻

84个版本带合法签名,2.5小时后烧到110个

0
分享至

5月11日,一个蠕虫在npm上发布了84个恶意版本,覆盖42个TanStack包。这些版本带着有效的来源证明,从TanStack自己的发布流水线里推出去的。两个半小时后,一个Dependabot的合并请求把其中两个版本拉进了一个小型航空数据项目,一次合并就把维护者的发布令牌变成了另外110个恶意版本,用时95分钟。

整个过程没有钓鱼密码,没有一步需要人参与,除了那一次点击。


上游:一个fork的PR埋下了毒缓存

攻击从UTC上午开始。一个改名的TanStack/router fork在10:49打开了PR #7378,标题是"WIP: simplify history build"。

TanStack的bundle-size.yml工作流跑在pull_request_target上,这意味着它在基础仓库的上下文里执行。它检出了fork的合并引用并构建,攻击者的代码就这样跑了起来。11:29,那段代码把一个1.1 GB的pnpm-store缓存存到了发布工作流之后会查找的那个确切键名下。11:31,PR被强制推空、关闭,分支删除。

八小时后,一次正常的合并触发了release.yml。它恢复了那个被污染的缓存。攻击者的二进制文件读取了Runner.Worker进程的/proc//mem,取出了为id-token: write铸造的OIDC令牌,直接把包发到了注册表。工作流自己的发布步骤因为测试失败被跳过了,但恶意软件照发不误。

TanStack自己没发现。一位StepSecurity的研究员在19:46打开了TanStack/router#7383,标题是"Several npm latest releases were compromised",距离第一次发布大约26分钟。21:19,@tan_stack发布了公告。

下游:Dependabot的例行升级成了传播链

21:48,公告发出29分钟后,Dependabot打开了squawk PR #246,"Bump the dev-dependencies group with 13 updates"。13个更新里有两个是@tanstack/router-cli 1.166.40 → 1.166.49和@tanstack/router-plugin 1.167.32 → 1.167.41。两个都被污染了。

Dependabot没有自动合并。它只是提议,由人来审查并在22:12合并,距离PR打开24分钟。事件报告用一句话概括了剩下的部分:发布工作流在NPM_TOKEN在作用域内的情况下跑了npm ci,恶意的prepare脚本外泄了令牌,并用它发布了令牌能访问的每个包的5个恶意版本。

那个令牌是"一个单一且权限过宽的经典npm令牌"。它触及了全部22个@squawk/*包和三个无关的个人包。第一个恶意版本@​squawk/mcp@0.9.1在22:17发出,最后一个@​squawk/mcp@0.9.5在23:52发出。95分钟,110个版本,每个包的latest都指向蠕虫。维护者是从npm的通知邮件里知道的,时间是00:04。

值得注意的是21:03和22:12这两个时间点:下游合并发生时,每一个坏的TanStack版本都已经被弃用了。弃用只是一个警告,npm仍然会安装它。

蠕虫只想要一样东西

StepSecurity反混淆了载荷,一个2.3 MB的混淆JavaScript文件。

它在安装时运行。被污染的TanStack版本添加了一个隐藏的optionalDependency,指向一个孤立的git提交。npm把git依赖当作tarball获取,并在安装期间运行它的prepare脚本。一个分组升级的diff把它藏了起来:它只说"router-cli 1.166.40 → 1.166.49",别的什么都没有。

它想要一样东西:一个不需要第二因素的发布令牌。第一步是搜索带bypass_2fa: true的经典npm令牌。在CI里,它用GitHub OIDC令牌换取每个包的发布令牌。

拿到发布凭证后,它向npm的搜索查询维护者控制的所有包,然后为每一个发布一个被感染的tarball。发布是每个版本一个HTTP请求,没有人工步骤,没有冷却时间。这就是为什么95分钟足够发出110个版本。

它还伪装成Dependabot。它的死信投递提交使用一个伪造的作者名"claude"(不是Anthropic),提交信息是chore: update dependencies,分支名像dependabot/github_actions/format/fremen,然后是sandworm、harkonnen、atreides。StepSecurity说它"模仿了Dependabot的分支命名惯例"。一个机器人提议了版本,一条流水线安装了它,蠕虫回报的方式是穿上机器人的制服。

为什么有效的来源证明没有帮上忙

这些包带着有效的SLSA来源证明。它们确实是从TanStack的发布流水线里出来的,用的是真实的凭证。来源证明能证明"这个包来自它声称的地方",但证明不了"那个地方没有被攻破"。

厂商统计整个生态里超过160个包受影响,包括Mistral的。这个蠕虫被称为Mini Shai-Hulud。

应对是好的。两位维护者都在一天内发布了带时间戳的事后复盘,下游流水线在三天内重建。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
这12家A股估值已跌至历史底部!股息率超5%,ROE超20%(附名单)

这12家A股估值已跌至历史底部!股息率超5%,ROE超20%(附名单)

长风价值掘金
2026-10-02 22:38:09
深圳楼市爆了!

深圳楼市爆了!

睿见投资
2026-10-02 18:00:08
2026年国庆为何没有大阅兵?

2026年国庆为何没有大阅兵?

知法而形
2026-10-01 12:05:49
欧国联:法国1-1意大利 奥利塞任意球世界波 后腰送乌龙助攻 于帕染红

欧国联:法国1-1意大利 奥利塞任意球世界波 后腰送乌龙助攻 于帕染红

狍子歪解体坛
2026-10-03 04:40:31
小区12楼马桶倒灌,泡坏地板门套,物业查出是湿巾、卫生巾把主管道堵了,但找不到“真凶”,法院:楼上6户和受损业主平摊损失

小区12楼马桶倒灌,泡坏地板门套,物业查出是湿巾、卫生巾把主管道堵了,但找不到“真凶”,法院:楼上6户和受损业主平摊损失

都市快报橙柿互动
2026-10-03 01:25:12
上任第一刀,先砍印度制造!苹果新CEO不惯着印度了?

上任第一刀,先砍印度制造!苹果新CEO不惯着印度了?

北向财经
2026-10-02 23:27:05
小S与许雅钧S妈香港逛街被偶遇 戴猫耳朵头箍状态轻松自在

小S与许雅钧S妈香港逛街被偶遇 戴猫耳朵头箍状态轻松自在

小椰的奶奶
2026-10-03 09:11:04
60年首败!国足热身赛0比5不敌巴勒斯坦

60年首败!国足热身赛0比5不敌巴勒斯坦

澎湃新闻
2026-10-02 21:54:08
疑点重重!上海33岁音乐老师偷偷出境飞往曼谷后失联,更多细节披露,“一个人独自前往”成舆论焦点

疑点重重!上海33岁音乐老师偷偷出境飞往曼谷后失联,更多细节披露,“一个人独自前往”成舆论焦点

火山詩话
2026-10-02 15:25:44
美国务卿鲁比奥发文祝贺中国国庆,全文中这句话值得深思

美国务卿鲁比奥发文祝贺中国国庆,全文中这句话值得深思

闻识
2026-10-02 11:41:21
刘欢去世没几天,香港演员佘诗曼传出噩耗,给所有演员提了个醒

刘欢去世没几天,香港演员佘诗曼传出噩耗,给所有演员提了个醒

星河不入我
2026-10-02 20:47:04
新进展!上海音乐老师泰国旅游失联,当事人谎话连篇,落地后去向诡异,更多内幕曝光

新进展!上海音乐老师泰国旅游失联,当事人谎话连篇,落地后去向诡异,更多内幕曝光

子非鱼人
2026-10-03 01:29:09
谁打替补?开拓者主帅:莫兰特和利拉德同时首发非常不合理

谁打替补?开拓者主帅:莫兰特和利拉德同时首发非常不合理

懂球帝
2026-10-03 08:51:19
C罗点赞认可!前巴西国脚:葡萄牙对GOAT缺乏尊重 不如阿根廷对梅西

C罗点赞认可!前巴西国脚:葡萄牙对GOAT缺乏尊重 不如阿根廷对梅西

我爱英超
2026-10-03 06:42:53
这真是大聪明啊!浙江一车主避开高速充电排队,另辟蹊径发现宝藏补能点,47度电仅花20元

这真是大聪明啊!浙江一车主避开高速充电排队,另辟蹊径发现宝藏补能点,47度电仅花20元

火山詩话
2026-10-02 11:13:51
00后捧红的“穷鬼天堂”,成了国庆最狠镰刀

00后捧红的“穷鬼天堂”,成了国庆最狠镰刀

金错刀
2026-10-02 19:11:15
那英悼念刘欢事态升级!官方介入,荒谬的事出现恐步入郭德纲后尘

那英悼念刘欢事态升级!官方介入,荒谬的事出现恐步入郭德纲后尘

云舟史策
2026-10-01 07:07:39
50岁男子冠脉狭窄85%,2年后却完全消失,他的4个方法,值得借鉴

50岁男子冠脉狭窄85%,2年后却完全消失,他的4个方法,值得借鉴

白宸侃片
2026-10-02 13:02:54
一 CEO 被捕!走私 Nvidia 高端 GPU,涉案超 20 亿

一 CEO 被捕!走私 Nvidia 高端 GPU,涉案超 20 亿

云头条
2026-10-02 09:20:17
“陈飞宇太吓人了”成国庆档热词,观众:上一个吓到我的还是《唐人街探案》里的张子枫;导演陈思诚:提前跟陈凯歌导演说过让陈飞宇演反派,“会颠覆你对飞宇所有的认知”

“陈飞宇太吓人了”成国庆档热词,观众:上一个吓到我的还是《唐人街探案》里的张子枫;导演陈思诚:提前跟陈凯歌导演说过让陈飞宇演反派,“会颠覆你对飞宇所有的认知”

极目新闻
2026-10-03 00:33:12
2026-10-03 10:55:00
薛定谔的BUG
薛定谔的BUG
有态度网友ytd
175文章数 103关注度
往期回顾 全部

科技要闻

英伟达盘中创历史新高,市值逼近6万亿美元

头条要闻

苏州两匹马"出逃"闯隧道、上高架 马场负责人:已追回

头条要闻

苏州两匹马"出逃"闯隧道、上高架 马场负责人:已追回

体育要闻

30天30队·快船:被莱纳德挂在半空的未来?

娱乐要闻

假期快乐!贾乃亮晒和甜馨国庆出游照

财经要闻

4亿台电视挂墙落灰 为何没人愿意开了?

汽车要闻

方程豹9月热销破4万 首款皮卡鲨鱼将于四季度上市

态度原创

手机
教育
亲子
艺术
健康

手机要闻

苹果回应少数美国AT&T版iPhone 18 Pro Max出现SOS通信故障

教育要闻

课堂搬进田野!北京“乡村课堂”10月课表来了

亲子要闻

我们面剂子宝宝不愧是最有秩序的土象女孩

艺术要闻

赵无极《蓝色夜航》,5275万港元!

刷酸祛痘,为什么有人翻车?

无障碍浏览 进入关怀版