TanStack:42 个 @tanstack/* npm 软件包中存在 84 个恶意版本

发布日期:2026-05-12 10:33:36   浏览量 :1
发布日期:2026-05-12 10:33:36  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

TanStack 是 React 生态系统中流行的库套件之一,于 2026 年 5 月 11 日发布了一份技术事后分析报告,详细说明了影响 npm 上 42 个 @tanstack/* 软件包的安全事件。在短短六分钟的时间窗口内,攻击者成功向注册表推送了 84 个恶意版本,且未窃取任何 npm 令牌。

此次攻击结合了三种已知但罕见串联使用的技术:针对 pull_request_target 的“Pwn Request”模式、GitHub Actions 缓存投毒,以及从运行器内存中提取开放身份验证和授权标准(OIDC)令牌。

关键摘要

  • 2026 年 5 月 11 日协调世界时 19:20 至 19:26 之间,42 个 @tanstack/* 软件包发布了 84 个恶意版本。
  • 攻击结合了 pull_request_target、GitHub Actions 缓存投毒以及内存中的开放身份验证和授权标准(OIDC)令牌窃取。
  • 未窃取 npm 令牌:攻击者在合法发布过程中通过 id-token: write 权限伪造了一个 OIDC 令牌。
  • StepSecurity 公司的阿希什·库尔米(ashishkurmi)在 20 分钟内检测到该事件;所有版本均已弃用。
  • 确认安全的系列包括:@tanstack/query*table*form*virtual*storestart(元数据)。
  • 2.3 MB 的有效载荷通过 Session/Oxen 即时通讯工具外泄凭证,没有可通过互联网协议(IP)地址阻断的命令与控制(C2)服务器。
  • 任何在 5 月 11 日执行过包含受影响版本的 npm install 的主机,都必须轮换亚马逊云科技(AWS)、谷歌云平台(GCP)、Kubernetes(K8s)、Vault、GitHub、npm 和安全外壳协议(SSH)的凭证。
  • 攻击者分叉仓库:github.com/zblgg/configuration;恶意提交哈希为 65bf499d,带有 [skip ci] 前缀。

TanStack npm 事件经过

TanStack 团队确认,在 2026 年 5 月 11 日协调世界时 19:20 至 19:26 之间,一名攻击者在 npm 官方注册表的 @tanstack/* 命名空间下的 42 个软件包中发布了 84 个恶意版本。每个软件包大约发布了两个版本,发布时间间隔约为六分钟。外部研究人员、来自 StepSecurity 的阿希什·库尔米(ashishkurmi)在首次发布后仅 20 分钟就公开检测到了这一情况。随后这些版本被弃用,npm 安全团队开始移除相关的压缩包文件。

令人不安的并非其影响范围——尽管考虑到该命名空间的规模,影响确实相当大——而是其攻击方法。攻击者从未获取过 TanStack 的发布凭证。他们没有窃取令牌,没有对维护者进行网络钓鱼,也没有攻陷任何 GitHub 账户。相反,他们串联利用了持续集成/持续部署(CI/CD)基础设施的三个弱点,使得组织自身的合法自动化流程代表他们发布了恶意软件包。

攻击者串联利用以在无自有令牌情况下发布软件的三个关键环节。

TanStack npm 攻击剖析

第一步:Pull_request_target 与“Pwn Request”

GitHub Actions 区分两种拉取请求触发器。pull_request 事件以有限权限执行工作流,并要求在首次运行外部贡献者的代码之前进行手动批准。相比之下,pull_request_target 事件使用基础仓库的密钥执行,并绕过该批准步骤,因为它旨在用于应用标签或评论基准测试结果等管理任务。

这个问题在安全行业中被称为“Pwn Request”,当由 pull_request_target 触发的工作流检出拉取请求分支的代码并执行时就会出现。实际上,这意味着任何恶意分叉都可以注入将在基础仓库密钥权限下运行的代码,而无需经过审查

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部