威胁概述
2026年5月11日,全球开发者社区遭遇近年来规模最大的供应链攻击事件。威胁行为体Mini Shai-Hulud(由 Wiz 高置信度归因于TeamPCP组织)通过劫持 TanStack 项目的合法发布管道,在 42 个 @tanstack/* npm 包中发布 84 个恶意版本。攻击窗口仅为 6 分钟(19:20-19:26 UTC),展示了极高的组织协调能力。
受影响包中 @tanstack/react-router 每周下载量超过 1200 万次。此次攻击使用的拼写错误域名 git-tanstack.com 于 2026年5月9日注册,风险评级为 critical,已被奇安信威胁情报中心标记为 TeamPCP APT 活动关联指标。
攻击技术剖析
攻击链重构
本次攻击采用多阶段复杂链式结构,综合利用了三类漏洞模式:
攻击阶段 | 技术手段 | 对应 MITRE ATT&CK |
|---|---|---|
初始访问 | pull_request_target "Pwn Request" 模式 | T1199 (供应链攻陷) |
持久化 | GitHub Actions 缓存中毒 | T1090.003 (多跳通道) |
凭证窃取 | OIDC 令牌进程内存提取 | T1003.003 (系统/服务凭证) |
远程控制 | 远程 dispatch 行为 | T1071.001 (应用层协议) |
核心攻击技术详解
Pwn Request 模式利用
攻击者滥用 GitHub Actions 的 pull_request_target 工作流触发机制。当外部贡献者提交 Pull Request 时,该工作流会在拥有写权限的仓库上下文中执行。攻击者通过构造恶意 Pull Request,将代码注入到合法的发布流程中,据此劫持发布管道。
OIDC 令牌内存提取
GitHub Actions 的 OIDC 机制为工作流提供动态short-lived令牌。攻击者通过缓存中毒维持持久化访问权限,随后从 runner 进程内存中提取 OIDC 令牌,实现对发布管道的长期控制。TanStack 官方澄清:"npm 令牌未被窃取,npm 发布工作流本身未被攻陷"——攻击绕过了令牌本身,直接从运行环境中提取。
SLSA 证明滥用
最具欺骗性的技术细节在于:恶意包携带有效的 SLSA Build Level 3 provenance 证明。StepSecurity 指出:"SLSA provenance 仅确认artifact的来源管道,无法验证管道行为是否符合预期。攻陷的构建步骤可以生成有效的、经过证明的但实为恶意的包。"
恶意软件功能分析
router_init.js
植入恶意包的核心载荷为 router_init.js,文件特征如下:
- 文件大小:2.3MB(高度混淆)
- 功能模块:
- 守护进程化(daemonization)
- GitHub 相关环境变量访问
- 临时文件暂存能力
- 远程 dispatch 行为
@tanstack/setup 潜伏机制
Socket 发现的孤立提交(orphan commit)引入了 @tanstack/setup 包,包含 prepare 生命周期钩子。该钩子在包安装时自动执行代码,实现隐蔽的持久化。攻击者通过在合法代码库中植入被遗忘的提交,避免触发代码审查告警。
gh-token-monitor 守护进程
Wiz 观察到针对开发者工作站的持续威胁:
- 轮询机制:每 60 秒检查 GitHub 令牌状态
- 破坏行为:检测到令牌撤销时,执行
rm -rf ~擦除主目录 - 自毁机制:24 小时后自动退出
威胁行为体归因
TeamPCP 组织画像
根据 Wiz 分析,本次攻击活动归因于 TeamPCP,该组织历史活动记录如下:
时间 | 攻击目标 | 攻击向量 |
|---|---|---|
2026年4月 | SAP 相关包 | npm 包名仿冒 |
2026年5月上旬 | Checkmarx, Bitwarden, Lightning, Intercom, Trivy | 供应链攻陷 |
2026年5月11日 | TanStack (核心攻击) | 发布管道劫持 |
2026年5月中旬 | UiPath, Mistral AI, OpenSearch, PyPI | 横向扩散 |
关联攻击特征
OX Security 追踪到新变种 "Shai-Hulud: Here We Go Again",该变种将窃取的凭证加密后上传至受害者 GitHub 账户下新建的仓库。已发现 379 个此类仓库。
影响范围与目标实体
受影响生态
平台 | 受影响包 | 下载量/影响力 |
|---|---|---|
npm | 42 @tanstack/* 包 (84 个恶意版本) | 1200 万次/周 |
npm | OpenSearch 相关包 | 企业级用户 |
PyPI | mistralai v2.4.6 | ML 开发者生态 |
PyPI | guardrails-ai v0.10.1 | LLM 应用开发 |
npm | UiPath 相关包 | RPA 开发者 |
凭证目标清单
恶意软件针对超过 100 种凭证类型进行窃取:
- GitHub Actions OIDC 令牌
- GitLab 令牌
- CircleCI 凭证
- AWS 访问密钥
- Google Cloud Platform 令牌
- Azure 凭据
- Kubernetes 服务账户
- npm 发布令牌
- SSH 私钥
数据外泄通道
三条外泄路线
通道 | 技术实现 | 情报关联 |
|---|---|---|
拼写错误域名 | git-tanstack[.]com | 标记为 critical |
会话信使网络 | P2P 加密流量伪装 | 规避网络检测 |
GitHub API 死信 | 令牌上传至新建仓库 | 数据隐匿于合法流量 |
额外载荷下载通道
据 Tom"s Hardware 报道,Mistral AI 包事件中恶意代码从远程 IP 83.142.209.194 下载伪装成 transformers.pyz 的第二阶段载荷,文件名故意模仿 Hugging Face Transformers 库以融入机器学习开发环境。
外部情报验证
奇安信威胁情报关联
对域名 git-tanstack.com 的深度查询结果显示:
- DNS 解析:104.21.17.177 | 172.67.177.189(均为 Cloudflare CDN)
- 注册时间:2026年5月9日(攻击前48小时)
- 威胁评级:critical
- 归属活动:TeamPCP APT 活动事件
- 关联TTP:T1071(应用层协议)、T1132(数据编码)
恶意文件路径关联
关联指标:git-tanstack.com/tmp/transformers.pyz,通过 HTTP 协议传输,风险等级 critical。
缓解建议
立即行动
- 凭证轮换:任何在 2026年5月11日安装受影响包的开发者和 CI/CD 环境必须轮换所有可达凭据
- 主机隔离:对可疑主机进行网络隔离,阻止出站连接至 83.142.209.194
- 域名封禁:在网络边界阻断 git-tanstack.com 及所有关联域名
长期防护
- 工作流安全:对 pull_request_target 工作流实施最小权限原则
- 构建验证:强化 SLSA 供应链安全等级,验证构建流程完整性而非仅依赖 provenance
- 依赖审核:实施包版本锁定,审查 optionalDependencies 和生命周期钩子
- 监控部署:部署运行时行为检测,监控异常进程内存访问和计划外网络连接
MITRE ATT&CK 映射
Technique ID | Technique Name | 备注 |
|---|---|---|
T1199 | Supply Chain Compromise | 核心攻击向量 |
T1071.001 | Application Layer Protocol: Web Protocols | C2 通信 |
T1003.003 | OS Credential Dumping: Proc Filesystem | OIDC 令牌提取 |
T1090.003 | Multi-Stage Channels | P2P 数据外泄 |
T1552 | Unsecured Credentials | 目标凭证类型 |
T1070.004 | File Deletion | 破坏性 payload |
总结
Mini Shai-Hulud/TeamPCP 组织发起的此次供应链攻击标志着针对开发者生态的攻击进入新阶段。攻击者不再满足于仿冒包名或植入简单恶意代码,而是直接劫持合法发布管道,滥用 SLSA provenance 证明实现"合法伪装",并部署针对 CI/CD 系统的复杂凭证窃取框架。
攻击规模空前:超过 170 个软件包被入侵,月下载量超过 5.18 亿次。恶意软件具备地理围栏能力,在俄语系统上阻止执行破坏性 payload,在以色列/伊朗环境具有 1/6 概率执行 rm -rf / 完全擦除。
开发者社区必须认识到:供应链安全已从"被动防御"转向"主动验证"时代,传统的签名和证明机制不足以防御具有管道访问权限的内部威胁。
参考来源
https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised
- https://cybermind.in/news/mini-shai-hulud-hits-tanstack-npm-packages/
- https://www.cybernoz.com/shai-hulud-attack
- https://www.oxsecurity.com/blog/shai-hulud-npm-pypi-attack
声明:本文来自奇安信威胁情报中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。