研究人员发现,开发人员如果输入错误的 GitHub Actions 名称和所有者,他们的存储库和帐户就会面临恶意代码执行的风险,这将对软件供应链造成严重影响。
长期以来,攻击者一直试图利用拼写错误,在各种系统(DNS、软件包存储库)中注册接近热门资源的名称。
研究人员发现,这种称为域名抢注的技术也适用于 GitHub Actions,这可能导致开发人员在自己的存储库中执行恶意工作流程。
GitHub Actions 是一项 CI/CD(持续集成和持续交付)服务,它使开发人员能够通过设置在检测到特定事件(例如将新代码提交到存储库时)时触发的工作流程来自动化软件构建和测试。
工作流程称为 Actions,是打包在 .yml 文件中的指令,在虚拟容器内执行(通常在 GitHub 的基础架构上),并返回编译的二进制文件、测试结果等。
这些工作流程可以在 GitHub Marketplace 上重复使用和与他人共享,目前 GitHub Marketplace 列出了数千个公共操作,开发人员可以使用这些操作,而不必编写自己的代码。
操作还可以作为依赖项包含在其他操作中,从而创建类似于其他开源组件注册表的生态系统。
Orca Security 的研究人员最近调查了域名抢注对 GitHub Actions 生态系统的影响,他们注册了 14 个 GitHub 组织,这些组织的名称都是流行 Actions 所有者的错误拼写——例如,将 circleci 拼成 circelci,将 action 拼成 actons,将 google-github-actons 拼成 google-github-actions。
研究人员在报告中写道:
在正常情况下,如果在调用操作时出现拼写错误,工作流程将会失败,开发人员会注意到问题并进行修复。
但是,如果存在恶意操作,并且调用了拼写错误的名称,工作流程将正常运行。
例如,如果开发人员在自己的工作流程中输入“uses: action/checkout”而不是“uses: action/checkout”(这是正确的指令,因为父组织是“actions”(复数)),他们的工作流程将尝试从不受信任的组织的存储库“checkout”运行代码。
如果攻击者创建了“action”(单数)组织和“checkout”存储库,那么他们的恶意操作将改为执行。
在上个月的另一份报告中,Palo Alto Networks 研究员 Yaron Avital 发现 GitHub Actions 生成的构建工件包含第三方云服务的敏感访问令牌,这些令牌可能被攻击者滥用将恶意代码推送到项目中或破坏云基础设施。
范围和风险因素
人们可能会认为开发人员出现拼写错误的情况并不常见,但考虑到 GitHub 的规模(超过 1 亿开发人员和超过 4.2 亿个存储库),即使是统计上罕见的事件也可能意味着成千上万的潜在受害者。
例如,研究人员发现 194 个工作流文件调用的是“action”组织而不是“actions”;此外,12 个公共存储库在建立后两个月内就开始引用研究人员伪造的“actons”组织。
研究人员写道:
尽管这个数字看起来可能不是很高,但这些只是我们可以搜索的公共存储库,可能还有多个私人存储库,而且数量会随着时间的推移而增加。
这种技术对攻击者有吸引力的另一个原因是可扩展性。
创建虚假的 GitHub 组织、复制其原始操作存储库并在其代码中添加后门可以轻松实现自动化。
这意味着一个攻击者可以创建针对许多流行 GitHub Actions 的拼写错误变体,并使受影响的存储库数量迅速增加。
归根结底,这是一种低成本、高影响的攻击。
能够对他人的代码执行恶意操作的能力非常强大,并可能导致软件供应链攻击,随后使用后门代码的组织和用户也会受到影响。
Orca 研究人员警告称:
如果某个行为是恶意的,这种级别的访问可能会带来风险——它可能会安装恶意软件、窃取机密或对您的代码进行秘密更改。
这种访问的影响可能是毁灭性的。
想象一下,一个行为泄露了敏感信息或修改了代码,引入了微妙的错误或后门,可能会影响所有未来的构建和部署。
事实上,一个被入侵的行为甚至可以利用您的 GitHub 凭据将恶意更改推送到您组织内的其他存储库,从而扩大多个项目的损害。
这又引出了另一个重要观点:
受影响的存储库数量并不重要,重要的是它们的重要性和规模。
即使攻击者利用这种技术只成功入侵了 10 个存储库,但一个属于热门项目的存储库却可以让攻击者访问供应链中的数千名用户和组织。
如果发现冒充账户,GitHub 确实会采取行动,但用户不应将其作为防御域名抢注攻击的手段。
在 Orca 为概念验证设立的 14 个域名抢注组织中,GitHub 在三个月内仅暂停了一个组织 — circelci — 这可能是因为有人举报了它。
CircleCI 是最受欢迎的 CI/CD 平台之一。
在调查过程中,Orca 的研究人员还注意到其他人也有同样的想法。
研究人员发现了一个名为“aws-action”的组织,其显示名称为“AWS for Github Actions – TYPOSQUAT”。
它的描述警告用户不要使用其存储库中的操作,因为它们是为研究目的而设置的。
如果不同的研究人员各自都有相同的域名抢注想法,那么一些攻击者很可能也有同样的想法,尤其是因为域名抢注已经是网站和其他组件存储库中常用的攻击技术。
Orca 研究人员建议采取以下最佳做法来防止此类攻击:
👉在工作流程中使用操作和其名称之前,请仔细检查它们。
👉仅选择来自经过验证的创建者或那些获得大量星标和分叉的操作。
👉使用版本标签或提交 SHA 来确保正在使用已知良好的操作。
👉集成安全工具来扫描工作流程中的潜在问题,包括域名抢注。
👉确保您的团队意识到域名抢注的风险以及如何避免这些风险。
原文始发于微信公众号(网络研究观):GitHub Actions 域名抢注:一场影响深远的供应链攻击
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论