CVE-2026-453212026年5月11日,TanStack项目遭遇了一起复杂的供应链攻击。攻击者利用GitHub Actions工作流中的配置缺陷,特别是`pull_request_target`的误用以及跨仓库的缓存投毒漏洞,成功从CI/CD运行环境中窃取了OIDC令牌。利用该令牌,攻击者以受信任的身份向npm官方仓库发布了84个恶意版本,覆盖了42个@tanstack/*相关软件包。这些恶意包包含凭据窃取恶意软件,对下游用户构成了极高的安全风险。
该漏洞的核心在于攻击者精心构造的攻击链,突破了CI/CD的安全边界。首先,攻击者利用了`pull_request_target`触发器的特性,该触发器允许来自Fork仓库的Pull Request在基础仓库的高权限上下文中运行工作流。其次,攻击者利用了GitHub Actions缓存机制在Fork与基础仓库之间的共享特性,通过恶意PR将恶意代码注入到构建缓存中。当基础仓库运行CI流程时,加载了被污染的缓存并执行了其中的恶意脚本。最关键的一步是令牌窃取,攻击者的脚本通过扫描Actions Runner进程的内存空间(/proc/self/environ或内存转储),成功提取了用于npm OIDC认证的JWT令牌。由于该令牌具有合法的发布权限,攻击者无需修改发布工作流即可完成恶意包的发布。每个受影响包收到了两个相隔几分钟的恶意版本,这表明攻击者可能在进行多次尝试以确保覆盖不同的依赖解析场景。