装一个SDK,可能把公司家底一起交出去。这次出事的是npm上的tensorlake——一个给Tensorlake应用、沙箱和云服务用的TypeScript开发工具包。恶意版本0.5.144已经被确认下架,不再能从npm仓库下载。
安全机构Socket对这次投毒的分析结论很直接:这个版本里塞了混淆过的恶意代码,干的事包括收割凭证、外传密钥、在主机上建立持久化,以及执行远程下发的代码。它不是一个孤立的坏包,而是ChainDrop / Shai-Hulud供应链攻击的一环。
![]()
它是怎么跑起来的
恶意版本里埋了一个preinstall钩子,作用是拉起一个JavaScript文件(package/lib/setup.mjs)。这个文件是个混淆过的加载器,再用Bun运行时启动真正的主力——一个负责偷凭证和自我传播的蠕虫(package/lib/Math_Symbol.js)。
也就是说,从你敲下安装命令的那一刻起,链条就已经开始转了,不需要你额外运行什么。
偷的东西覆盖面很宽,本地文件、CI环境、Kubernetes、Vault都在它的目标清单里。它还会投放HackBrowserData这个二进制文件,把收集到的数据外传,在主机上留下持久化后门,并为进一步执行远程下发的代码铺路。
Socket对风险的描述是:这种组合让危害超出"丢一个API key"的范围。任何执行进程能碰到的密钥都可能暴露,而持久化意味着即使你把有问题的依赖删掉,攻击者的访问权限也可能还在。
被偷的清单,比想象中长
具体被收割的数据类型包括:
- npm令牌
- GitHub令牌
- AWS凭证和密钥
- HashiCorp Vault
- Kubernetes凭证
- SSH密钥
- .env文件
- 加密货币钱包
- 通讯应用数据
- Anthropic Claude、Cursor、Kiro、Windsurf、Zed相关的配置和MCP文件
这份清单里最值得注意的是最后一项。它盯上的不只是传统意义上的服务器凭证,还有AI编程工具和编辑器的配置文件——这些文件里往往存着模型服务的密钥和上下文配置。
它还会自己找下一个受害者
传播方式上,Socket的解释是:蠕虫会枚举与受害者发布身份关联的包,构建Sigstore来源证明,然后重新发布被污染的版本。代码里还出现了伪造的Copilot/Dependabot工作流字符串,说明它也会往仓库里植入GitHub Actions工作流。
命令与控制端点的解析用了一个以太坊合约,指向iseekaigogo[.]com,GitHub则作为备用通道,把加密后的窃取数据暂存在一个公开仓库里,仓库描述写着"Shai-Hulud: Here We Go Again"。
还有一个被称作"人质令牌"的组件。它用PowerShell监控程序反复调用api.github.com/user,拿偷来的GitHub令牌验证是否还有效。如果受害者试图吊销令牌,这个监控程序就会通过Invoke-Expression执行攻击者提供的处理逻辑,运行一段很可能是破坏性例程的PowerShell代码。这种手法在此前的Shai-Hulud攻击波里出现过。
恶意代码是怎么进仓库的
StepSecurity的说法是,恶意文件是以一名维护者的名义推送到tensorlakeai/tensorlake的main分支,随后包从同一个仓库发布出去。第一个恶意提交发生在2026年10月7日凌晨01:20(UTC)。一天之后,仓库的发布工作流把0.5.144发到了npm。
StepSecurity的Ashish Kurmi还提到一个细节:恶意代码会往它能触及的仓库里写入.claude/settings.json和.vscode/tasks.json文件,这样当有人用Claude Code或VS Code打开这个项目时,它就会再跑一次。
这个设计把触发点从"安装依赖"扩展到了"打开项目"。开发者日常最放松的动作,成了二次感染的入口。
这不是第一次,也不会是最后一次
ChainDrop最早在2026年8月初被记录,当时和数百个npm包被污染有关,其中包括Keyv和Cacheable,它们被发现含有一个Mini Shai-Hulud变种——通过混淆过的、基于Bun的JavaScript载荷投递自我传播的窃密蠕虫。
这次的新进展,是把供应链攻击延伸到了AI agent基础设施上。攻击者越来越倾向于盯住AI工具和服务,从企业里榨取有价值的数据。
已经装过恶意版本的用户,建议立即移除,并轮换所有相关凭证。删包只是第一步,凭证不换,风险还在。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.