威胁情报 | Tensorlake npm 包遭 Shai-Hulud 蠕虫投毒
kwonculture
kwonculture
酷酷信安
2026年10月9日 15:28
四川
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
威胁情报 | Tensorlake npm 包遭 Shai-Hulud 蠕虫投毒
为方便阅读显示,建议大家把酷酷信安“设为星标”
威胁等级:高危 | 威胁类型:软件供应链攻击 / 自我传播蠕虫 / 凭据窃取 威胁家族:Shai-Hulud | 影响生态:npm(Node.js) 事件披露:2026-10-08(Endor Labs)
一、摘要与问题分析
2026 年 10 月 8 日,Tensorlake 官方 TypeScript SDK 的 npm 包 [email protected] 被披露携带 Shai-Hulud 蠕虫恶意负载 。该包周下载量超 12,000 次、GitHub 星标超 1,000 ,属于真实生产环境中被广泛依赖的组件,供应链风险等级高。
关键研判:
- 攻击路径极具迷惑性:恶意版本经由项目正常的 GitHub Actions 官方流水线构建发布,甚至携带有效的构建来源证明(build provenance)[S1]。核心教训:来源证明只能证明\"构建来自该流水线\",不能证明源码本身是干净的。
- 根因指向维护者账户失陷:攻击者先污染主分支,再让受信任的自动化流水线\"合法地\"发布恶意包——维护者凭据被盗是 Shai-Hulud 的标志性手法 [S1]。
- 蠕虫化扩散:窃取受害者的 npm/GitHub 凭据后,自动感染受害者名下其他 npm 包,呈链式扩散 [S1]。
- 当前状态:恶意版本 0.5.144 已从 npm 注册表移除;0.5.143 及更早版本确认干净[S1]。
事件时间线(UTC)[S1]:
| 时间 | 事件 |
|---|---|
| 2026-10-07 01:20 | 首个恶意提交 e90c47bbb2 进入仓库主分支 |
| 2026-10-08 01:12:07 | 恶意版本 [email protected] 经官方流水线发布至 npm |
| 2026-10-08 | 恶意版本下架;Endor Labs 披露分析 |
二、技术细节
2.1 触发机制:preinstall 钩子,npm install 即中招
攻击者在 package manifest 中植入 preinstall 钩子,执行 node lib/setup.mjs。npm 会在安装任何内容之前运行 preinstall,因此受害者执行 npm install 的瞬间恶意代码即被触发,无需任何额外交互。
新增两个恶意文件:
| 文件 | 角色 | 说明 |
|---|---|---|
lib/setup.mjs |
加载器 | 小型混淆 loader,负责环境感知并拉取第二阶段 |
lib/Math_Symbol.js |
主负载 | 大型混淆 payload,约 856 KB;内嵌蠕虫标记 globalThis.WORMTAG='tensrlake'(注意拼写) |
2.2 环境感知:精准狩猎 CI 高价值目标
加载器检测 CI、GITHUB_ACTIONS、GITLAB_CI、RUNNER_ENVIRONMENT 等环境变量,判断是否运行于 CI/CD 环境(CI 环境通常持有高价值凭据),随后拉取并执行第二阶段负载。
2.3 蠕虫传播与数据外泄
- 调用 GitHub API 与 npm 注册表 API,完成凭据收集、令牌验证、OIDC 令牌交换、维护者身份查询;
- 用窃得的凭据将自身重新发布到受害者控制的其他 npm 包中;
- 自动创建 GitHub 仓库用于存放窃取的数据;
- EtherHiding 持久化技术:C2 域名不硬编码,通过读取以太坊链上数据(特定钱包地址)动态解析当前 C2,可随时在链上轮换,封堵与溯源难度大。
2.4 凭据窃取范围(9 类目标,覆盖云原生全链路)
npm 令牌(.npmrc)、SSH 私钥、AWS / GCP / Azure 云凭据、Kubernetes 与 Docker 配置、HashiCorp Vault 令牌、CI 与制品注册表令牌、GitHub CLI 配置、.env 环境变量文件;运行于云主机时还会探测内部元数据端点(IMDS)窃取短期云凭据。
三、造成的危害
- 凭据大面积泄露:任何安装过 0.5.144 的主机(尤其是 CI 环境),其上全部凭据、密钥、令牌均应视为已泄露,危害可横向扩散至整个云基础设施与代码资产。
- 供应链链式扩散:蠕虫利用受害者凭据感染其名下其他 npm 包,形成\"受害者即传播者\"的指数级扩散模型,单一安装事件可演变为多个开源项目被投毒。
- 信任机制失效示范:恶意包经由官方流水线发布且携带有效来源证明,\"来源证明 + 官方渠道\"的传统信任校验手段对此类攻击部分失效。
- 数据持久化外泄:窃取的数据被写入攻击者控制的 GitHub 仓库与 C2 服务器,且 C2 可链上轮换,数据追回与彻底清除困难。
- 同批次包连带受影响:同批发布的 6 个
tensorlake-native-*@0.5.144平台二进制包虽未检出负载(仅含原生二进制、无安装脚本),仍建议按受影响处理并弃用。
四、IOC 失陷指标
4.1 恶意包
| 包 / 版本 | 状态 | 说明 |
|---|---|---|
[email protected] |
🔴 恶意·已下架 | 携带蠕虫负载,npm 官方已移除 |
tensorlake-native-*@0.5.144 (6 个平台二进制包) |
🟡 按受影响处理 | 未检出负载,仍建议弃用 |
[email protected] 及更早 |
🟢 安全 | 无 preinstall 钩子与负载文件 |
4.2 文件哈希(SHA256)
| 文件 | SHA256 |
|---|---|
lib/setup.mjs |
25a0735d0db7dc40e5d45ce42d9c106067e6a66e184d967cfecfab17c3bcb5ef |
lib/Math_Symbol.js |
b50a00900399ba99fb6ce1fc151519cb99d44320ef2a631f2237e1aea0ad6fec |
4.3 C2 与区块链IOC
| 类型 | 值 | 说明 |
|---|---|---|
| ETH 钱包地址 | 0xb614155Fd88114d40549b259457Bcf921Df091B9 |
EtherHiding 解析器,链上存放当前 C2 域名(持久化指标) |
| C2 域名 | iseekaigogo[.]com |
守护进程向其 POST 受害者主机/用户/操作系统信息;可链上轮换 |
4.4 特征字符串
globalThis.WORMTAG='tensrlake'(蠕虫感染标记,可用于代码库 / 制品扫描)
4.5 溯源地址
- 源仓库:https://github.com/tensorlakeai/tensorlake ([S1] 引用;项目身份经 [S2] 核实)
- 首个恶意提交:
e90c47bbb2(https://github.com/tensorlakeai/tensorlake/commit/e90c47bbb2 ) - 投毒流水线运行记录:https://github.com/tensorlakeai/tensorlake/actions/runs/37706134202
五、修复以及制止方案
5.1 应急处置(已安装过 0.5.144 的环境)
- 立即阻断:卸载/阻止
[email protected],可信新版本发布前将依赖固定(pin)在0.5.143[S1]; - 清除污染缓存:删除 lockfile 中引用 0.5.144 的条目,清空 npm 包缓存与 CI 构建缓存,从干净源重新安装 [S1];
- 凭据全量轮换(核心止损):凡安装过该版本的主机(特别是 CI)假定凭据已泄露,立即轮换 npm 令牌、GitHub 令牌、SSH 密钥、AWS/GCP/Azure 云密钥及该主机上的所有秘密 [S1];
- 审计异常活动:检查 GitHub 与 npm 账户近期活动——异常仓库创建、新令牌、受影响账户下的异常发布记录 [S1];
- 外联检测:排查对
iseekaigogo[.]com的访问记录,及对169.254.169.254、169.254.170.2、127.0.0.1:8200的异常探测 \*。
参考来源
| 编号 | 来源 | 地址 |
|---|---|---|
| S1 | Endor Labs《Tensorlake npm Package Compromised by Shai-Hulud in Latest Software Supply Chain Attack》(Kiran Raj / Rachana Misal,2026-10-08)—— | https://www.endorlabs.com/learn/tensorlake-npm-package-compromised-by-shai-hulud-in-latest-software-supply-chain-attack |
| S2 | Tensorlake 官方 GitHub 仓库(交叉佐证项目身份、星标数、TypeScript SDK 存在性) | https://github.com/tensorlakeai/tensorlake |
| S1-引 | 投毒流水线运行记录([S1] 文中引用原始证据) | https://github.com/tensorlakeai/tensorlake/actions/runs/37706134202 |
*往期推荐:*
CVE-2026-94545 Next.js next/og 未经身份验证的远程代码执行 POC
fastjson 1.2.66–83 rce 复现环境项目及POC
持续分享技术干货,喜欢这篇文章,记得三连哦!
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论