GitHub供应链攻击事件:Coinbase遭袭,218个仓库暴露,CI/CD密钥泄露

此次供应链攻击涉及GitHub Action "tj-actions/changed-files",最初是针对Coinbase的一个开源项目的高度定向攻击,随后演变为范围更广的威胁。

攻击过程与影响

Palo Alto Networks Unit 42在一份报告中指出:"攻击载荷主要针对其开源项目agentkit的公共CI/CD流程,可能是为了利用它进行进一步的攻击。然而,攻击者未能使用Coinbase的密钥或发布软件包。"

该事件于2025年3月14日曝光,当时发现"tj-actions/changed-files"被入侵,注入了泄露运行该工作流的仓库中敏感密钥的代码。该漏洞被分配了CVE标识符CVE-2025-30066(CVSS评分:8.6)。

根据Endor Labs的估计,218个GitHub仓库因这次供应链攻击暴露了其密钥,泄露的信息主要包括DockerHub、npm和亚马逊云服务(AWS)的"几十个"凭证,以及GitHub安装访问令牌。

安全研究员Henrik Plate表示:"考虑到成千上万的仓库依赖于这个GitHub Action,供应链攻击的初始规模听起来很可怕。然而,深入分析工作流、运行情况和泄露的密钥后,发现实际影响比预期的要小:'仅'218个仓库泄露了密钥,其中大多数是短期的GITHUB_TOKEN,一旦工作流运行完成就会过期。"

攻击手段与后续发展

此后,另一个名为"reviewdog/action-setup"的GitHub Action的v1标签也被入侵,该标签通过"tj-actions/eslint-changed-files"作为依赖项被"tj-actions/changed-files"使用,其攻击载荷与tj-actions事件类似。"reviewdog/action-setup"的漏洞被追踪为CVE-2025-30154(CVSS评分:8.6)。

据称,CVE-2025-30154的利用使未识别的威胁行为者获得了与"tj-actions/changed-files"相关的个人访问令牌(PAT),从而允许他们修改仓库并推送恶意代码,进而影响了所有依赖该Action的GitHub仓库。

Unit 42的研究人员Omer Gil、Aviad Hahami、Asi Greenholts和Yaron Avital表示:"当执行tj-actions/eslint-changed-files Action时,tj-actions/changed-files CI运行器的密钥被泄露,攻击者得以窃取运行器中使用的凭证,包括属于tj-bot-actions GitHub用户账户的个人访问令牌(PAT)。"

目前怀疑攻击者设法获得了对reviewdog组织具有写权限的令牌,以进行恶意修改。然而,该令牌的获取方式目前仍不清楚。

此外,对"reviewdog/action-setup"的恶意提交据称是通过首先分叉相应仓库,提交更改,然后创建分叉拉取请求到原始仓库,最终引入任意提交------这种情况被称为"悬空提交"。

Palo Alto Networks的高级研究经理Gil告诉The Hacker News:"攻击者采取了多种技术手段来掩盖其踪迹,例如利用悬空提交、创建多个临时GitHub用户账户,以及在工作流日志中混淆其活动(尤其是在最初的Coinbase攻击中)。这些发现表明,攻击者技术高超,对CI/CD安全威胁和攻击策略有深刻理解。"

Unit 42推测,分叉拉取请求背后的用户账户"iLrmKCu86tjwp8"可能在攻击者从注册时提供的合法电子邮件地址切换到一次性(或匿名)电子邮件后从公众视野中隐藏,这可能导致该用户的所有交互和操作被隐藏。然而,GitHub在回应时既未确认也未否认这一假设,但表示正在积极审查情况并采取必要措施。

GitHub发言人告诉The Hacker News:"目前没有证据表明GitHub或其系统遭到入侵。所提及的项目是用户维护的开源项目。"

"GitHub继续根据GitHub的可接受使用政策审查并处理与仓库内容相关的用户报告,包括恶意软件和其他恶意攻击。用户应始终在更新到新版本之前审查GitHub Actions或他们代码中使用的任何其他包。这一点在这里与所有其他使用第三方代码的情况一样。"

对tj-actions/changed-files的GitHub分叉的深入搜索发现了另外两个账户"2ft2dKo28UazTZ"和"mmvojwip",这两个账户此后已从平台上删除。这两个账户还被发现创建了与Coinbase相关的仓库的分叉,如onchainkit、agentkit和x402。

进一步检查发现,这些账户通过分叉拉取请求修改了agentkit仓库中的"changelog.yml"文件,指向之前使用PAT发布的恶意版本的"tj-actions/changed-files"。

据信,攻击者获得了对agentkit仓库具有写权限的GitHub令牌------这反过来是由执行tj-actions/changed-files GitHub Actions促成的------以便进行未经授权的更改。

攻击者的策略与动机

另一个值得强调的重要方面是两种情况下使用的攻击载荷的差异,表明攻击者试图保持低调。

Gil表示:"攻击者在攻击的不同阶段使用了不同的攻击载荷。例如,在大规模攻击中,攻击者转储了运行器的内存,并将存储为环境变量的密钥打印到工作流的日志中,无论哪个工作流正在运行。然而,在针对Coinbase时,攻击者专门获取了GITHUB_TOKEN,并确保只有在仓库属于Coinbase时才会执行攻击载荷。"

目前尚不清楚此次攻击的最终目标是什么,但Gil指出,"强烈"怀疑其意图是经济利益,可能是试图进行加密货币盗窃,考虑到对Coinbase的高度针对性。截至2025年3月19日,该加密货币交易所已修复了攻击。

目前也不清楚是什么促使攻击者改变策略,将最初的有针对性的攻击转变为大规模且不那么隐秘的行动。

Gil表示:"一种假设是,在意识到他们无法利用其令牌毒害Coinbase仓库------并得知Coinbase已检测并缓解了攻击后------攻击者担心失去对tj-actions/changed-files Action的访问权限。由于入侵此Action可能提供对许多其他项目的访问权限,他们可能决定迅速采取行动。这可以解释为什么他们在Coinbase缓解其暴露后仅20分钟就发起了大规模攻击,尽管检测风险增加。"

相关推荐
咖啡教室6 小时前
github和npm开启2FA双重身份验证无法登陆
npm·github
uhakadotcom7 小时前
解锁网页解析的秘密:BeautifulSoup4 入门指南
后端·面试·github
uhakadotcom8 小时前
使用 Logstash 收集和处理 FastAPI 应用的日志
后端·面试·github
uhakadotcom8 小时前
Apache Flink 的三种作业模式解析
后端·面试·github
qq_3495232613 小时前
持续集成(CI)/持续部署(CD)
ci/cd
aigonna15 小时前
jina-embeddings-v3模型本地GPU使用教程
算法·github
uhakadotcom16 小时前
Go语言Web框架简介:快速上手指南
后端·面试·github
uhakadotcom16 小时前
Rust Web 框架简介:选择适合你的工具
后端·面试·github
uhakadotcom16 小时前
Java中的volatile关键字:轻量级同步机制
后端·面试·github
V文宝17 小时前
GitHub高级筛选小白使用手册
github