写点什么

PyPI 发布 GitHub Action 存在可注入表达式扩展漏洞

作者:qife122
  • 2025-11-09
    福建
  • 本文字数:1366 字

    阅读完需:约 4 分钟

PyPI 发布 GitHub Action 存在可注入表达式扩展漏洞

漏洞详情

包信息

  • 包名: actions

  • 项目: pypa/gh-action-pypi-publish (GitHub Actions)

影响版本

  • 受影响版本: < 1.13.0

  • 已修复版本: 1.13.0

漏洞描述

摘要

gh-action-pypi-publish 在可能被攻击者控制的上下文中使用了 GitHub Actions 表达式扩展(即${{ ... }})。根据调用 gh-action-pypi-publish 的触发器类型,这可能允许攻击者在调用 gh-action-pypi-publish 的 workflow 步骤中执行任意代码。

详细说明

gh-action-pypi-publish 包含一个复合操作步骤set-repo-and-ref,该步骤使用了表达式扩展:


- name: Set repo and ref from which to run Docker container action  id: set-repo-and-ref  run: |    # Set repo and ref from which to run Docker container action    # to handle cases in which `github.action_` context is not set
REF=${{ env.ACTION_REF || env.PR_REF || github.ref_name }} REPO=${{ env.ACTION_REPO || env.PR_REPO || github.repository }} REPO_ID=${{ env.PR_REPO_ID || github.repository_id }} echo "ref=$REF" >>"$GITHUB_OUTPUT" echo "repo=$REPO" >>"$GITHUB_OUTPUT" echo "repo-id=$REPO_ID" >>"$GITHUB_OUTPUT" shell: bash env: ACTION_REF: ${{ github.action_ref }} ACTION_REPO: ${{ github.action_repository }} PR_REF: ${{ github.event.pull_request.head.ref }} PR_REPO: ${{ github.event.pull_request.head.repo.full_name }} PR_REPO_ID: ${{ github.event.pull_request.base.repo.id }}
复制代码


在正常的预期操作中,这些扩展用于为refrepo-id等输出建立正确的优先级。


然而,这些扩展有一个副作用:因为它们使用${{ ... }}而不是${...}(即正常的 shell 插值),它们可以绕过正常的 shell 引用规则。特别是,如果env.ACTION_REFenv.PR_REF都评估为空字符串,那么表达式将回退到github.ref_name,这可能是攻击者通过分支或标签名控制的字符串。


例如,如果攻击者能够将分支名称设置为类似innocent;cat${IFS}/etc/passwd的内容,那么 REF 行可能扩展为:


REF=innocent;cat${IFS}/etc/passwd
复制代码


这将把 REF 设置为innocent,然后运行攻击者的代码。


关于危险扩展的更多信息可以在 zizmor 的模板注入规则文档中找到。

影响

此漏洞的影响非常低:在正常操作中,相关表达式不太可能被评估,因为env.ACTION_REF应该始终优先。


特别是,该操作在许多流行配置中不容易受到攻击,例如使用pull_requestreleasepush: tags事件调用操作的情况。

参考信息

  • GHSA-vxmw-7h4f-hqxh

  • pypa/gh-action-pypi-publish@77db1b7

安全指标

严重程度

  • 等级: 低

  • CVSS 总体评分: 0.0/10

CVSS v3 基础指标

  • 攻击向量: 网络

  • 攻击复杂度: 低

  • 所需权限: 无

  • 用户交互: 无

  • 范围: 未改变

  • 机密性: 无影响

  • 完整性: 无影响

  • 可用性: 无影响


CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N

弱点

  • CWE-77: 命令中使用的特殊元素的不当中和(命令注入)


产品使用来自上游组件的外部影响输入构建全部或部分命令,但在将命令发送到下游组件时,没有中和或错误地中和可能修改预期命令的特殊元素。

信用

报告者: woodruffw 更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
PyPI发布GitHub Action存在可注入表达式扩展漏洞_Github Actions_qife122_InfoQ写作社区