构建阶段的软件供应链威胁

随着软件供应链生命周期从源代码发展到可执行工件,构建阶段是关键时刻。然而,这一转变阶段也容易受到一系列威胁,这些威胁可能会危及软件的完整性和 build security。这些威胁可以通过各种方法渗透到构建过程中,包括绕过已建立的 CI/CD pipeline、修改代码后源代码控制、破坏构建过程本身或操纵工件存储库。在这篇博文中,我们深入探讨这些威胁,并研究最普遍的软件供应链构建攻击。本内容继续我们的博客系列,探索 software supply chain security 在整个 SDLC.

软件开发生命周期中的构建阶段 

软件供应链生命周期的构建阶段包括将源代码转换为可执行软件工件的过程。此阶段涉及编译、链接和打包源代码,以及生成安装包和配置文件。

Build security 威胁是指漏洞,它允许攻击者在构建过程中对软件进行未经授权的更改,而无需更改源代码。这些威胁可以通过各种方法引入,例如破坏构建环境或利用构建工具中的漏洞。 

软件供应链安全构建攻击-软件供应链构建攻击

最常见的软件供应链威胁 - 构建攻击

绕道 CI/CD

这是指规避既定规则的做法 CI/CD (持续集成和持续交付) pipeline 直接构建和发布软件,而无需经过通常由官方强制执行的严格测试、验证和审计流程 pipeline。这可以通过在 CI/CD 环境或使用允许对构建过程进行未经授权修改的工具或脚本。此类矢量攻击的一个例子是 詹金斯攻击。2022 年,黑客入侵了该建筑 pipeline 流行的开源软件项目 Jenkins 的源代码。黑客将恶意代码注入 Jenkinsfile,这是一个定义构建过程的脚本。恶意代码允许黑客绕过 CI/CD pipeline的安全检查并将其代码注入到构建过程中。然后,该代码将在安装该软件的组织的系统上执行。

在源代码控制之后修改代码 

这种做法涉及在源代码被 commit将其部署到受信任的源代码控制系统 (SCS),然后使用此修改后的代码构建软件。这可以通过直接修改开发人员工作站上的代码或使用外部工具或脚本将恶意代码注入构建过程来完成。这种矢量攻击的一个例子是 2022 年的 GitLab 攻击。黑客渗透了构建 pipeline of GitLab黑客向 GitLab 注入恶意代码 CI/CD pipeline,这是一个可以自动执行 build security 过程。恶意代码允许黑客在代码被签入源代码控制后对其进行修改。这使得他们可以将代码注入软件中,然后在安装该软件的组织的系统上执行。

破坏构建过程

这涉及操纵或改变构建过程本身,无论是通过直接访问构建环境,还是通过利用构建工具或第三方依赖项中的漏洞。这可以将恶意代码引入构建输出,篡改构建来源,或完全破坏构建过程。这种矢量攻击最著名的例子是 SolarWinds 攻击攻击者未经授权访问了 SolarWinds 的构建平台,该平台用于编译和打包 SolarWinds Orion 软件。此脚本将恶意代码注入编译后的 SolarWinds Orion 软件中。当用户安装受感染的软件时,恶意代码会在他们的系统上执行,从而使攻击者能够未经授权访问他们的系统。攻击者还能够从他们的系统中窃取敏感数据,例如凭证、知识产权和客户信息。

破坏工件存储库

这是指未经授权访问或操纵工件存储库,其中存储软件包和二进制文件以分发给内部或外部用户。攻击者可以利用此漏洞引入恶意代码,篡改软件的真实性或破坏部署过程。这种矢量攻击的一个例子是 2022 年的 RubyGems黑客入侵了 RubyGems 的工件库。黑客用恶意工件替换了合法工件,然后数千个使用 Ruby on Rails 构建软件的组织下载了该恶意工件。恶意工件允许黑客在安装该软件的组织的系统上执行任意代码。这可能使他们能够窃取数据、安装恶意软件或破坏操作。

最后的评论

随着组织继续采用强调自动化和持续交付的软件开发实践,保护软件构建过程的重要性从未如此突出。通过在整个构建阶段实施强大的安全措施,组织可以显著降低遭受恶意攻击的风险,这些攻击可能会损害其软件的完整性和安全性。

本博客文章中概述的策略和提供的示例提醒我们,构建阶段是软件供应链中的一个薄弱环节。组织应注意这些威胁并实施必要的安全措施来保护其软件免受攻击。通过这样做,他们可以确保其软件的完整性、安全性和可靠性,以造福用户和客户。

加入我们的安全软件生态系统之旅

不要错过这个机会,在避免软件供应链威胁方面保持领先地位。立即订阅我们的博客,第一时间获得我们的最新见解,确保您的组织在不断变化的威胁中保持弹性和安全。我们可以共同为所有人构建一个更强大、更安全的软件生态系统。

探索Xygeni 的功能!
观看我们的视频演示
sca-tools-软件-成分分析工具
确定软件风险的优先级、进行补救并加以保护
7-day免费试用
无需信用卡

保护您的软件开发和交付

使用 Xygeni 产品套件