写点什么

GitHub 遭入侵凸显 CI/CD 供应链风险

作者:Matt Foster

  • 2025-05-17
    北京
  • 本文字数:1416 字

    阅读完需:约 5 分钟

大小:686.54K时长:03:54
GitHub 遭入侵凸显 CI/CD 供应链风险

数千个仓库使用的一个热门 GitHub Action 最近遭到入侵,暴露了开源 Action 发布和使用方式中的一个关键漏洞。

 

一位新加入的维护者通过发布一个包含了混淆恶意代码的版本,短暂劫持了 tj-actions/changed-files Action。这引发了开发者社区对 GitHub Actions 生态系统中 CI/CD 安全性的担忧。

 

此次事件让人们注意到了一个新兴的攻击面:Action 本身的供应链。大多数和 Action 相关的指南都侧重于优化工作流环境,很少有团队仔细审查他们导入的 Action 的安全性。这一漏洞让业内人士再次呼吁大家重视最佳实践,如 Action 固定、第三方审计和强化运行器等。

 

很多代码库广泛使用 tj-actions/changed-files Action 来检测拉取请求中的文件更改——这是一些 CI 工作流中的常见步骤。2025 年 3 月,一位新的维护人员引入了一个版本 (v44),其中包含了可由远程代码执行的混淆 shell 命令。虽然该恶意版本存在的时间很短,但它毕竟绕过了检测,暴露出了有大量开发者信任并使用 Gi​​tHub Actions 这一盲点。

 

当用户注意到该动作的新版本包含一个混淆的 curl | bash 模式时,该漏洞才得以曝光——这被认为是远程脚本执行的危险信号。StepSecurity 分析了其中的代码,并确认它可以从 GitHub 托管的运行器中窃取敏感数据。这个恶意版本被迅速移除,代码库也恢复了。该事件让受影响的众多项目开始了广泛的审计,并暂停了工作流。

 

这一 Action 之所以引人注目,不仅是因为它的受欢迎程度——据估计有超过 2 万个代码库使用了它——还因为它暴露了更广泛的生态系统存在的一大弱点。开发者通常将 GitHub Actions 视为值得信赖的构建块,但与软件包或容器不同,Actions 缺乏对发布、所有权变更或签名验证的强大控制力。

 

安全研究人员和开源维护人员迅速分享了各种缓解措施。StepSecurity 建议将所有第三方动作固定到特定的 SHA,以确保可重复性并防止篡改。他们还建议通过限制出站网络访问、严格限定环境变量范围以及减少不必要的权限来强化 GitHub 托管的运行器。此事件还促使一些开发人员采取主动行动——扫描其工作流中未固定的依赖项,并审核其所依赖的工作流。

 

除了一些代码库受到影响外,此次事件重新引发了关于 CI/CD 供应链安全性的更广泛讨论。开发者论坛中出现了担忧,行业研究者也对攻击的潜在影响范围做了更深入的分析。许多团队专注于保护其应用程序代码(包括依赖项扫描和静态分析等实践),而 CI/CD 工具的审查可能较少。GitHub Actions 尤其特别,它们以高权限运行,能够签署发布、推送镜像或部署到生产环境。一个被入侵的动作可能会破坏整个交付流程。虽然 StepSecurity 并未量化使用未固定 Actions 的普遍性,但他们经常强调其使用风险,并建议大家谨慎对待。

 

这次威胁也让人想起了其他生态系统中类似的问题,例如恶意 NPM 包或木马 Docker 镜像。尽管业界正在通过 SLSA、Sigstore 和 SBOM 工具等举措取得进展,但 GitHub Actions 仍然缺乏对可重用 Actions 的溯源、沙盒或信任执行的一流支持。

 

随着对 GitHub Actions 生态系统的审查日益严格,一些工程团队开始规范其评估和采用第三方自动化工具的方式,为可信 Actions 定义内部标准,并在集成动作前进行审核。这种基于护栏的方法,正如 Salesforce 等组织所见,反映了一种更广泛的转变,即将长期以来对应用程序依赖项的谨慎和治理态度用于 CI/CD 基础设施上。它也暗示了这一生态系统的未来发展方向。

 

原文链接:

Compromised GitHub Action Highlights Risks in CI/CD Supply Chains

2025-05-17 08:005801

评论

发布
暂无评论

如何减少管理层级?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

你的故事,触动了我的心

小天同学

读后感 读书总结 4月日更 皮囊

架构实战营 - 架构设计文档模板

华仔

架构设计 文档模板

量化策略系统搭建,马丁策略交易

翻译:《实用的Python编程》InstructorNotes

codists

Python

图算法系列之深度优先搜索(一)

Silently9527

Java 深度优先搜索 图算法

边缘计算加持下的智慧社区

边缘计算

编程实战:如何管理代码里的常量

华为云开发者联盟

常量 代码 web开发 final常量类 复用常量

一场关于演讲的演讲

Jxin

mmkv跨进程,面试字节跳动Android研发岗,灵魂拷问

欢喜学安卓

android 程序员 面试 移动开发

读《小岛经济学有感》

箭上有毒

读书笔记 4月日更

NumPy之:标量scalars

程序那些事

Python 数据分析 Numpy 程序那些事 scalar

ndk开发环境,个人开发者做一款App需要知道的事情,绝对干货

欢喜学安卓

android 程序员 面试 移动开发

闲来无事,写脚本,install_wordpress

ilinux

浅谈BSS3.0产品“守成”之策下 • 运维提升篇

鲸品堂

软件 运维 提升

BUG!从编写 Loader 到窥探大佬 Debug 全过程

HZFEStudio

小程序 webpack 构建工具

Java虚拟机原理

风翱

JVM 4月日更

【Node专题】Node 与 Go 的认识

南吕

后端 Node 4月日更

PassJava 初始化项目和添加微服务

悟空聊架构

安卓rxjava使用,4面字节跳动拿到Offer,面试必问

欢喜学安卓

android 程序员 面试 移动开发

容器 & 服务: 扩容

程序员架构进阶

容器 k8s 28天写作 弹性扩容 4月日更

安卓rxjava面试,面试一路绿灯Offer拿到手软,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

网络协议学习笔记Day3

穿过生命散发芬芳

网络协议 4月日更

小米java社招面试记录,带备战思路

Java架构师迁哥

聪明人的训练(二十四)

Changing Lin

4月日更

2021|南吕

南吕

生活随想 4月日更

【go专题】Context的理解

南吕

Go 语言 4月日更

当我看技术文章的时候,我在想什么?

why技术

Java

MBP恢复记(体验rm -rf /*)

SamGo

学习

Vue源码思想在工作中的应用

执鸢者

Vue 大前端

新思科技发布《疫情中的安全隐患:移动应用程序安全现状》报告

InfoQ_434670063458

App 新思科技 移动应用程序安全

GitHub 遭入侵凸显 CI/CD 供应链风险_安全_InfoQ精选文章