GitHub Action供应链攻击:reviewdog/action-setup恶意代码漏洞深度解析
事件概述
2025年3月11日18:42至20:31 UTC期间,流行的GitHub Action reviewdog/action-setup@v1 遭到供应链攻击。攻击者在其中植入了恶意代码,能够将CI/CD工作流中暴露的秘密凭证(secrets)转储到GitHub Actions的工作流日志中。
此次攻击是更广泛供应链攻击链的一环,并被认为可能是导致 tj-actions/changed-files 等其他知名Action后续被入侵的根源。Wiz Research的研究显示,此次攻击最终可能指向一个特定的高价值目标——Coinbase的coinbase/agentkit仓库,但Coinbase已确认此次入侵尝试未成功。
技术细节:攻击手法与载荷
入侵方式
与近期其他GitHub Action攻击事件不同,此次入侵并非通过“邀请工作流”(Invite workflow)恶意添加协作者账户所致。调查确认,一个关联账户本身遭到入侵,导致了action-setup的泄露。该Action的v1标签在此期间被指向了一个恶意提交(commit hash: f0d342d),随后又被强制推送(force-pushed)回旧的提交以掩盖入侵痕迹,表明攻击者目标明确且试图保持隐秘。
恶意载荷分析
恶意代码被直接注入到工作流使用的install.sh文件中。其技术特点包括:
- 无外联渗透:与
tj-actions/changed-files攻击中使用curl获取外部载荷不同,此次攻击的恶意代码是经过Base64编码后直接嵌入在脚本中的。 - 内存转储:恶意代码会转储CI运行器的内存,其中包含工作流运行时加载的所有秘密。
- 双重编码:被窃取的秘密在日志中会显示为双重Base64编码的字符串,以此进行混淆。在公共仓库中,这些包含秘密的日志将对所有人可见。
影响范围与关联攻击
直接影响
- 核心受影响组件:只有
reviewdog/action-setupAction的v1标签在特定时间窗口内受影响。使用哈希锁定(hash-pinned)版本或其他标签的用户不受影响。 - 间接影响组件:由于
reviewdog/action-setup被作为基础依赖,以下一系列其他reviewdog Action也受到影响,无论用户使用的是这些Action的哪个版本:reviewdog/action-shellcheckreviewdog/action-composite-templatereviewdog/action-staticcheckreviewdog/action-ast-grepreviewdog/action-typos
供应链攻击链
证据表明,reviewdog/action-setup的入侵可能是tj-actions/changed-files被入侵的根源。因为tj-actions/eslint-changed-files Action使用了reviewdog/action-setup@v1,而tj-actions/changed-files仓库在运行该Action时使用了一个个人访问令牌(PAT)。两个事件的入侵时间窗口高度重合。
应急响应与补救措施
如何检测是否受影响
- 查询使用情况:使用GitHub查询在组织内的仓库中搜索对受影响Action的引用。
- 检查工作流日志:定位在受影响时间段(2025年3月11日)内运行的工作流任务。
- 识别恶意执行:展开“Run reviewdog/action-setup@v1”步骤。如果看到名为“🐶 Preparing environment …”的行,则表明恶意代码已运行。检查其中是否存在双重Base64编码的字符串。
针对性行动清单
如果确认受影响,请立即执行以下步骤:
- 立即停用:停止使用所有受影响的Action。
- 全面清理:从所有代码分支(不仅是主分支)中移除对这些Action的引用。
- 轮换密钥:尽快轮换所有已泄露的秘密凭证。
- 注意:如果泄露的仅是前缀为
ghs_的GitHub令牌,由于它们会在24小时或工作流完成后自动过期,风险相对有限。 - 如果工作流未显式引用自定义秘密(如
${{ secrets.MYSECRET }}),则敏感信息被泄露的风险较低。
- 注意:如果泄露的仅是前缀为
- 处理日志:在删除工作流以清除日志前,建议先下载受影响时间段内的日志用于取证。
长期防护与最佳实践建议
为防止此类供应链攻击再次发生,建议采取以下措施:
- 使用哈希锁定:遵循GitHub建议,将所有GitHub Action的引用从版本标签(如
@v1)改为完整的提交哈希值(SHA)。这是最有效的防御措施。 - 启用允许列表:使用GitHub的允许列表功能,阻止未经授权的GitHub Action运行。
- 审计历史日志:定期审计过去的工作流运行记录,查找可疑活动(如异常的出站网络请求)。优先审查CI运行器日志公开可访问的仓库。
- 保持警惕:关注安全公告,如本漏洞(CVE-2025-30154)已被列入CISA(美国网络安全与基础设施安全局)的“已知被利用漏洞目录”,并要求在2025年4月14日前完成缓解。
官方参考与资源
- GitHub安全公告:GHSA-qmg3-hpqr-gqvc
- CVE编号:CVE-2025-30154(CVSS 3.1 评分:8.6 高危)
- 维护者通知:reviewdog/reviewdog #2079
- 修复提交:
reviewdog/action-setup@3f401fe - 恶意提交:
reviewdog/action-setup@f0d342d - Wiz详细分析报告:New GitHub Action supply chain attack: reviewdog/action-setup
- CISA目录:Known Exploited Vulnerabilities Catalog