GitHub 遭受级联供应链攻击,危及 CI/CD 密钥

新闻 2025年3月19日 5分钟 CI/CD 数据泄露 开发者

CISA 确认从 reviewdog 到 tj-actions 的级联攻击,暴露了超过 23,000 个代码仓库的敏感凭据。

Hacker arriving in secret base with laptop, ready to start programming viruses. Scammer in criminal den opening notebook to exploit network servers and bypass security measures, camera B Credit: DC Studio / Shutterstock

一起复杂的级联供应链攻击危及了多个 GitHub Actions,暴露了成千上万个代码仓库中的关键 CI/CD 密钥。 根据一份报告,此次攻击最初的目标是广泛使用的 "tj-actions/changed-files" 工具,但现在被认为源于早前对 "reviewdog/action-setup@v1" GitHub Action 的入侵。

上周,研究人员发现恶意代码被注入到 "tj-actions/changed-files" 中,从而发现了最初的入侵事件,该事件被指定为 CVE-2025-30066。 网络安全和基础设施安全局 (CISA) 已经正式承认了这个问题,指出“此供应链入侵允许信息披露,包括但不限于有效的访问密钥、GitHub Personal Access Tokens (PATs)、npm tokens 和私有 RSA 密钥等密钥。”

CISA 确认该漏洞已在 46.0.1 版本中修复。

鉴于该实用程序被超过 23,000 个 GitHub 代码仓库使用,潜在影响的规模在整个开发者社区引起了极大的警惕。

攻击链揭示

Wiz 的安全研究人员现在已经确定了他们认为导致这次备受瞩目的入侵的根本原因。 根据他们的分析,攻击者首先入侵了 reviewdog/action-setup GitHub Action 的 v1 标签,注入了类似的代码,旨在将 CI/CD 密钥转储到日志文件中。

由于 tj-actions/eslint-changed-files 使用了这个 reviewdog 组件,最初的入侵为攻击者创造了窃取 tj-actions 系统使用的个人访问令牌 (PAT) 的途径。

"Wiz 研究人员在他们的报告中解释说:“我们认为,reviewdog/action-setup 被入侵很可能是 tj-actions-bot PAT 被入侵的根本原因。” 两次入侵的时间非常接近,加强了这些安全事件之间的联系。

攻击方法采用了一种特别复杂的方法。 攻击者将 base64 编码的 payload 插入到安装脚本中,导致受影响的 CI 工作流中的密钥在工作流日志中被暴露。

在具有公共日志的代码仓库中,这些暴露的密钥可以很容易地被恶意行为者获得,从而在 GitHub 生态系统中造成重大的安全漏洞。

扩大影响评估

tj-actions 开发者之前曾报告说,他们无法准确确定攻击者是如何获得其 GitHub 个人访问令牌的。 Wiz 的这一新发现提供了缺失的环节,表明最初的 reviewdog 入侵是这个级联攻击链中的第一张多米诺骨牌。

除了确认入侵了 reviewdog/action-setup@v1 之外,调查还揭示了来自同一开发者的其他几个可能受到影响的 action。 这些包括 reviewdog/action-shellcheck、reviewdog/action-composite-template、reviewdog/action-staticcheck、reviewdog/action-ast-grep 和 reviewdog/action-typos。 在这些工具中入侵的全部范围仍在调查中。

虽然 GitHub 和 reviewdog 的维护者已经实施了修复,但 Wiz 警告说,如果任何被入侵的 action 仍然在使用中,那么针对 "tj-actions/changed-files" 的重复攻击仍然可能发生 - 特别是如果暴露的密钥没有被轮换。

响应和补救

最初的 tj-actions 入侵促使 GitHub 采取了迅速的行动,在 3 月 16 日撤回了对被入侵工具的访问,并用修复后的版本(高于 45.0.7)取而代之。 然而,关于攻击的级联性质的这个新信息表明,安全影响远远超出了最初的评估。

行业专家特别关注 Reviewdog 项目中的入侵方法。

Wiz 研究人员指出,该项目“维护着庞大的贡献者基础,并通过自动邀请接受新成员”,这可能会在其权限结构中造成安全漏洞。 这突出了组织实践如何可能无意中造成影响下游依赖项的漏洞。

对于可能受到此入侵影响的组织,安全团队应立即检查其代码仓库中是否有任何对 reviewdog/action-setup@v1 的引用。 工作流日志中存在双重编码的 base64 payload 将确认密钥已被泄露。

“在这种情况下,应删除所有对受影响 action 的引用,删除工作流日志,并立即轮换任何可能暴露的凭据,”报告建议。

未来的预防策略

为了减轻未来类似风险,安全专家建议采取几项预防措施。 在实施 GitHub Actions 时,开发者应该将他们的 action 绑定到特定的 commit hashes,而不是使用版本标签,commit hashes 是不可变的,并且在创建后无法修改。

“此外,组织应利用 GitHub 的允许列表功能来限制未经授权的 action 在其环境中运行,”Wiz 在其调查结果中建议。

该事件强调了针对开发工具和基础设施的供应链攻击日益增长的趋势。 随着组织越来越依赖第三方组件和 action 来简化其开发流程,这种入侵的潜在影响持续增长。 广泛使用的工具中的一次入侵可以迅速蔓延到成千上万个项目,突显了现代开发生态系统的互连性质。