DevSecOps 意味着在 DevOps 交付管道把安全性包含进去。该模型尽可能早地将安全原则集成到软件开发生命周期的所有适用阶段中。下图展示了安全方面在 DevOps 后期阶段的集成,但 DevSecOps 安全性集成到生命周期的所有阶段。

IT 安全领导者应该在他们的组织中采用有效的漏洞管理实践来实施适当的 DevSecOps。

漏洞管理

漏洞管理是一种帮助组织识别、评估、确定优先级并修复系统中漏洞的做法。最终,漏洞管理的目标是通过使用修补、加固和配置管理等技术来降低漏洞带来的风险。这有助于确保安全性,同时限制恶意用户可能利用的风险。IT 安全的主要职责是防范漏洞。我们都知道,安全漏洞可能代价高昂;根据 Ponemon 研究所和 IBM 进行的联合研究,每次数据泄露的平均成本为 435 万美元,而 85% 的组织在 2022 年至少有一次数据泄漏。根据《2022 年数据泄露报告》,以下是近年来十大数据泄露和十大数据泄漏属性。

漏洞 vs.利用 vs.威胁

理解漏洞、威胁和利用之间的定义和关系非常重要。

漏洞(vulnerability)是代码或软件中的缺陷,为攻击者提供了未经授权访问系统的途径。在高层次上,漏洞可以分为两种类型:

1.技术漏洞:与代码相关的 bug 或错误、配置不当的防火墙、未打补丁或过时的操作系统或基础设施等。

2.人的漏洞:人们有意或无意地犯错误,并通过利用人类心理获得数据、系统或包的访问权限。

漏洞利用(exploit)是黑客利用漏洞的方法。利用漏洞攻击是指一些恶意代码,用来攻击系统的漏洞。它可能会窃取信息,减慢/阻止系统运行,或者成为服务器上的寄生虫,在未来制造问题。例如,Log4Shell 漏洞是 Log4j 程序允许用户根据本应打印在日志中的值执行任意代码的一个弱点。随后实施了许多不同的漏洞利用,试图以不同的方式使用此漏洞——其中一些漏洞利用允许您插入自己的代码。相比之下,其他人暴露了软件的私有环境变量。

威胁(threat)是指一个或多个漏洞利用漏洞发起攻击的实际事件。

漏洞管理和 DevSecOps 组合

为了在 DevSecOps 项目中有一个良好的开端,在应用程序开发的早期——最好是在开始编写代码之前——就集成安全目标。安全可以集成,并且可以在项目的初始阶段开始有效的威胁建模。当开发人员在代码进入管道之前检查代码以识别任何问题时,静态分析筛选器和策略引擎可以随时运行。这有助于开发人员立即了解安全问题,使他们能够处理安全问题的所有权。一旦在静态应用程序中检查了代码,就可以使用 SAST(static analysis security testing,静态分析安全测试)工具执行安全测试,以识别漏洞并执行软件组合分析。应该将 SAST 工具集成到提交后的过程中,以确保主动扫描引入的新代码以查找漏洞。因此,在软件开发生命周期的早期集成 SAST 工具可以降低应用程序漏洞风险。

在代码构建之后,就可以开始进行安全集成测试。在一个独立的容器沙盒中运行代码可以自动测试网络调用、输入验证和授权等内容。这些测试是 DAST 工具(dynamic application security testing,动态应用程序安全测试)的一部分。这些测试会生成即时反馈,从而能够快速迭代以测试问题。如果发生意外的网络调用或未经净化的输入等情况,测试将失败,管道将以通知相关团队的形式生成可操作的反馈。

访问管理是需要与 DevSecOps 集成的下一个重要原则。我们需要确保应用程序编写相关的安全性和性能指标。需要执行角色工程,定义与每个角色相关的角色和访问权限——需要定义标准的天生权利角色。

 

安全扫描和漏洞管理甚至在产品/项目投入生产后仍在继续。我们需要确保通过适当的配置管理将自动补丁应用到产品的最新版本。确保产品运行的是软件及其代码的最新稳定版本。


↙↙↙阅读原文可查看相关链接,并与作者交流