行业新闻与博客

Tj-actions 供应链攻击可追溯到单个 GitHub 令牌泄露事件

最近一次供应链攻击危及了流行的 tj-actions/changed-files GitHub 操作,造成了一系列数字破坏,影响了 218 个 GitHub 存储库。

随着调查人员的深入挖掘,这一复杂入侵事件的根源逐渐显现出来,最初的入侵和最终目标都显露出来。

虽然目标目标是与流行的加密货币交易所 Coinbase 相关的 GitHub 项目,但攻击的起源可以追溯到从 spotbugs 工作流程中窃取单个令牌。这让威胁行为者获得了未经授权的访问权限,并使他们能够入侵大量 GitHub 项目。

Spotbug 是一个静态分析工具,可以识别 Java 代码中的错误,由 RD_MNTNR 维护,他也是 reviewdog 的积极维护者,reviewdog 是一个自动代码审查和测试 GitHub 项目,该项目的入侵导致 tj-actions/changed-files 被篡改。

tj-actions/changed-files 攻击解析

3月14日,安全研究人员发现 tj-actions/changed-files 的源代码遭到修改。

GitHub Actions 是持续集成和持续交付 (CI/CD) 框架,旨在简化代码的构建、测试和部署。

StepSecurity 的一位发言人评论道:“在这次攻击中,攻击者修改了操作的代码,并追溯更新了多个版本标签以引用恶意提交。受感染的操作会在 GitHub Actions 构建日志中打印 CI/CD 机密。”

“如果工作流日志是公开可访问的(例如在公共存储库中),任何人都有可能阅读这些日志并获取被泄露的机密。没有证据表明泄露的机密被泄露到任何远程网络目的地,”他们补充道。

软件供应链安全公司 Endor Labs 在一篇博客文章中写道:“攻击者可能不是在寻找公共存储库中的秘密——这些秘密已经是公开的了。他们可能想破坏其他开源库、二进制文件和由此创建的工件的软件供应链。任何作为 CI 管道一部分创建包或容器的公共存储库都可能受到影响。这意味着可能有数以千计的开源软件包可能已被破坏。”

初步估计,此次攻击影响巨大,危及多达 23,000 个存储库。

然而,更彻底的调查显示,实际损失要受到更严格的控制,恶意的 tj-actions 攻击只泄露了 218 个存储库的敏感机密,这只是最初担心的总数的一小部分。

该事件的官方 CVE 编号为 CVE-2025-30066,后来被添加到美国网络安全和基础设施安全局 (CISA) 已知利用漏洞 (KEV) 目录中。

进一步调查发现,威胁行为者已成功渗透到 reviewdog/action-setup GitHub 项目,并插入了一个恶意后门,当依赖于它的 tj-actions/eslint-changed-files 项目执行时会触发该后门。

新爆料:Coinbase 和 spotbugs

3 月 20 日,Palo Alto Networks 旗下 Unit42 的研究人员发现,此次攻击的最初目标是 Coinbase,具体来说是其开源 agentkit GitHub 项目。

攻击者试图利用该项目的公共 CI/CD 管道,可能将其用作进一步攻击的垫脚石。

然而,这次攻击被部分挫败,因为攻击者无法访问或利用 Coinbase 的机密或发布恶意软件。

Unit42 的研究人员认为,在这次初次攻击之后,同一个威胁行为者加大了攻击力度,导致了更严重、更广泛的攻击,并引起了全球的关注。

4 月 2 日,Unit42 研究人员透露,根据 reviewdog 维护人员发布的一份咨询报告,他们已经拼凑出导致最初入侵的各个阶段。

据 Unit42 称,攻击者最初是在 2024 年 11 月通过利用 spotbugs 的 GitHub Actions 工作流程获得访问权限的,这使他们能够在 spotbugs 存储库之间横向移动,直到获得对 reviewdog 的访问权限。

攻击时间表

2024 年 11 月:攻击者未经授权访问了 spotbugs 

2024 年 12 月 6 日:攻击者利用易受攻击的“pull_request_target”工作流程,通过一次性用户帐户(randolzflow)提交的恶意拉取请求窃取维护者的个人访问令牌(PAT)。

2025 年 3 月 11 日:攻击者利用窃取的 PAT 将另一个虚拟用户 (jurkaofavak) 添加到 spotbugs 存储库。然后,该用户推送了一个恶意的 GitHub Actions 工作流,该工作流提取了属于 reviewdog 维护者 (RD_MNTNR) 的第二个 PAT,该维护者也具有 spotbugs 的访问权限。窃取的 PAT 授予攻击者对 reviewdog/action-setup 存储库的写访问权限,使他们能够用来自分叉存储库的恶意提交替换 v1 标签。

这实际上毒害了所有依赖 v1 标签的项目,创建了一个后门,当与 tj-actions/eslint-changed-files 结合使用时会触发该后门。然后,攻击者使用窃取的凭据覆盖存储库中的 Git 标签,将其重定向到恶意提交,该提交旨在将持续集成 (CI) 运行程序中的敏感机密转储到日志中。恶意提交泄露了 218 个存储库的机密,包括与 Coinbase 相关的存储库。

2025 年 3 月 14 日: Coinbase 的 CI 提取并执行了修改后的版本。幸运的是,攻击者入侵 Coinbase 系统的计划被挫败了。该公司对此次入侵企图的迅速反应有助于减轻损失,因为该公司迅速收到了有关潜在安全漏洞的通知,并果断采取行动删除了恶意工作流程。

2025 年 3 月 14 日: StepSecurity 的研究人员发现 tj-actions/changed-files 的源代码已被篡改。

2025 年 3 月 15 日:该漏洞由 MITRE 披露,并分配了 CVE 标识符 CVE-2025-30066。

2025 年 3 月 16 日:独立攻击性安全研究员 Adnan Khan 发布了一份报告,指出另一个 GitHub 组织 reviewdog 遭到入侵

2025 年 3 月 18 日: CISA 将 CVE-2025-30066 添加到其 KEV 目录中。

2025 年 3 月 18 日: Reviewdog 维护人员发布了安全公告。

2025 年 3 月 20 日: Palo Alto Networks 的 Unit42 透露,Coinbase 相关项目是此次攻击的初始目标。

2025 年 4 月 2 日:Palo Alto Networks 的 Unit42 发布的最新更新将此次攻击追溯到从 spotbugs 工作流程中窃取单个令牌。

需要帮助吗?联系我们的支持团队 在线客服