一条蠕虫、一堆AI报告,开源两头失守
📋 总体概括
Tensorlake npm 包被植入 Shai-Hulud 蠕虫新变体,Google 又因 AI 生成的漏洞报告泛滥冻结 OSS VRP 提交。两件事指向同一判断:开源生态的信任机制,正被自动化攻击与自动化'贡献'同时稀释,防御重心必须从查漏洞转向护信任。
📄 正文
一条蠕虫、一堆AI报告,开源两头失守
2025 年 10 月 8 日,npm 包 Tensorlake 的 0.5.144 版本被证实为投毒版本,内嵌自复制蠕虫 Shai-Hulud 的新变体;几乎前后脚,Google 冻结了开源漏洞奖励项目 OSS VRP 的产品漏洞提交,原因是 AI 生成的漏洞报告洪水般涌入。
一条蠕虫,一堆 AI 报告,看似八竿子打不着,其实捅的是同一块天花板:开源世界的运转前提是“发布者可信、提交者有诚意”,而这个前提,正在被自动化攻击和自动化灌水两头掏空。
这是 2025 年开源供应链安全最真实的两块切片。
🪱 一个版本号背后的一整条传播链
供应链攻击最可怕的地方,是它不需要“新漏洞”。
先还原一下场景。某天上午,一个做数据管道的团队照常跑 npm install,拉取 Tensorlake——一个在 AI 数据处理场景里颇有人气的包。版本号是 0.5.144,看起来是一次再普通不过的例行更新。没有人去 diff 源码,也没有人怀疑版本号本身。
问题恰恰出在这个版本上。根据 GBHackers 等安全媒体的披露,2025 年 10 月 8 日发布上线的 Tensorlake 0.5.144 是被攻击者主动投毒的恶意版本,内嵌了 Shai-Hulud 供应链蠕虫的新变体。而 Shai-Hulud 本身并不陌生——它最早于 2025 年 9 月大规模爆发,据 Socket、Wiz 等安全厂商的分析报告,首轮感染波及数百个 npm 包,是公开记录中 npm 生态里第一例具备自复制能力的供应链蠕虫。
这个变体干了三件事,每一件都值得单独拎出来说:
- 窃取开发者机密:环境变量、配置文件里的密钥、令牌,都在它的收割清单里;
- 盯上浏览器里的加密货币凭据:浏览器存储的加密钱包相关凭据被定向窃取,指向直接的变现路径;
- 利用窃取来的发布凭据继续扩散:这是 Shai-Hulud 家族最标志性的能力——偷到你的 npm 发布令牌,就用你的身份,往你的其他包里塞新版本的恶意代码。
把处置路径和时间点排一下,脉络就很清楚(据公开报道与安全厂商披露整理):
- 2025-09:Shai-Hulud 首轮爆发,自复制供应链蠕虫首次进入公众视野;
- 2025-10-08:恶意版本 Tensorlake 0.5.144 发布至 npm 仓库,被识别为携带新变体;
- 随后:安全社区确认变体特征——窃密、自复制、借发布凭据横向扩散;
- 同步展开:受影响团队排查本机凭据泄露情况,检查下游依赖树是否已引入该版本;
- 长期动作:确认发布链路凭据暴露面,轮换令牌、收紧发布权限。
产业逻辑只有一句话:攻击者打的是“信任”本身,不是某个软件的缺陷。Tensorlake 本身没有任何漏洞需要利用——攻击者只要拿到一次合法的发布权限,就能让“正常的更新动作”变成攻击入口。这也是为什么这类事件反复发生却始终防不干净:防守方守的是代码质量,攻击方攻的是发布流程。
🌊 Shai-Hulud 为什么这么难缠:信任链变传播链
蠕虫的可怕,在于它把一次攻击复制成了无数次。
Shai-Hulud 最早进入公众视野时,社区给它的绰号就叫“沙虫”——致敬《沙丘》里那种自我繁衍的巨兽。这个名字起得相当精准:它不是一次性的钓鱼或投毒,而是具备自复制能力的供应链蠕虫。每一次成功感染,都会成为下一轮传播的起点。
拆开看它的传播引擎,是一个自我强化的循环:开发者环境失守 → 窃取发布令牌 → 借维护者身份发布投毒版本 → 下游项目安装中招 → 在新环境里再窃取一轮凭据 → 循环继续。
这个循环里最致命的环节是“借身份发布投毒版”。因为在这一步之后,恶意代码披着的是合法维护者的合法身份:版本号是正常的递增,发布账号是真实的维护者,下载源是官方 npm registry。所有传统的“信任信号”全部失效。
而新变体的两点进化,进一步压缩了防守窗口:
一是变现路径变短了。 老一代供应链恶意软件往往先潜伏、再横向移动、最后才谈变现,留给检测的时间相对宽裕。这次 Tensorlake 事件里的变体直接把“浏览器存储的加密货币凭据”写进了收割清单——从感染到可能的钱包失窃,可能只隔着一个开发者挂机过夜的晚上。
二是传播不依赖代码漏洞。 它依赖的是“人会凭据复用、CI 环境会长期保存发布令牌、发布动作可以全自动执行”这些生态默认设定。换句话说,只要 npm 生态里还存在着“长期有效、权限宽泛的发布令牌”,Shai-Hulud 类蠕虫就永远有燃料。这个判断不是本文的发明——Socket、Wiz 等安全厂商在 Shai-Hulud 首轮爆发后的分析报告里,都把“宽泛授权的长期发布令牌”列为蠕虫得以横行的核心条件;由此可以合理推断:单个包的沦陷,会被蠕虫机制放大成整棵依赖树的持续暴露,这也是每一次 Shai-Hulud 变体出现,生态侧紧张程度都远高于普通投毒事件的原因。
🤖 另一头失守:AI 报告淹没了漏洞赏金
如果说蠕虫攻击的是发布链,那 Google 这件事,攻击的是“防御者的注意力”。
Google 于 2025 年暂停了开源漏洞奖励计划 OSS VRP 的产品类漏洞提交。原因听起来有点哭笑不得:AI 生成的漏洞报告实在太多了,多到人工 triage(分诊)能力被彻底击穿,只能先冻结通道止血。
这事得从赏金机制的基本盘说起。漏洞赏金的前提是一个隐含契约:研究者付出人力找到真问题,平台付出金钱奖励,双方各取所需。这个契约能跑起来,靠的是提交一份高质量报告的边际成本不为零——你得真的读代码、搭环境、写复现步骤。
大模型把这个前提打穿了。用 AI 批量生成“看起来格式规范、术语专业、描述完整”的漏洞报告,边际成本趋近于零。哪怕百分之九十九是幻觉或重复,只要撞上一条真漏洞,回报依然可观。于是契约的另一半——平台侧的 triage 成本——被无限放大:每份报告都得人来看,看完十有八九是无效的。
这不是危言耸听,而是已经反复上演过的场景。curl 的核心维护者 Daniel Stenberg 在 2025 年 6 月公开发文,直斥 AI 生成的漏洞报告是 "AI slop"(AI 垃圾):报告格式工整、措辞专业、复现步骤一板一眼,但一验证就是模型幻觉,或者干脆是老 CVE 换了个马甲;他和团队为此消耗了大量本该投入开发的时间。开源生态里“白天写代码,晚上删 AI 假报告”,正在从个别人的抱怨变成维护者群体的普遍处境。
Google 的应对是典型的止损式冻结:先把产品漏洞提交口子关上,遏制低质量报告的灌入,再想办法重建筛选机制。这个动作的信号意义大于实际意义——它等于官方承认,威胁模型里得加一个新条目:防御者注意力本身,是可以被 DoS 的。
产业逻辑也在这里:过去我们说安全团队资源不足,指的是预算和人头。现在要加一条——他们可用的判断力,正在被自动化内容稀释。蠕虫消耗的是发布链的信任,AI 灌水消耗的是赏金通道的信任,两者用的其实是同一套打法:把自动化成本优势,对冲掉守方的人力瓶颈。
🧭 两件事连起来看:开源的信任机制在双向失血
把两件事并排放,规律会自己浮出来。
| 维度 | **Tensorlake** 投毒事件 | **Google** OSS VRP 冻结 |
|---|---|---|
| 攻击面 | 软件发布链(npm 包) | 漏洞报告通道(赏金计划) |
| 手段 | 自复制蠕虫 + 凭据窃取 | AI 批量生成报告 |
| 被消耗的信任 | 发布者身份可信 | 提交者意图可信 |
| 自动化的角色 | 攻击自动化、自复制 | "攻击”triage 环节自动化 |
| 官方反应 | 版本排查、凭据轮换 | 暂停提交、重建筛选 |
两张牌面完全不同,底层是同一个结构:开源生态的所有协作机制,都建立在“低成本信任”之上;而自动化工具,让伪造这种信任的成本降到了历史最低点。
就当下的主要防御手段做一个冷静的排序:发布令牌管控(短期化、细粒度、双人复核)性价比最高、最该优先落地——它直接切断 Shai-Hulud 类蠕虫最依赖的传播燃料;依赖哈希锁定、新版本观察期属于低成本高回报的基础卫生;纯人工评审覆盖有限,只能作为补位手段,注定挡不住结构性攻击。这个排序本身,就是下文防御框架的依据。
更值得警惕的是一个隐藏判断:AI 在这两件事里都是“降本工具”。攻击方用它降低攻击成本,灌水方用它降低造假成本。安全行业讲了十年的“攻击者总会用新技术”,这次是真的落到开源协作的基础设施上了。防御方如果还停留在“多招几个安全工程师”的思路,等于用人力去填自动化的坑——填不上的。
🛠️ 防御怎么落地:三层各管一段
面对“信任被自动化伪造”这个新常态,防御框架可以从发布、消费、平台三层来搭,每层各管一段,缺一不可。
发布侧的核心,是把“一次凭据泄露”的爆炸半径压到最小。 具体动作包括:令牌短期化(按小时或按天过期)、按包粒度授权而非全局授权、关键包发布走双人复核、启用基于构建出处的发布签名(如 npm 的 provenance 机制)。这些措施防不住蠕虫的第一跳,但能防住第二跳、第三跳。Shai-Hulud 的传播引擎靠的就是“一份长期令牌发遍全家桶”,燃料断了,引擎就停了。
消费侧的核心,是给升级动作加一点“摩擦”。 锁文件配合哈希固定(integrity 校验),能保证团队拿到的是审计过的那份代码;对热门包的新版本保持 24 到 48 小时的观察期再升级,几乎零成本,却能把“上午投毒、下午收割”的窗口直接废掉大半;再辅以定期的依赖审计与异常行为扫描。这层的投入产出比极高,可惜多数团队嫌麻烦。
平台侧是最难也最关键的一层。 npm、GitHub 这类平台,需要在版本发布节奏异常、新版本行为特征可疑时给出自动化告警,把“投毒版本存活时间”从几天压到几小时;赏金平台则需要 AI 对 AI——用模型先做一轮自动分诊,把幻觉报告挡在人工 triage 之前,否则 Google 式的“冻结通道”还会在别家重演。平台是信任的最终守门人,这一层不做,前两层的努力会被规模稀释。
三层各管一段、互相咬合,才能把“信任伪造成本”重新抬高到攻击无利可图的位置。
小结
Tensorlake 投毒和 Google OSS VRP 冻结,一攻一守、一明一暗,共同标记了开源安全的范式转折:攻击的瓶颈不再是漏洞,而是信任的伪造成本;防御的瓶颈不再是补丁,而是注意力的保护成本。 未来一两年的分水岭会很清楚——谁先把发布凭据管起来、把分诊环节自动化,谁就能在这场“自动化对自动化”的消耗战里守住阵地。沙虫还会再来,但燃料的阀门,其实握在我们自己手里。
本文由本站 AI 辅助聚合生成,原始来源如下: