flawopen.com/Incidents/tensorlake-npm-install-hook-compromise-october-2026
●
Tensorlake · CWE-506 · October 8, 2026 · 严重
安全研究 · FlawOpen
Tensorlake npm 0.5.144:恶意安装钩子
Tensorlake AI SDK 的恶意版本加入了 preinstall 加载器。维护者确认有人直接修改 main 并加强了发布流程;GitHub 恶意软件公告要求将已运行该代码的主机视为已遭入侵。研究人员将其加载器模式与 ChainDrop/Shai-Hulud 家族联系起来;GitHub 公告未确认这一归因。[1], [2], [3], [4], [5]
💡 通俗易懂的原理解析 (ELI5)
安装这个包就像接通一个会立即启动的设备:无需按按钮或实际使用它。npm 在有人导入 SDK 之前,就以安装进程的权限运行了恶意的预安装钩子。也就是说,触发点是安装动作本身,而不是之后导入或调用 SDK 功能。[3], [6], [1]
核心概念与专有名词
安装脚本防护检查- 当待发布清单声明安装生命周期脚本时,CI 会失败的检查。事件后,Tensorlake 将其与 npm ci --ignore-scripts 一同加入。[3]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-506
事件演进时间线
攻击执行流程分解
步骤 2
步骤 3
源代码对比:漏洞与安全实现
此 CI 对比依据维护者合并的 PR #1016;它不包含恶意包或 exploit。防护检查在安装前运行,拒绝发布清单中的安装钩子;ignore-scripts 可阻止 npm ci 执行依赖的生命周期脚本。维护者称项目测试和 SDK 构建在此设置下可运行。需要安装钩子的依赖可能受影响;显式调用的 npm test 等命令仍会运行其指定脚本。后续构建步骤应隔离,来源证明不能代替源代码审查。此代码片段并不完整:维护者的检查除了核对已声明的安装钩子,还会拒绝 typescript/lib/ 中的意外文件。[3], [6]
存在漏洞的实现
steps:
- run: npm ci加固后的安全修复
steps:
- run: node scripts/check-no-install-scripts.mjs
- run: npm ci --ignore-scripts工程与系统安全加固清单
- ✓在清单、锁文件、缓存和构建记录中查找 tensorlake@0.5.144。公告指明了这个确切 npm 版本;仅凭包名不能推断已受影响。[1]
- ✓如果安装已运行,请将主机与网络隔离并保留证据。删除依赖不能证明持久化或其他更改已清除;无法确认完整性时,应从可信介质重建。[1], [4], [5]
- ✓保持主机隔离,并在撤销或轮换令牌前,与事件响应人员协调识别并清除研究人员报告的、可能由令牌撤销触发的持久化行为。遵循最新响应建议,并从干净系统执行处置。[4], [5]
- ✓响应人员处理完报告的持久化行为后,从干净系统撤销并轮换安装进程可访问的凭据。审查可访问的仓库和包发布,并检查 CI 产物及审计日志中的未授权变更。[4], [5], [3]
- ✓在 CI 中于依赖安装前运行经过审查的安装脚本检查;兼容时使用 npm ci --ignore-scripts;隔离必需的构建脚本;移除管理员和直接推送绕过;发布需独立审批。[3], [6]
- ✓截至 2026-10-12,请检查你的环境是否安装了以下六个
tensorlake-native-*配套包(版本0.5.144)之一:tensorlake-native-linux-x64-gnu、tensorlake-native-linux-x64-musl、tensorlake-native-linux-arm64-gnu、tensorlake-native-linux-arm64-musl、tensorlake-native-darwin-arm64、tensorlake-native-win32-x64。当天 npm registry 对每个包均返回了版本元数据,因此应将它们视为仍在发布,并纳入暴露范围清单。这只能证明它们在 registry 中可用,不能证明配套包包含此次事件的恶意载荷。维护者在已合并的 PR #1016 中表示,当时这些版本仍待撤下。[3], [8], [9], [10], [11], [12], [13]
参考来源
- GitHub Advisory Database — GHSA-rqxj-g25x-4v9v
- Tensorlake — 事件 issue #1014
- Tensorlake — 响应 PR #1016
- StepSecurity — 技术分析
- Socket — 技术分析
- npm v10 — npm ci 与 ignore-scripts
- Tensorlake — 干净版本 0.5.145
- npm registry — tensorlake-native-linux-x64-gnu@0.5.144
- npm registry — tensorlake-native-linux-x64-musl@0.5.144
- npm registry — tensorlake-native-linux-arm64-gnu@0.5.144
- npm registry — tensorlake-native-linux-arm64-musl@0.5.144
- npm registry — tensorlake-native-darwin-arm64@0.5.144
- npm registry — tensorlake-native-win32-x64@0.5.144