漏洞概述 标题: 在 中通过不安全的 PR 分支名称插值实现命令注入 描述: 在 GitHub Actions 工作流中存在一个不安全的直接字符串插值漏洞。任何能够提交 Pull Request 的攻击者都可以在授权的 Runner 沙箱中执行任意 bash 命令,可能导致未经授权的仓库修改和凭证泄露。 详情: GitHub Actions 工作流 使用用户提供的变量(如分支名称 )显式内联在 bash 脚本序列中,依赖于 GitHub Actions 的 表达式语法。 由于 GitHub Actions 宏替换是在脚本实际运行之前作为纯文本评估和注入的,攻击者可以嵌入子 shell 执行序列(如 ),结合 绕过正常的 shell 验证和强制代码执行前的标准赋值。 易受攻击的代码块存在于 的第 54-68 行: 影响范围 生态系统: GitHub Actions 包名称: vercel/ai(或引用此特定工作流的任何内部部署) 受影响版本: 所有当前保留 块中直接 插值的提交。 已修补版本: 无 严重性: 严重性: 关键 向量字符串: CVSS:3.1/AV:N/AC:H/UI:N/S:C/C:H/I:A/A:H 弱点: CWE: CWE-78: 操作系统命令中特殊元素的不当中和(OS 命令注入) 修复方案 为了修复此问题,所有动态攻击者可控的输入应通过中间环境变量(使用 上下文映射)传递给 runner,而不是通过字符串插值 。 POC 代码 以下 Python 脚本模拟了 GitHub Actions runner 解析攻击者制作的分支字符串的核心行为,并演示了 bash 注入循环的执行,而不依赖于空格。 1. 将以下代码保存为 : 2. 执行 Python 脚本: 日志证据: