鉴于对快速创新和敏捷方法论采用的需求,持续集成/持续部署 (CI/CD) 管道已成为构建所有 DevOps 流程的基础。他们是高效交付的支柱。
事实上,根据持续交付状态报告,使用 CI/CD 工具与所有指标上更好的软件交付性能相关。
这些管道给组织带来了难以置信的安全风险,后果可能很严重。看似无害的代码更改通过受损的管道可能会导致安全漏洞、系统受损和严重的运营中断。这就是为什么 DevSecOps 团队必须遵循最佳实践来保护交付过程的每个阶段。
在本文中,我们将深入研究 CI/CD 管道安全性的复杂性,探索风险和漏洞,并提供技巧和工具来帮助您增强 CI/CD 管道以抵御潜在威胁。
什么是 CI/CD 管道?
CI/CD 管道是一系列自动化流程,可简化从代码提交到生产的过程,并消除手动切换。这是自动化和控制之间紧密协调的舞蹈,帮助 DevOps 团队以闪电般的速度交付可靠的软件。
想象一下用于软件更新的传送带。每次开发人员进行更改时,它都会自动跳到传送带上。传送带通过一系列检查点快速进行更改,例如构建代码、运行测试和修复任何错误。如果一切顺利,更新就会快速顺利地交付给用户!
简而言之,这基本上是一个 CI/CD 管道。CI 代表持续集成,不断合并和测试变更。CD 代表持续交付/部署,其中工作更改将发布给用户。
神奇之处在于:一切都是自动化的。这可以节省开发人员的时间和精力,同时尽早发现问题。将其视为软件更新的质量控制系统,确保只有最好的软件才能到达您的用户。因此,下次您听到 CI/CD 管道时,请记住,这只是自动软件更新传送带的一种奇特说法。
持续集成充当第一个检查点,自动合并代码更改并触发自动化测试,以确保新代码与现有代码库无缝集成。这有助于确保在开发过程的早期识别并解决错误和回归。
然后,持续交付接管、打包和暂存经过测试的代码以进行部署。持续部署是持续交付的扩展,它更进一步,将代码更改直接自动部署到生产中,前提是代码更改通过了所有必要的测试。
重要的是,CI/CD 管道是软件供应链的重要组成部分,在“构建和发布”阶段发挥着重要作用。
CI/CD 管道阶段
CI/CD 管道有几个不同的阶段。每个阶段在软件开发生命周期(SDLC)中都起着至关重要的作用。如果您想在整个管道中实施强大的安全措施,您首先必须了解各个阶段。
为什么 CI/CD 安全很重要?
CI/CD 管道是有吸引力的目标。恶意行为者经常以 CI/CD 管道为目标,以获取敏感数据的访问权限或操纵代码以瞄准下游客户。从代码提交到生产,每个阶段都是可能的目标。如果管道本身受到损害,即使是最安全的代码也容易受到攻击,可能导致恶意代码注入软件,就像2021 年Codecov 漏洞一样。攻击者从 CI 中窃取数据后,数千名 Codecov 客户受到影响。一个构建。
这些违规行为给组织造成了数百万美元的损失,削弱了客户的信任,并对品牌声誉产生了长期的负面影响。
在确定可帮助您保护端到端 SDLC 的解决方案之前,让我们先探讨一些其他常见的 CI/CD 安全漏洞。
常见的 CI/CD 安全风险
秘密泄密
有时,开发人员会无意中提交包含 API 密钥、密码或加密密钥等机密的代码。攻击者可以利用这些暴露的秘密并获得对关键系统和服务的未经授权的访问。
2017 年 Uber就发生过这种情况,当时他们的 GitHub 存储库被意外暴露。该存储库包含访问凭据。攻击者发现并利用这些凭证对 Uber 的 AWS 账户进行未经授权的访问,从而泄露了近 6000 万用户的个人数据。
供应链攻击
供应链攻击针对 CI/CD 管道中使用的依赖项和组件。例如,攻击者可能会将恶意代码注入常用库或破坏包管理器,从而导致受感染软件的分发。这意味着受影响的不仅仅是目标组织。客户、供应商、合作伙伴和其他第三方也是如此。
当组织在不知不觉中将这些受损的依赖项纳入其 CI/CD 管道时,攻击者就会获得立足点并造成严重破坏。
最近最引人注目的供应链攻击示例之一发生在 2020 年,当时恶意行为者破坏了 SolarWinds 软件构建流程,在其 Orion 软件更新中注入了后门。然后,组织在不知不觉中安装了受感染的更新,导致广泛的漏洞和对敏感网络的未经授权的访问。
配置错误
CI/CD 工具、脚本或基础设施设置中的错误配置可能会暴露攻击者可以利用的漏洞。这可能包括访问控制配置不当、默认设置不安全或权限管理不善。这可能允许未经授权的用户查看或修改敏感代码和配置,从而损害管道的整体安全性。
代码注入
代码注入涉及将恶意代码引入 CI/CD 管道,可能导致未经授权的代码执行或在正在开发的软件中引入漏洞。
这正是 2021 年发生的情况,当时恶意脚本被注入Codecov 的 CI/CD 流程。受损的脚本暴露了凭据,使攻击者能够从 CI/CD 环境中窃取敏感信息并危害多个组织的代码存储库。
访问控制不足
访问控制薄弱或不足可能会导致对 CI/CD 管道的关键组件进行未经授权的访问。这可能使他们能够修改代码、插入恶意脚本或损害管道的完整性,从而构成重大安全风险。
2022 年 LastPass就发生了这种情况,当时攻击者在其开发环境中获得了部分源代码和专有技术信息的访问权限。然后,他们利用这些信息发起了一系列攻击,其中包括针对具有高级安全身份验证的高级 DevOps 工程师的攻击。
最终,他们窃取了工程师的主密码,并获得了加密的安全笔记和解密密钥,从而打开了关键数据库备份的大门。
此列表只是可能导致 CI/CD 管道受损的数千种攻击路径的几个示例。还想吃更多吗?NCC Group 的研究团队在本文中分享了他们执行的 10 个复杂攻击示例。
CI/CD 管道安全最佳实践
以下最佳实践技巧将有助于降低违规的可能性。注意:务必不断地重新评估您的状况,以跟上不断发展的安全标准和新出现的威胁。
如需更多提示,请查看NSA 和 CISA 的联合备忘录。
访问控制
适当的访问控制(包括角色、权限和身份验证机制)对于防止未经授权的访问和操纵 CI/CD 管道至关重要。通过将访问权限限制为仅需要的人员并强制执行最小权限原则,组织可以降低恶意活动的风险。
扫码
通过将自动代码扫描集成到 CI/CD 管道中,可以在部署易受攻击的代码之前检测并解决已知漏洞或常见应用程序安全风险等问题。这降低了将漏洞引入生产环境的风险。
漏洞管理
通过主动识别、确定优先级和减轻软件和基础设施组件中的安全漏洞,领先于潜在威胁并确保您的管道保持弹性。这包括定期扫描漏洞、评估其严重性以及实施措施来修复或减轻风险。
安全环境配置
正如我们在 Uber 中看到的那样,错误配置可能会导致安全漏洞。这意味着正确配置服务器、容器、数据库和其他组件的设置对于防止潜在的攻击至关重要。
避免错误配置的一些重要提示:
■ 使用最小权限策略限制访问和权限
■ 使用安全且集中的方法来管理环境变量
■ 使用最新的安全补丁使所有 CI/CD 组件保持最新状态
DevOps 和安全团队之间的协作
DevOps 和安全团队之间的有效协作可确保安全性不会被视为事后的想法,而是嵌入到整个 CI/CD 流程中。 不幸的是,76% 的安全专业人员发现在安全团队和开发人员团队之间实现协作文化具有挑战性。
那么团队如何才能建立更好的工作关系呢?高层的支持和承诺、培训和激励都会有所帮助。最好的方法就是我们所说的受控左移。
在这种模式下,安全团队仍然专注于减少漏洞,同时也注意修复缺陷对开发人员的影响。通过这种方式,两个团队可以共同构建适合每个人的流程和工作流程。通过受控的左移,开发人员可以保持速度,同时安全性可以保护管道,从而改善组织的安全状况。
工具/技术
正确的工具和技术可以自动化安全流程、简化漏洞检测并强制执行安全策略。将这些工具集成到 CI/CD 管道中可以提高安全措施的效率。这使组织能够识别和解决安全问题,同时保持持续交付的节奏。
虽然数十种不同的工具(SCA、SAST、CI/CD 安全工具)可以帮助您的组织保护其 CI/CD 管道,但只有一种工具可以提供完整的保护并让您高枕无忧:完整的应用程序安全状态管理 (ASPM)。
完整的 ASPM可在管道内和管道外提供持续的安全性,在整个软件生命周期中从多个来源获取数据,并为安全团队提供持续、实时的风险视图。问题可以更快、更容易地检测、响应和修复。
完整的 ASPM 解决方案提供了一套应用程序安全测试工具(例如 SCA 和 SAST)、提供 CI/CD 安全性并从其他第三方扫描仪获取数据。
安全第一、开发人员友好的ASPM 平台为 CI/CD 管道每个阶段的安全、工程和 DevOps 团队提供可见性、优先级和修复。
通过提供一个关联管道安全、秘密扫描、代码泄漏检测、SAST、SCA和IaC 扫描的单一、统一的安全平台,让安全团队和开发人员高枕无忧。