CVE-2026-45321 (CVSS 9.6) - On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions
CVE-2026-45321 (CVSS 9.6) - On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions
📋 漏洞概述
TanStack npm包供应链攻击,利用GitHub Actions配置缺陷和缓存投毒,篡改可信OIDC发布流程植入恶意版本。
📋 基础信息
| 受影响版本 | 42个@tanstack/* npm包的所有版本(2026-05-11 19:20-19:26 UTC发布的84个恶意版本) |
| 漏洞类型 | 供应链攻击(配置不当、缓存投毒、内存信息泄露) |
| CVSS | 9.6 · Critical |
| CVE | CVE-2026-45321 |
🔬 漏洞根因
1. pull_request_target触发器未正确限制对fork仓库的权限,允许fork中的恶意PR在基仓库上下文中执行工作流;2. GitHub Actions缓存未对跨fork↔base边界进行隔离,攻击者可通过fork写入缓存,在base仓库工作流中读取恶意缓存内容;3. OIDC令牌在运行器进程内存中未加密存储,攻击者通过内存提取技术获取令牌,用于冒充合法身份发布恶意包。三链组合实现了对未修改的发布工作流的劫持。
🎯 攻击场景
1. 前提条件:攻击者fork了TanStack/router仓库,并向base仓库提交包含恶意代码的PR(利用pull_request_target未限制),同时构造特制的Actions缓存条目;2. 第一步:base仓库自动执行基于pull_request_target的工作流,该工作流在基仓库上下文中运行,攻击者控制的fork代码在运行时可执行任意操作;3. 第二步:攻击者通过fork代码中的恶意逻辑,向共享的Actions缓存写入经过构造的恶意数据(如修改依赖包或脚本),该缓存可在后续正版工作流中被读取;4. 第三步:在后续的合法发布工作流中,由于缓存污染,运行器加载了被篡改的依赖或脚本,执行过程中从运行器进程内存中提取OIDC令牌(通过/proc/<pid>/mem或调试接口);5. 第四步:使用获取的OIDC令牌,攻击者在npm registry上发布额外42个恶意版本(每个包两个版本),植入窃取凭据的恶意代码;成功标志:用户安装恶意包后,凭据泄露。
💥 漏洞影响
攻击者通过窃取的OIDC令牌在npm上以TanStack官方身份发布了42个包的84个恶意版本,用户安装后可能导致凭证盗窃、系统后门植入、项目敏感数据泄露。影响范围覆盖所有使用受影响包的npm生态项目,潜在数百万开发者及下游系统。
🛡️ 修复建议
立即升级所有@tanstack/*包至非受影响版本(如>=6.0.0或官方后续发布的补丁版本);临时缓解措施:审查并限制pull_request_target工作流的执行权限,禁用fork PR的自动工作流触发;隔离GitHub Actions缓存密钥(基于事件源和仓库fork边界),避免跨信任边界缓存共享;使用硬件安全模块或短期令牌承载模式避免OIDC令牌在进程内存中长期暴露;启用npm发布的两因素认证或发布审核。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-45321
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-45321
- 原始来源(NVD-Latest)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.0%) (高于 11.8% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 6 个公开 PoC 仓库 |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-05-14 08:05 | 来源: NVD-Latest