GTIG:2026 年 OSS 供应链攻击、凭证窃取与自我传播
1. 基本信息
- 文章标题:Batten Down Your Packages: Mitigation Guidance for Supply Chain Compromise
- 发布机构:Google Threat Intelligence Group / Mandiant
- 发布日期:2026-07-30
- 原始链接:https://cloud.google.com/blog/topics/threat-intelligence/mitigation-guidance-for-supply-chain-compromise/
- 相关来源:TeamPCP、axios 以及文章中的 WAVESHAPER.V2 调查
- 相关实体:UNC6780/TeamPCP、SANDCLOCK、MIDNIGHT NEPTUNE/UNC1069、WAVESHAPER.V2、npm、PyPI、Docker Hub、GitHub Actions、axios
- 严重程度:高
2. 执行摘要
攻击者正在窃取开发者、维护者和 CI/CD 流水线的凭证,以篡改合法软件包。这种攻击模式正在大规模增长:它会窃取用户环境中的云端密钥,自我传播到其他软件包,并最终导致勒索软件或勒索活动。
3. 攻击流程
UNC6780 / TeamPCP
- 攻击者通过滥用 GitHub Actions
pull_request_target、攻陷维护者账户或发布恶意软件包来获取写入权限。 - 他们在 PyPI、npm 和 Docker Hub 上的合法与伪造软件包中注入恶意代码。
- 用户在开发设备或 CI/CD 流水线上安装时执行该代码。
- 诸如 SANDCLOCK 的工具窃取云端、CI/CD 和软件包注册表的凭证。
- 攻击者篡改受害者拥有的其他软件包,以蠕虫式方式传播。
- 他们从 AI 软件渗透到更广泛的企业网络。
- 他们通过出售被窃凭证或与勒索软件及数据勒索团伙合作来获利。
axios / MIDNIGHT NEPTUNE
- 攻击者通过社会工程攻击攻陷维护者账户。
- 他们在合法的 axios 软件包中添加恶意依赖项并发布新版本。
- 依赖解析将该软件包传播给大量用户及下游软件包。
- 一个 dropper 部署 WAVESHAPER.V2 后门。
4. 攻击者位置与执行地点
攻击者攻陷源代码托管服务、CI/CD 流水线和软件包注册表的控制平面。恶意代码在开发者设备、构建运行器、容器和应用程序执行环境中运行,随后利用窃取的凭证进入云端和其他代码仓库。
5. 受害者与管理员的可见性
- 这些软件包看起来合法,使用真实名称,拥有有效签名者,并表现为正常的依赖更新。
- CI 日志显示安装脚本、添加的依赖项、出站网络流量以及密钥访问。
- 即使单个设备没有显示警告,使用相同 lockfile、缓存或容器镜像的多个环境也会同时受到影响。
6. 成功与失败条件
成功条件
- 维护者和 CI 令牌易受钓鱼攻击且有效期长。
pull_request_target或类似事件将密钥和写入权限授予不受信任的代码。- 安装脚本、出站网络流量和依赖更新不受限制。
- 恶意版本保留在缓存、lockfile 和容器镜像中。
失败条件
- 抗钓鱼 MFA、短生命周期 OIDC,以及最小权限颁发的令牌。
- 密钥不会传递给跨越信任边界的 CI 事件。
- 固定依赖、签名与来源验证、受限安装脚本以及出口控制。
- 被攻陷的版本从所有缓存和构建产物中移除,而不仅仅是从注册表中移除。
7. 成功后的后果
开发者、CI/CD 和云凭证、源代码及客户数据被窃取,恶意软件包向下游自我传播。GTIG 报告称,axios 事件影响了 13 个国家、15 个行业的客户,表明每周下载量超过 1 亿次的依赖项具有巨大影响。
8. 可观测日志
- 电子邮件:针对维护者的钓鱼邮件,或伪装成注册表或 GitHub 的消息。
- 代理/SWG/DNS:安装或构建期间的未知出站流量,发送凭证并下载恶意软件包。
- 终端/EDR:软件包管理器子进程、安装脚本、密钥文件读取、WAVESHAPER.V2 / SANDCLOCK 活动。
- 身份/IdP:维护者账户、个人访问令牌 (PAT)、npm/PyPI 令牌以及云密钥的异常使用。
-
SaaS/云:GitHub Actions、
pull_request_target、发布、软件包发布、OIDC 以及审计日志。 - 网络:CI 运行器或开发者设备的异常出口流量,随后是云 API 访问和内部侦察。
9. 攻击成功评估
- 仅接触:钓鱼、恶意 PR 或引用恶意版本。
- 用户操作:维护者身份验证、PR 批准、依赖更新。
- 初始执行:安装或构建期间执行恶意代码。
- 恶意软件或成功认证:SANDCLOCK/WAVESHAPER.V2 活动、使用被窃取的令牌。
- 数据窃取/会话攻陷:发送密钥、源代码或云数据。
- 后续攻陷确认:发布其他软件包、云和网络渗透、勒索或勒索软件。
10. 调查手册
- 触发条件:已知被攻陷的版本、意外的发布事件、CI 的未知出口流量、令牌异常使用。
- 初步检查:识别 SBOM、lockfile、缓存、镜像、安装时间以及执行环境。
- 设备:调查软件包管理器、安装脚本、子进程、密钥访问以及构建产物。
- 身份验证与云:跟踪所有 GitHub、注册表、CI 和云令牌的使用与颁发。
- 后续操作:检查受害者有权限发布的所有软件包、下游依赖、云 API 以及数据传输。
- 遏制措施:停止构建、吊销令牌、移除恶意依赖、缓存和产物,从已知良好来源重新构建,并通知下游用户。
- 评估级别:被引用 / 已下载 / 已执行 / 凭证被窃取 / 软件包被重新发布 / 云渗透 / 数据泄露或勒索软件。
11. 防御与检测思路
-
单一事件:从新设备发布、CI
pull_request_target携带密钥、安装期间的 shell 执行或意外的依赖添加。 - 时间线关联:维护者异常登录 -> 发布/发布 -> CI 安装 -> 密钥读取 -> 发布另一个软件包。
- 狩猎:从 SBOM 反向查找被攻陷的版本和传递依赖,并在环境中搜索相同令牌和基础设施的使用。
- 日志缺口:如果没有软件包注册表日志、CI 作业日志、来源数据和开发者设备出口日志,就无法确定影响的完整范围。
- 优先对策:抗钓鱼 MFA、短生命周期 OIDC、固定依赖、签名/来源验证、隔离的 CI 环境、密钥扫描以及出口控制。
12. 事实 / 推断 / 假设
事实
- GTIG 以高置信度评估,2025 年至 2026 年初期间,OSS 供应链攻击的规模、重复性和蠕虫式特性有所增加。
- TeamPCP 针对 PyPI、npm 和 Docker Hub,使用 SANDCLOCK 等工具窃取密钥,并尝试从 AI 软件渗透到更广泛的企业网络。
- 在 axios 事件中,恶意版本在三小时内被移除,但影响已波及 13 个国家、15 个行业的客户。
推断
- 仅从注册表删除软件包并不能保护现有缓存、lockfile、容器镜像或被窃取的凭证。
- 全球组织通过全球 OSS 依赖同时受到影响。
假设
- 将发布身份验证事件与下游 CI 密钥访问关联起来,有助于在自我传播发生前遏制攻击。
13. MITRE ATT&CK 映射
- 高置信度:T1195.001 攻陷软件依赖与开发工具、T1552 未受保护的凭证、T1078 有效账户、T1105 入口工具传输。
- 中置信度:T1528 窃取应用程序访问令牌、T1098 账户操纵、T1041 通过 C2 外泄、T1486 数据加密以造成影响(若由附属机构执行)。
14. 未知与额外调查
- 每个行动的完整 IOC 及被攻陷软件包列表。
- AI 如何用于规划攻击和生成恶意代码的具体范围。
- 国内组织或本地镜像中的残留痕迹。
- 被窃凭证销售与勒索软件操作之间的个体关联案例。
15. 对 SOC 和一般企业的影响
即使在本地开发环境中,对 npm、PyPI、Docker Hub 和 GitHub Actions 的依赖也很高。SOC 必须不仅监控生产服务器,还需监控开发者身份、CI 运行器、软件包发布、SBOM 以及构建出口。组织需要在开发、云和 CSIRT 团队之间协调安全响应。
16. 按目标受众总结
- 针对 SOC:将身份、发布事件、软件包安装、密钥读取和下游发布作为一个完整的供应链进行跟踪。
- 针对管理员:使 CI 密钥短生命周期,并妥善管理依赖、签名、来源和缓存。
- 针对用户:开发者不应盲目批准针对维护者的依赖更新或身份验证请求。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.