漏洞详情
摘要
gh-action-pypi-publish 在某些上下文中使用了 GitHub Actions 的表达式扩展(即 ${{ ... }}),而这些上下文可能受到攻击者的控制。根据调用 gh-action-pypi-publish 所使用的触发事件,这可能允许攻击者在调用 gh-action-pypi-publish 的工作流步骤上下文中执行任意代码。
详情
gh-action-pypi-publish 包含一个名为 set-repo-and-ref 的复合动作步骤,该步骤使用了表达式扩展:
|
|
在正常的预期操作中,这些扩展用于为 ref 和 repo-id 等输出建立正确的优先级。
然而,这些扩展有一个副作用:因为它们使用 ${{ ... }} 而不是 ${...}(即普通的 shell 插值),所以它们可以绕过正常的 shell 引号规则。具体来说,如果 env.ACTION_REF 和 env.PR_REF 都计算为空字符串,那么表达式将回退到 github.ref_name,这可以是攻击者通过分支或标签名控制的字符串。
例如,如果攻击者能够将分支名设置为类似 innocent;cat${IFS}/etc/passwd 的内容,那么 REF 行可能会扩展为:
|
|
这将把 REF 设置为 innocent,然后运行攻击者的代码。
关于危险扩展的更多信息,可以在 zizmor 的模板注入规则文档中找到。
影响
此漏洞的影响非常低:在正常操作中,所涉及的表达式不太可能被评估,因为 env.ACTION_REF 应该始终具有优先权。
具体来说,该动作在许多流行配置中并不易受攻击,例如使用 pull_request、release 或 push: tags 事件调用该动作的情况。
参考
- GHSA-vxmw-7h4f-hqxh
- pypa/gh-action-pypi-publish@77db1b7
安全信息
- 严重程度: 低
- CVSS 总体评分: 0.0
- CVSS v3 基础指标: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
- 弱点: CWE-77 - 对命令中使用的特殊元素进行不当中和(“命令注入”)
- GHSA ID: GHSA-vxmw-7h4f-hqxh
- 受影响版本: < 1.13.0
- 已修复版本: 1.13.0