什么是 CI/CD 安全性?
持续集成会自动检测版本控制系统中的更改,然后编译代码并运行检查以创建构件。持续交付(CD)的作用相同,但它只需单击一下即可将软件推送到生产环境。CI 和 CD 都涉及人类参与该过程。例如,可以对变更执行最终的端到端测试,或者在将代码合并到主线分支之前检查代码。持续部署是一个完整的管道,如果代码通过了所有自动检查,将自动将代码推送到生产环境。
CI/CD安全性可以保护管道免受恶意行为者的攻击,这些恶意参与者可能提升特权、窃取数据或禁用系统。CI/CD管道安全性包括代码扫描、安全审查、审计、依赖检查和其他形式的风险管理。
与 CI/CD 管道相关的安全风险有哪些?
过去,CI进程通常运行在拥有编译中使用的所有库副本的服务器上,代码是原始的;常见的安全风险是SQL注入、缓冲区溢出和跨站点脚本(XSS)。这些大多是管理员在代码审查中发现的可识别的错误。
如今,开放全球应用程序安全项目 (OWASP) 列出了 Web 应用程序的 10 大安全风险,包括访问控制中断、身份验证和访问问题以及易受攻击或过时的组件。这些是集成、依赖关系、版本控制和在 SaaS 上运行的构建方面的问题,也就是和管道有关的问题。
CI 软件通常在云端运行,攻击者可以猜到简单的用户名和密码登录。老练的攻击者可以获得对开源项目的提交权限,添加无害的依赖项(例如Ruby的高级数学库),然后在依赖项中添加病毒或攻击。新的依赖关系还会产生操作风险:一个库中的更改可能会破坏另一个库。
攻击者还可以创建与内部库同名的公共依赖项。或者,构件系统可能会下载新版本的 Linux 来创建容器,然后向其添加新版本,从而产生安全漏洞。在这些情况下,CI/CD 系统可能会自动引入更改,或者根本不引入更改,这可能会导致无法下载补丁或修复程序。通过持续部署,代码可能会自动进入生产环境,根本不需要任何人工参与。
除了管道之外,现在程序员还使用 ChatGPT 等工具快速查找新代码,添加代码,检查其是否正常运行,然后提交版本控制。从互联网上剪切和粘贴的代码正在扩大使用范围,但审查和理解这些代码的时间正在减少。
以下是 CI/CD 管道引入安全风险的一些原因:
身份验证较弱。
受损的开源组件。
添加新依赖项带来的操作风险。
依赖项混淆攻击。
错过更新的静态依赖项。
CI/CD 安全测试
过于依赖人工的代码审查不但降低了速度,而且无法发现和减轻0 Day漏洞和潜在风险,手动进行打补丁也会耗费大量的人力。降低风险的一种方法是在 CI/CD 管道内进行自动安全检查。有几种方法可以做到这一点:
开源组件分析。开源组件分析(SCA)工具可以下载安全漏洞和恶意软件的签名,然后检查存储库中的所有代码是否存在问题。这可以包括所有代码,包括自定义源代码、依赖项和库。
容器扫描。 扫描工具可以像 SCA 工具一样遍历整个 Linux 或 Windows 容器。可以对源代码、新传入容器和包含新应用程序的最终容器运行扫描。
静态代码检测:静态代码检测工具(SAST)可以检测源代码中的安全缺陷和安全漏洞,在编码阶段对不安全的代码进行修改。
构件存储库。一些供应商负责扫描、更新和管理云中的依赖项列表。可能包括预先审查的容器映像和代码库,因此可以从受信任的来源下载新库。
CI/CD 安全实践
这些实践可以帮助 DevOps 团队缓解 CI/CD 管道带来的安全风险。
1. 进行威胁建模
威胁建模练习可帮助团队了解应用程序中可能存在哪些威胁。假设恶意行为者能够控制您的系统。他们会怎么做?了解哪些威胁可能导致的问题较多。
2. 记录 CI/CD 管道和组件
从何处下载什么以及使用什么访问权限的问题应该是架构和安全的问题,应该是透明的。集成开发环境安全插件可以将潜在安全问题警告给开发人员,并提供补救建议来帮助记录和评估 CI/CD 管道的组件。
3. 进行专业加固
通过对比OWASP CI/CD 安全漏洞表单检查是否存在于管道中。这种强化还可以包括检查每个工件、运行端口扫描以及关闭任何可能成为潜在攻击面的服务。
4. 为提交代码设置检查和保护措施
静态代码安全检测工具可以执行静态代码分析,在代码进入版本控制对代码安全性进行反馈。在拉取请求之前、代码审查之前、合并到主干之前以及在构建过程运行之前启动自动检查。
5. 快速分析提交的代码
一旦代码提交完成,继续提供代码审查,但要创建策略和指标来快速完成。在这里可以使用容器扫描工具。
6. 检查开源漏洞
实施策略来检查组件是否存在漏洞或检查自动更新,然后定期跟进这些实践。即使使用受信任的外部存储库也要及时跟踪漏洞公告。
7. 持续监控
持续的安全监视工具可以监视生产环境,以发现破解的企图和来自单一来源的流量,并执行网络扫描以确定内部IT安全风险。
参读链接:
https://www.techtarget.com/searchitoperations/tip/9-ways-to-infuse-security-in-your-CI-CD-pipeline