GitHub Action “tj-actions/branch-names” 中存在关键命令注入漏洞(CVE-2025-54416)-安全KER - 安全资讯平台
GitHub Actions 中的 "tj-actions/branch-names" 存在命令注入漏洞(CVE-2025-54416),影响超 5,000 个仓库。因代码错误使用 eval 导致输入未正确转义,攻击者可执行任意命令窃取机密或破坏 CI/CD 流水线。已修复并建议升级至最新版本 v9。 2025-7-28 12:18:25 Author: www.anquanke.com(查看原文) 阅读量:2 收藏

在广泛使用的 GitHub Action “tj-actions/branch-names” 中发现了一个关键的命令注入漏洞,影响了超过 5,000 个公共仓库。该漏洞被分配为 CVE-2025-54416,CVSS 得分为 9.1,允许在下游工作流中执行任意命令,从而使大量自动化流水线面临风险。

“branch-names” GitHub Action 是一个工作流工具,用于在 CI/CD 操作过程中检索分支和标签名称。它通常用于根据更改的文件或上下文信息触发测试、代码检查或部署工作流。然而,由于其广泛的使用,成为了攻击者的目标。

漏洞的根本原因是 Action 代码中错误地使用了 Shell 命令。尽管最初使用了 printf "%q" 来转义输入,但开发者后来使用 eval printf "%s" 解除了转义,从而重新引入了他们试图防止的命令注入风险。

通过使用 eval,任何精心构造的分支名称或标签都可以在 CI 工作流中触发命令执行。

在顾问报告中演示了该漏洞。攻击者可以简单地创建一个分支名称:

一旦使用该分支打开一个拉取请求,漏洞的 Action 就会执行其中的嵌入式有效载荷。这展示了攻击者如何在 GitHub 托管的运行器上执行远程脚本,从而可能窃取机密或修改源代码。

根据仓库的配置,攻击者利用此漏洞可能会:

  • 外泄敏感仓库机密

  • 获得未经授权的写入访问权限

  • 将恶意代码注入发布或部署流水线

  • 破坏 CI/CD 流水线的完整性

顾问报告解释道:“影响的严重性取决于 GITHUB_TOKEN 的权限以及触发事件的上下文。”

这在自动触发特权工作流的环境中尤其令人担忧。

为了解决这个问题,该 Action 现在已经完全移除了 eval 的使用。取而代之的是使用安全的、直接的 printf 调用来写入输出,这样就不会允许命令注入:

这样既保持了 Shell 安全性,又能实现相同的功能。

使用 tj-actions/branch-names 工作流的开发者应立即将工作流更新到最新的 v9 版本。


文章来源: https://www.anquanke.com/post/id/310613
如有侵权请联系:admin#unsafe.sh