跳转到内容
Guide

迷你 Shai-Hulud npm 蠕虫:检测、旋转并缩小爆炸半径

| 8 min read

TanStack、Mistral AI 和 UiPath npm 软件包于 2026 年 5 月 11 日受到攻击。一个 60 秒的检测脚本、一个轮换优先检查表以及替代四种最严重的软件包类型的单一用途 API。

Code on a terminal representing an npm supply chain incident response
Photo by Caspar Camille Rubin on Unsplash

2026 年 5 月 11 日 19:20 至 19:26 UTC 期间,TeamPCP 威胁发起者推送了 400 多个恶意代码 一次协调突发中包含 170 多个 npm 和 PyPI 包的版本。 TanStack 路由器、TanStack 查询适配器、Mistral AI SDK、UiPath 和 Guardrails AI 都在爆炸范围内。 六 发布分钟; 数周的清理工作。

这波病毒是 Mini Shai-Hulud 蠕虫:一种自动传播的安装后有效负载,可窃取信息 维护者令牌,然后使用这些令牌在包中发布更多中毒版本 受害人控制。 OpenAI 要求 macOS 用户进行更新。 世界各地的 CI 管道运行 在任何人阅读该建议之前有效负载。

如果你跑了 npm install 2026 年 5 月 11 日 19:20 UTC 之后,在 CI 运行程序或开发人员笔记本电脑上, 你欠自己 60 秒的检查、轮换传球和结构性改变,以便下一波 花费你更少。 这是剧本。

第 1 步:60 秒内检测

该蠕虫会留下三个响亮的信号:锁定文件中受损的软件包版本、Git 提交 或名为的存储库 Shai-Hulud-Migration,意外的 GitHub Actions 运行 泄露秘密 webhook.site 或 TruffleHog 二进制文件。 从任何主机运行此命令 与 ghnpm 安装:

对这四个命令中任何一个的任何点击都意味着您立即跳到步骤 2。 没有 “先调查一下”的路径。 蠕虫病毒在建议完成之前就结束了。

Mini Shai-Hulud 有效负载在您的 postinstall 挂钩特权 无论谁跑了 npm install。 在具有 OIDC 的 CI 运行器上,这是一个联合身份 具有云访问权限。 在开发人员笔记本电脑上,这是每个秘密 ~/.aws, ~/.ssh, ~/.npmrc,以及您的 shell 历史记录。

第 2 步:先旋转,再调查

法医鉴定将于下周进行。 轮换是为了下一分钟。 为每个秘密打开 Runbook 选项卡 受影响的机器接触到的表面并同时撤销。 该脚本枚举表面 所以什么都不会错过:

捕获蠕虫下游移动的旋转顺序是:npm 令牌(停止新的 发布)、GitHub PAT(停止存储库创建)、云 IAM 密钥(停止数据泄露)、 第三方 SaaS 密钥(Stripe、Slack、OpenAI、Anthropic),最后是缓存在磁盘上的 SSH 密钥。 仅当旧凭据在源处失效后才更新您的机密管理器。

使用违规 API 检查您的 CI 电子邮件是否泄露

TeamPCP 发布 IOC 转储,其中包括从受感染的维护者电子邮件 ~/.npmrc 文件。 对您的发布机器人帐户进行违规检查以确认 您的地址是否出现在 5 月 12 日的转储中:

如果您的发布电子邮件出现在最新源中,则相应的 npm 令牌已经存在 公开。 撤销它,轮换发布工作流的 OIDC 信任关系,然后在 新身份。

第 3 步:清除日志和票证中泄露的秘密

蠕虫有效负载将环境变量转储到日志中,这些日志流入 Datadog、Sentry、Slack 和 您的票务系统。 将 5 月 11 日 19:20 UTC 之后写入的每条日志行视为可疑。 管材 高风险字段在进入冷库之前通过 PII 和秘密探测器进行检测:

同一端点标记 AWS 密钥、npm 令牌、GitHub PAT、Stripe 密钥和 JWT。 将其连接到 记录失败关闭的中间件:如果检测调用超时,则删除该行而不是 写入可能有毒的记录。 丢失日志条目比将凭据发送到 可查询索引。

第 4 步:用 CI 守卫阻止下一波攻击

该蠕虫依赖于登陆您的运行程序的三件事:受损的软件包版本、 运行的安装后挂钩,以及要发布的出站网络访问。 阻止其中任何一个并且 链条断裂。 如果锁定文件更新引入了 已知错误版本、蠕虫 IOC 或没有签名出处的运行时 dep:

与它配对 npm config set ignore-scripts true 关于 CI 运行者和明确的 合法需要构建步骤的包的白名单(TypeScript、esbuild、Sharp)。 的 一次性噪音值得防蠕虫默认设置。

第五步:缩小可容纳蠕虫的表面

2026 年 4 月和 5 月浪潮中中毒最严重的软件包类型是 AI SDK、验证 助手、HTTP 客户端和小型实用程序。 其中每一个都是要删除和删除的候选者 替换为可撤销的 HTTP 调用。 比较爆炸半径:

类别 典型的 npm 受害者 HTTP 替换 撤销
电子邮件验证 验证器、深度电子邮件验证器 /v1/email/validate 轮换 API 密钥
违规检查 hibp 客户端包 /v1/breach/check 轮换 API 密钥
PII 和秘密扫描 Secretlint,PII 检测器 /v1/pii/detect 轮换 API 密钥
电话解析 libphonenumber-js /v1/phone 轮换 API 密钥

首先选择带有安装后挂钩的软件包。 其次选择 AI SDK(Mistral、Guardrails、 和 LiteLLM 在过去两个月都受到了损害)。 保留繁重的进程内库 你实际上需要; 删除那些你可以自己进行的 200 毫秒的调用。

要点

  • 60 秒内检测。 受损的软件包版本,名为 repos Shai-Hulud-Migration和未经授权的 GitHub Actions 运行是三个响亮的声音 信号。 一击就意味着旋转。
  • 在调查之前先旋转一下。 npm 令牌、GitHub PAT、云密钥、SaaS 密钥、SSH 密钥。 该蠕虫的下游凭证销售在几分钟内开始,而不是几天。
  • 擦洗日志。 通过管道输送高风险领域 /v1/pii/detect 和 超时失败关闭。 丢失的日志行胜过泄露的凭证。
  • 阻止下一波。 CI 防护,拒绝已知的不良版本、蠕虫 IOC、 和未签名的运行时依赖。 配对 ignore-scripts 默认情况下。
  • 缩小表面。 用可撤销的 HTTP 替换单一用途的 npm 包 来电。 被破坏的 API 密钥在一次请求中失效; 一个被破坏的包已经运行了。

波托伊展品 /v1/breach/check, /v1/pii/detect, /v1/email/validate,以及一个 API 背后大约 200 个其他单一用途端点 key with 5 req/min free. 将它们连接到您的事件操作手册中或连接 MCP服务器 到 Claude Code,以便您的人工智能助手为您运行检测脚本。 浏览 交互式文档 开始。

FAQ

什么是迷你 Shai-Hulud 蠕虫?
Mini Shai-Hulud 是由 TeamPCP 威胁参与者运行的自我传播 npm 和 PyPI 供应链攻击。 它会破坏维护者令牌,发布恶意安装后代码,然后使用窃取的令牌在维护者拥有的软件包中发布更多中毒版本。 2026 年 5 月 11 日浪潮袭击了 TanStack、Mistral AI SDK、UiPath 和 Guardrails AI; 世界标准时间 19:20 至 19:26 之间大约六分钟内发布了 170 多个软件包的 400 多个恶意版本。
2026 年 5 月 11 日哪些包裹受到影响?
TanStack Router、TanStack Query(多个框架适配器)、Mistral AI SDK、UiPath npm 软件包、Guardrails AI 以及这些维护者下游的几个较小的库。 Wiz、Snyk 和 StepSecurity 均于 5 月 12 日发布了包含完整 IOC 名单的公告。 如果您的锁定文件提取了 2026 年 5 月 11 日 19:20 UTC 之后发布的这些软件包的任何版本,请将 CI 主机和开发人员计算机视为受到威胁。
如何判断我的 CI 是否受到攻击?
检查三个信号:从 CI 运行程序推送的名为“Shai-Hulud”的 git 提交、对 webhook.site 的出站请求或 CI 日志中的 TruffleHog 二进制下载,以及组织中名为“Shai-Hulud-Migration”的任何 GitHub 存储库。 该蠕虫通过 GitHub Actions 窃取机密,因此审核日志是最快的检测面。 筛选过去 7 天内您未创作的新工作流程运行。
曝光后我应该旋转什么?
受影响的跑步者或笔记本电脑触及的每个秘密。 npm 令牌、GitHub PAT、AWS 密钥、GCP 服务帐户、Stripe live 密钥、Slack 机器人令牌、OpenAI 和 Anthropic API 密钥、内部数据库凭证以及缓存在计算机上的任何 SSH 密钥。 先不要调查; 旋转,然后调查。 渗漏在几秒钟内完成; 在被盗凭证被出售​​之前,旋转会关上门。
单一用途的 HTTP API 如何降低这种风险?
对单一用途 API 的 HTTPS 调用将可传递信任的包及其安装后挂钩替换为可撤销密钥。 如果 API 提供商遭到破坏,您只需轮换一把密钥,流量就会停止。 如果树中的某个包被破坏,则恶意软件已经在运行 npm install 的每台计算机上运行。 交易的代价是小延迟、小爆炸半径和即时撤销。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。