删了毒包也没用:MiniShai-Hulud波及TanStack、OpenSearch和Mistral客户端
据 动察 Beating 监测,一款名为「Mini Shai-Hulud」(《沙丘》中的沙虫)的窃密蠕虫正在横扫前端和 AI 后端生态。攻击者 TeamPCP 在 5 月 12 日凌晨 3:20 至 3:26(UTC+8)劫持了 TanStack 官方发布流水线,向 npm 推送了 42 个官方包的 84 个恶意版本,包括千万级周下载量的 `@tanstack/react-router`。随后蠕虫跨界扩散至 PyPI,最新受害名单包括亚马逊 `@opensearch-project/opensearch`(npm,周下载 130 万次)、Mistral 官方客户端 `mistralai` 和 AI 护栏工具 `guardrails-ai`(均为 PyPI)。 恶意包看起来和正规发布完全一样。攻击者没有窃取任何长期凭证,而是利用 GitHub Actions 配置漏洞劫持官方流水线,拿到合法的临时发布权限。恶意包因此获得了真实的 SLSA 构建来源签名(provenance,一种证明「包确实由官方流水线产出」的防伪标签)。开发者过去赖以信任的「有签名 = 安全」逻辑被完全绕过。 更要命的是,卸载毒包远远不够。Socket.dev 逆向分析显示,蠕虫安装后会在后台把自己写入 Claude Code 的执行钩子(`.claude/settings.json`)和 VS Code 的任务配置(`.vscode/tasks.json`)。即便毒包已被删除,只要开发者之后打开项目目录或唤醒 AI 助手,恶意代码就会自动复活。Python 侧触发门槛更低:开发者甚至无需调用任何函数,只要 `import` 受感染的包就会静默激活窃密。 TeamPCP 在分发载荷的伪造域名 `git-tanstack[.]com` 上直接挂出嘲讽留言:「我们已经在线偷了两个多小时凭证了,不过我就是来打个招呼 :^)」。蠕虫仍在自传播扩散。在上述窗口期安装过受影响包的机器应按已失陷处理:立即轮换 AWS、GitHub、npm、SSH 等全部凭据,彻查 `.claude/` 和 `.vscode/` 目录,从干净 lockfile 重新安装。
「查看原文」本内容旨在传递行业动态,不构成投资建议或承诺。