CVE-2026-45321 - Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, an
CVE-2026-45321 - Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, an
📋 漏洞概述
@tanstack/* 软件包供应链攻击:攻击者利用 GitHub Actions 配置缺陷和缓存投毒,植入窃密恶意软件,窃取云凭证和 GitHub 令牌。
📋 基础信息
| 受影响版本 | 所有 @tanstack/* 包中,于2026-05-11 19:20-19:26 UTC期间发布的84个恶意版本(每个受影响包有2个恶意版本) |
| 漏洞类型 | 供应链攻击(恶意代码注入) |
| CVSS | 9.8 · Critical |
| CVE | CVE-2026-45321 |
🔬 漏洞根因
攻击者利用 GitHub Actions 中 `pull_request_target` 事件的错误配置(Pwn Request 漏洞),该配置允许来自分支的 PR 触发工作流并访问仓库机密。攻击者向恶意的 fork PR 中注入恶意缓存条目,毒化了用于构建流程的 GitHub Actions 缓存。随后,攻击者通过解析 GitHub Actions 运行器进程的内存,提取了 OIDC 令牌(用于 npm 发布身份验证),从而以合法发布者的身份发布了恶意包版本。
🎯 攻击场景
1. 攻击者发现 TanStack/router 仓库的 GitHub Actions 工作流存在 `pull_request_target` 错误配置,允许外部 fork 的 PR 触及机密封装的构建和测试流程。 2. 攻击者提交了一个精心构造的 pull request,其中包含的代码/脚本在 CI 执行时,会向 GitHub Actions 的共享缓存中写入恶意的缓存条目(例如 `node_modules` 或构建产物),利用缓存键冲突实现了缓存投毒。 3. 恶意缓存条目被后续的合法 CI 运行(基于 `push` 或 `pull_request` 触发,且能访问 npm 发布凭据/令牌)所加载。攻击者在缓存中植入的代码从 GitHub Actions 运行器进程的内存中提取了 OIDC 令牌。 4. 攻击者利用窃取的 OIDC 令牌,通过 npm 的受信任发布者绑定(Trusted Publisher)机制,冒充 `@tanstack/*` 包的发布者身份,向 npm 注册表推送了84个包含恶意安装后脚本的恶意包版本。 5. 开发者在安装这些恶意包时,`.npm install` 触发的安装后脚本 (router_init.js) 执行,窃取云凭证、GitHub 令牌、SSH 密钥等敏感数据,并通过 Session/Oxen 网络进行外泄。
💥 漏洞影响
攻击者能够以受信任发布者的身份发布恶意软件包,影响所有在2026-05-11 UTC特定时间窗口内安装或更新受影响 `@tanstack/*` 包的开发者和 CI 环境。恶意代码在安装时执行,窃取 AWS/GCP/K8s/Vault 凭证、npm/GitHub 令牌、SSH 私钥等机密,并将其外泄。该恶意软件还会枚举受害者维护的 npm 包,尝试用相同方式传播感染,可能导致大规模的供应链连锁攻击。
🛡️ 修复建议
立即将所有 `@tanstack/*` 包升级至受影响时间窗口之后的版本(即 > 2026-05-11 19:26 UTC 发布的版本);禁用或轮换所有可能在受影响环境中被访问的云凭证、GitHub 令牌、npm 令牌和 SSH 密钥;审计 npm 账户活动,撤销所有可疑的发布会话;审查 GitHub Actions 工作流,移除或限制 `pull_request_target` 的使用,并启用缓存隔离(例如使用 `cache-scope` 分离 fork 分支的缓存)。临时缓解措施:在网络层面封锁 `filev2.getsession.org`, `seed{1,2,3}.getsession.org` 域名以阻止数据外泄。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-45321
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-45321
- https://github.com/advisories/GHSA-g7cv-rxg3-hmpx
- 原始来源(GitHub-Advisory)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.0%) (高于 12.4% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 5 个公开 PoC 仓库 |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-05-15 08:06 | 来源: GitHub-Advisory