GitHub Actions 中的工件中毒通过软件管道导入恶意软件

源节点: 1769941

攻击者向 GitHub 上的开源存储库提交更改可能会导致包含最新版本组件的下游软件项目使用恶意代码编译更新。

这是根据软件供应链安全公司 Legit Security 的说法,该公司在 1 月 XNUMX 日发布的一份咨询报告中表示,这种“工件中毒”弱点可能会影响使用 GitHub Actions(一种用于自动化开发管道的服务)的软件项目,方法是在以下时间触发构建过程在软件依赖项中检测到更改。 

该漏洞不是理论上的:Legit Security 模拟了对管理 Rust 的项目的攻击,导致该项目使用流行的 GCC 软件库的自定义和恶意版本重新编译,该公司在公告中表示。

Legit Security 的首席技术官 Liav Caspi 说,这个问题可能会影响大量的开源项目,因为维护人员通常会在他们自己实际分析代码之前对贡献的代码进行测试。

“这是今天的常见模式,”他说。 “如今,许多开源项目在收到变更请求后,会运行一系列测试来验证请求,因为维护者不想先审查代码。 相反,它会自动运行测试。”

该攻击利用了通过 GitHub Actions 的自动构建过程。 Legit Security 表示,就 Rust 编程语言而言,易受攻击的模式可能允许攻击者以特权方式执行代码作为开发管道的一部分,窃取存储库机密并可能篡改代码。

“简单地说:在易受攻击的工作流程中,任何 GitHub 用户都可以创建一个用于构建工件的分支,”该公司 在其咨询中声明. “然后将此工件注入原始存储库构建过程并修改其输出。 这是另一种形式的软件供应链攻击,其中构建输出被攻击者修改。”

该漏洞允许进行类似于 针对 CodeCov 的恶意软件插入攻击 并且,通过该公司的软件,它的下游客户。

“缺乏跨工作流工件通信的本地 GitHub 实现导致许多项目和 GitHub Actions 社区为跨工作流通信开发不安全的解决方案,并使这种威胁非常普遍,”Legit Security 在咨询中表示。

Legit Security 表示,GitHub 确认了这个问题并为信息支付了一笔赏金,而 Rust 修复了其易受攻击的管道。

资料来源:合法安全

软件供应链需要安全

该漏洞是影响软件供应链的最新安全问题。 行业和政府机构越来越多地寻求加强开源软件和作为服务提供的软件的安全性。

例如,2021 年 XNUMX 月,拜登政府发布了关于改善国家网络安全的行政命令,这是一项联邦规则,除其他要求外,还要求政府将 要求其购买的任何软件都具有基准安全标准. 在私营行业方面,谷歌和微软已经 承诺数十亿美元 支持开源生态系统的安全性,它提供的代码 包含平均应用程序代码库的四分之三以上.

合乎逻辑,但易受攻击

安全问题属于一类难以发现的问题,称为逻辑问题,其中包括权限问题、分叉存储库插入管道的可能性以及分叉存储库和基础存储库之间缺乏区别。

由于软件项目通常使用自动化脚本来检查提交的代码,然后再将它们转发给维护者,因此在任何人检查它们是否有恶意代码之前,拉取请求将通过自动化运行。 虽然自动化可以节省时间,但它也应该被视为攻击者将恶意代码插入管道的一种方式。

“当你进行开源开发时,问题就更大了,因为你正在接受世界上任何人的贡献,”Caspi 说。 “你正在执行你无法信任的事情。”

GitHub 承认了这个问题,并扩展了排除外部合作者提交的内容被自动插入到 Actions 管道中的方法。 公司 更新了它的 GetArtifact 和 ListArtifacts API 目的是提供更多信息以帮助确定工件是否可信。

“任何人做任何像 Rust 项目所做的事情——信任第三方的输入——那么他们仍然容易受到攻击,”Caspi 说。 “这是一个逻辑问题。 GitHub 只是让编写更安全的脚本变得更容易。”

时间戳记:

更多来自 暗读