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

news/2025/11/9 6:07:52/文章来源:https://www.cnblogs.com/qife122/p/19203450

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 actionid: set-repo-and-refrun: |# Set repo and ref from which to run Docker container action# to handle cases in which `github.action_` context is not setREF=${{ 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: bashenv: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智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA 中为项目添加 Git 仓库的详细步骤:

IntelliJ IDEA 中为项目添加 Git 仓库的详细步骤:一、初始化本地 Git 仓库打开项目后,点击顶部菜单栏 VCS → Create Git Repository。 在弹出的窗口中,选择项目的根目录(默认即可),点击 OK,此时项目会被初始化…

幻梦 - 15 岁生日记

幻梦 - 15 岁生日记前言 自认为失败。 曲终。 有感而发,故成此记。 并以此致我过去的十五年。 Part 1 - 铸 幼时的记忆早已淡忘。 但想必应该是快乐的。 环绕在父母的关爱中,沉沦于同学的陪伴里。 课内的课程十分轻松…

高级程序语言设计第四级作业

这个作业属于:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业的要求:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14577 学号:102500309 姓名:郑睿杰 一.运行以下程序给出程序结果二.设计程序 1.目…

如何持续迭代skill

为什么要持续迭代skill 思想指导 具体方法用AI工具编写单元测试验证SKILL是否完整过程,大概率会遇到不少问题,通过AI工具+人工提示方式进修复,注意:最后总结经验,形成一份最佳实践或注意事项文档 将这份注意事项文…

如何验证skill的完整性

用AI使用skill编写单元测试 观察测试用例,是否按领域数据进行编码。编译是否有异常 导入的包是否和领域数据要求一致 案例是否与领域数据要求一致执行单元测试,观察效果是否符合预期

如何制作高质量skill

http://wiki.easyofd.cn/zh/JAVA

Debian 镜像源测速脚本

声明:此脚本及其说明文档由 Kimi AI 生成,内容仅供参考。 此脚本会测试各个镜像的连接质量、响应延迟和下载速度,并给出最优推荐。 #!/bin/bash # # Debian 镜像源测速脚本 # 测试国内主要Debian镜像源的连接质量,…

Linux 文件操作命令手册

Linux 文件操作命令手册 一、基础文件操作命令 1.1 复制文件/目录 - cp # 基本语法 cp [选项] 源文件 目标文件 cp [选项] 源文件... 目标目录# 常用选项 -r, -R # 递归复制目录及其内容 -i # 覆盖前提示确认…

第19天(中等题 二分查找)

打卡第十九天 2道中等题题目: 二分查找思路:二分查找&前后加下标的方式省去了边界情况的讨论不会做...好绕(重点标记一下这题 过两天回头再做一次)代码: class Solution { public:vector<int> solveQueries(…

7z 压缩如何不保留文件路径

7z 压缩如何不保留文件路径Posted on 2025-11-09 01:06 不会写代码的 阅读(0) 评论(0) 收藏 举报“dir/readme.txt” << 保留路径 源文件前增加"./" “./dir/readme.txt” << 只有文件

术与道之辩——存算一体的前世今生与未来

动笔写下这么一篇文章,既有长久以来的思考,也有一时的苦闷情绪的催动。 不知道读者有多少人看过一部国产漫画《一人之下》的,里面的三一门篇章给了我很大的触动,也是此文标题的来源——术与道之辩。 先从我理解的术…

悟空来路与关山

悟空来路与关山 ——AI元人文的思想跋涉 作者:岐金兰 悟空来路与关山 这七个字,正是那五十天思想锻造之路的终极写照。 “悟空”,是思想的起点。 空掉对“通用等价物”的执念,空掉对“终极解决方案”的幻想,空掉技…

升鲜宝分拣系统 功能与开发文档

升鲜宝分拣系统 功能与开发文档升鲜宝分拣系统 功能与开发文档(v1-完整版) 版本:v1 技术栈:Spring Boot 2.7 + MyBatis + Sa-Token + MySQL 8.0 + JDK 1.8 一、系统概述 升鲜宝分拣系统(Pick Sorting System)用于…

发展

我会按照自己制定的计划去做一些认为正确的事。这些事源于内心的准则,遵循一些前辈给予的指引,特别是在人际交往方面:结交那些有阅历、有目标的人,并且不抱有不切实际的幻想,脚踏实地做自己该做的事。 客观描述自…

cuda并行计算

cuda并行计算Posted on 2025-11-09 00:45 wsg_blog 阅读(0) 评论(0) 收藏 举报cuda并行计算

GitHub使用大全

返回文件直链 洛谷链接网络问题 下载SwitchHosts(密码 swch),以管理员身份运行,添加配置(左上角加号),填写如下信息。Hosts 类型: 远程 Hosts 标题: 随意 URL: https://raw.hellogithub.com/hosts 自动刷新: 最…

qtdebug

qDebug() << this << "took" << (QDateTime::currentMSecsSinceEpoch() - start_time_);

相信

相信后来你才发现 你不去爱别人,是相信没人会爱你。现实和选择都是如此的简单。而我只能等 运气的奖励。

文件直链

前往洛谷版 必要 应用 Edge VSCode 有道 微信输入法 网页 AdGuard 广告拦截器 Simple Allow Copy Outlook 洛谷 自动生成样例机 博客园 在Windows上配置C++17环境:从 Mingw 到 MSYS2 的详细指南-CSDN博客 GitHub使用大…

2025年11月投资纠纷律师评价榜:五强深度对比与数据解析

“钱投进去,合同签了,收益却迟迟不到账,甚至本金也拿不回来。”这是2025年三季度北京市金融消费纠纷调解中心接到的典型投诉开场白。随着私募基金、信托计划、资管产品规模突破二十八万亿元,个人投资者与机构之间的…