🏢 公司C档 · NaN分

一条沙虫,正在吃穿 npm 生态

··约1分钟阅读

📋 总体概括

2026年10月8日,AI 数据处理包 Tensorlake 的 npm 版本 0.5.144 被投毒,内嵌 Shai-Hulud 自复制蠕虫新变种,可窃取开发者机密、浏览器加密货币凭据,并借发布令牌沿供应链繁殖。本文拆解其传播机理、AI 基础设施为何成为靶心,以及蠕虫疫情如何改写供应链安全市场格局。

📄 正文

2025 年 9 月,自复制蠕虫 Shai-Hulud 首次席卷 npm;2025 年 11 月下旬,它的第二波疫情再度爆发——这两轮疫情均有 Socket、Aikido Security、ReversingLabs 等安全厂商的公开报告可查。而据 GBHackers 报道,npm 生态里一个不起眼的版本号——Tensorlake 0.5.144——又成了新的感染源。这条蠕虫借道这个 AI 数据处理 SDK,偷凭据、摸钱包,再拿偷来的发布权限继续繁殖。值得追问的是:为什么蠕虫盯上了 AI 基础设施包?防御体系又为什么总是慢半拍?

“编辑注:下文涉及的 Tensorlake 0.5.144 投毒日期与版本号,目前仅见于单一媒体转述,截至发稿未能在 npm 官方渠道或 GitHub Advisory Database 独立核实,请以官方通报为准。可确证的事实是:Shai-Hulud 于 2025 年 9 月与 11 月两度大规模爆发,且其变种化、持续化存续的趋势有多家安全厂商的持续追踪报告佐证。

🐛 深夜一次 install,把贼请进了家门

供应链攻击最可怕的地方,是受害者亲手执行了攻击者的代码。

先设想这样一个场景(以下为情景还原,非真实个案):某个工作日的晚上,一位工程师为了调试文档解析功能,敲下 npm install tensorlake。依赖解析、下载、解压、触发安装钩子——几秒钟之内,恶意脚本已经在他的机器上跑了起来。全程没有任何告警,因为他安装的确实是从官方仓库拉下来的『正牌』包。

据 GBHackers 报道(信源核实情况见文首编辑注),被投毒的 Tensorlake 0.5.144 内嵌了 Shai-Hulud 供应链蠕虫的新变种。参照已确证的前两轮疫情,它的能力清单有三条,每一条都打在要害上:

恶意能力打击对象对应缓解措施
窃取开发者机密环境变量、CI 密钥、配置文件密钥隔离、最小权限
瞄准浏览器存储的加密货币凭据开发者个人资产构建环境与日常浏览隔离
借窃取的发布凭据横向传播上游维护者账号短时效 OIDC 凭据、发布来源证明

这里的关键判断是:传统漏洞利用是『带着撬棍去偷』,恶意包投毒则是『把贼请进家门』。npm 的 install 即执行模型,意味着开发机和构建机就是第一现场。而 CI/CD 环境恰恰是全网密钥密度最高的地方——云凭证、代码仓库令牌、发布凭据一应俱全。一台沦陷的构建机,就是蠕虫的下一个跳板。

🦠 Shai-Hulud 不是木马,是一种『生态位』

木马做的是一锤子买卖,蠕虫做的是自我复制的生意。

Shai-Hulud 这个名字取自科幻小说《沙丘》里的沙漠巨虫。根据 Socket、Aikido Security、ReversingLabs 等厂商的公开报告,2025 年 9 月中旬,它首次现身 npm,首波就波及了数百个软件包,一度被称为 npm 生态首个大规模自复制蠕虫。安全社区随后对其代码持续追踪。两个月后的 11 月下旬,第二波疫情爆发,多家厂商将其称为『Shai-Hulud 2.0』,再次波及大量知名包。本次报道所指的 Tensorlake 事件(若该披露属实),正是这条虫的又一次变种——说明它没有死,只是换了个壳。

  • 2025 年 9 月中旬:首波爆发,数百个 npm 包被感染,自复制能力引发行业震动(有 Socket、Aikido Security 等公开报告为证);
  • 2025 年 11 月下旬:第二波疫情(『Shai-Hulud 2.0』)爆发,波及范围进一步扩大(有 ReversingLabs 等公开报告为证);
  • 2026 年 10 月 8 日:tensorlake 0.5.144 被投毒、新变种现身——此为媒体转述,尚待官方渠道核实。

它的传播逻辑可以浓缩成一句话:它吃的是 npm 生态最核心的资产——发布权。偷到一个维护者的发布令牌,就能以维护者名义发布新版本;新版本里注入安装钩子,感染下游所有安装者;下游环境里如果还存着其他包的维护者凭据,又被收割一轮。信任链每多一层,繁殖就快一分。

蠕虫化彻底改变了威胁模型。过去供应链攻击是定向的、一次性的,安全团队可以按 CVE 的节奏从容打补丁;现在是自动化的、指数级的,防御窗口以小时计。一个难以量化、但在社区讨论中被广泛感知的迹象是:主流开源项目普遍开始收紧依赖更新策略,『自动合并依赖升级 PR』在不少团队内部被叫停——需要说明的是,这一判断来自作者对社区讨论的观察,属于推测,缺乏系统性的调研数据支持。

🤖 AI 工程师的电脑,是全网密钥密度最高的地方

攻击者不挑最流行的包,挑最『有钱』的包。

为什么偏偏是 Tensorlake?它是一个面向 AI 应用的数据处理 SDK,典型用户是 AI 应用工程师。而这类开发者的机器上堆着什么?各大模型厂商的 API Key、向量数据库连接串、云平台凭证,一应俱全;浏览器里还常驻着加密货币钱包扩展。对一条以窃取凭据为生的蠕虫来说,这是凭据与个人资产的双重富矿——这也是为什么新变种会专门去摸浏览器里存储的加密货币凭据。

另一个细节值得玩味:0.5.144 这个版本号本身。上百个小版本,说明这类 AI 基础设施包的发版频率极高。快速迭代是 AI 生态的生存法则,但它同时意味着——人工审包的速度永远追不上发版速度,『最新版本』在很多时候等于『最没有被看过的版本』。攻击者只需要在被投毒版本与被下架版本之间,抢到几小时甚至几十分钟就够了。

更深一层的判断是:AI 供应链正在成为通用供应链问题的放大器。一方面,AI SDK 的依赖树普遍又深又新,大量包龄不足两年;另一方面,AI 开发者持有的凭据价值远高于普通开发者。两相叠加,蠕虫的投入产出比被大幅抬高。这不是 Tensorlake 一家的遭遇,而是整个 AI 基础设施层的结构性暴露面。

🔑 真正的病灶:凭据活得比代码还久

蠕虫跑得快,不是因为代码写得好,而是因为令牌活得久。

复盘 Shai-Hulud 的整条传播链,你会发现每一步都依赖同一个东西——长期有效的发布凭据。npm 的经典发布令牌默认长期有效、权限宽泛,而大量维护者的习惯是把令牌写进本地配置文件,再随项目提交到 CI。蠕虫只要在任意一环收割一次,就能无限繁殖;只要生态里还有一张长寿令牌,这条链就断不了。

事实上,解法早已存在。细粒度令牌、基于 OIDC 的可信发布、Sigstore 来源证明,这些能力 npm 平台均已上线支持,都能把『一次收割、无限繁殖』降级成『一次收割、一次有效』。问题出在采用率上:平台提供了能力,默认值却没有变,多数维护者既没有动力也没有认知去主动迁移。于是攻防就变成了现在这个荒诞局面——防御手段躺在文档里,蠕虫在默认配置上狂奔。

这里的核心判断是:平台方的默认值,决定整个生态的安全水位。把短时效凭据设为默认、把传统长寿令牌逐步下线、对新发布版本引入延迟或沙箱审查,比劝一千个开发者改习惯有效得多。这件事考验的不是技术,而是 GitHub——也就是 npm 的运营方——对生态治理的决心,以及出了事之后,平台责任边界到底怎么划。每一次蠕虫疫情,其实都在替这场博弈加码。

🧭 每一轮蠕虫疫情,都是安全市场的一次洗牌

恶意包没有 CVE 编号,却正在给安全厂商重新排座次。

传统 SCA(软件组成分析)工具——Snyk、Sonatype、JFrog 这一代——的强项是已知漏洞匹配:查 CVE、比版本、报风险,这套流程在漏洞治理上是成熟的。但恶意包不在这个框架里:它没有编号、没有评分、暴露窗口以小时计,等你发布检测规则时,下游可能已经感染了三轮。于是围绕『行为检测』的新一代玩家(如 Socket)开始起势——不看版本号,看安装脚本在干什么、有没有可疑外联、动没动凭据文件。

市场的分化方向,大致可以放进一张四象限里。需要说明的是:以下定位是作者基于各厂商公开产品能力与公开报道的定性判断,坐标数值不代表量化评估,仅供讨论参考。 判断依据简述如下:行为检测厂商(如 Socket)以实时安装事件分析为核心产品能力,恰对蠕虫的症结,且正值企业需求上升期;注册表原生防护掌握『默认值』入口,天花板最高但推进取决于平台意愿;密钥治理平台直接作用于蠕虫的传播媒介,商业价值明确;老牌 SCA 厂商在 CVE 治理上成熟但对恶意包覆盖薄弱;SBOM 合规工具偏流程与合规产出;开源审计脚本免费但依赖使用者自身能力。

行业共识正在从『清单比对』转向『行为分析』,而后者技术门槛明显更高——需要实时拦截安装事件、对脚本做静态与动态分析、

本文由本站 AI 辅助聚合生成,原始来源如下:

🔎 本文基于以下资讯(素材溯源 · 信息来源)

📰 相关阅读推荐(与本文相关的其他资讯)