软件安全构建成熟度模型演变与分析

简介:

前言

软件安全开发主要是从生命周期的角度,对安全设计原则、安全开发方法、最佳实践和安全专家经验等进行总结,通过采取各种安全活动来保证尽可能得到安全的软件。但是,能否将安全开发的概念整合到企业原有的开发过程中,通常取决于企业规模、资源(时间、人才和预算),以及管理层支持等各种因素。如果方式不当,很可能造成高昂的成本甚至整合失败。

建立软件安全构建成熟度模型能够帮助企业理解安全开发举措的关键要素,根据开发团队的成熟度水平确定各种安全举措的优先级,从而控制上述因素的影响。

本文介绍了BSIMM、SAMM、SDL优化模型、CMMI+SAFE等四款软件安全构建成熟度模型,分析了这些模型近年来的演变及其产生的原因。

软件安全构建成熟度模型概述

该部分介绍各软件安全构建成熟度模型的由来、概念和基本组成。

1、内建安全成熟度模型BSIMM

内建安全成熟度模型(Building Security In Maturity Model,简称BSIMM),是2009年3月正式提出的。BSIMM的核心目的就是对组织所实施的“软件安全举措”进行量化。

软件安全框架(Software Security Framework,以下简称为SSF) 是BSIMM赖以成型的基本结构,如上图所示,它为各种安全活动提供了一个通用的词汇表,来解释"软件安全举措"中的主要要素。

从2013年开始,BSIMM经历了3个版本的变动:2013年10月的BSIMM 5、2015年10月的BSIMM 6和2016年8月的BSIMM 7。在这三个版本的变动中,其基础的SSF框架并没有任何的变动。

2、软件保障成熟度模型SAMM

软件保障成熟度模型(Software Assurance Maturity Model,简称SAMM) 是一个开放式的框架,用于帮助组织制定并实施所面临来自软件安全的特定风险的策略。在2009年3月发布正式版之后,它成为OWASP 的项目之一。

SAMM的框架顶层定义了四种关键业务功能,而每种关键业务功能下又包含了三类安全措施,共计12种安全措施,如上图所示。

自2009年SAMM 1.0发布之后,SAMM共更新过两次,分别是2016年3月的SAMM 1.1和2017年4月的SAMM 1.5。

3、安全开发生命周期SDL优化模型

SDL 优化模型围绕5个功能领域构建,这些领域大致与软件开发生命周期的各个阶段相对应:培训以及政策、组织功能、要求和设计、实施、验证、发布和响应。针对这些领域中的实践和功能,SDL 优化模型还定义了四个成熟度水平——基本、标准、高级和动态。其结构如下图所示。

从SDL优化模型2008年发布以来,它的内容未更新过。而且现在微软的官方网站上也找不到相关材料,只是在“安全自评估”的页面中提到:“使用SDL优化模型能够帮助组织评估产品在开发过程中的安全状态,随后组织可以利用SDL 优化模型为渐进地、经济地创建更安全、可靠的软件提供愿景和实施路线”。

4、CMMI+SAFE

+SAFE模型是由澳大利亚国防部和美国卡内基梅隆大学共同研制开发的,并且针对CMMI 开发模型(CMMI-DEV)增加了两个额外的过程域,涵盖安全管理和安全工程的内容。

+SAFE旨在识别安全关键产品的安全性强项和弱项,并且意图在产品采购过程的早期识别出的安全漏洞。

从2007年3月发布以来,+SAFE的内容也未更新过。

软件安全构建成熟度模型的演变

本节,我们对近年来模型的演变情况进行分析,因为只有BSIMM和SAMM存在内容的更新,所以主要聚焦在这两个模型上。

1、BSIMM的演变

(1)模型演变

BSIMM模型基础框架SSF近年来并没有变化,而只是对各种安全活动的变更。具体情况如下表:

其中,紫色框表示该活动为该版本BSIMM新增加内容;绿色框表示该活动的成熟度级别进行了上调,即考虑的优先级有较明显的降低;橙色框表示该活动的成熟度级别进行了下调,即考虑的优先级有较明显提升。

安全活动增加

从上表中可以看到,在BSIMM 5和BSIMM 7中分别新增了一项安全活动,为“运营漏洞奖励计划”和“使用应用程序容器”。“运营漏洞奖励计划”是为了借助更多的外部技术力量来保障软件安全,而“使用应用程序容器”则明显是顺应了目前大量使用Docker等容器进行开发的趋势。

安全活动级别调整

另外,在版本演变的过程中,对部分安全活动的成熟度级别进行了调整。在3次版本更新的所有13项变化中,只有3项的成熟度级别进行了下调,也就是说这3项活动的应用趋势有较明显的增加,分别是:“使用自动化工具检测自定义规则”、“将安全测试包括在QA自动化中”和“执行为应用程序API定制的模糊测试”。

一方面,这三项活动分别属于“代码审计”和“安全测试”这两项安全实践,且都属于“SSDL接触点”这个领域;另一方面,前两项都与自动化相关,可见安全测试的自动化趋势愈加明显。安全测试自动化的需求应主要来自于DevOps;而对应用API进行模糊测试的需求可能来源于大量Web API的使用。

(2)数据演变

由于BSIMM是一种观察模型,所以BSIMM中也包含了观察到的各种数据。而这些数据的变化,也揭示了一些安全开发的趋势。

加入BSIMM社区(参与BSIMM评估)厂商的详细分布数据如下表所示:

从数据中可以看到,越来越多的垂直行业开始参与到BSIMM的评估中,从最开始的金融服务、软件开发,到医疗和物联网,再到云厂商和保险厂商。

加入BSIMM社区的安全人员和开发人员对比的详细数据如下表所示:

从上表中可以看出,安全人员与开发人员的比例呈现逐步上升的趋势(从BSIMM 4到BSIMM 5的数据下降,是因为BSIMM 5引入了数据新鲜度的概念,数据的计算方式有所变化)。

2、SAMM演变

与BSIMM类似,SAMM的整体框架(业务功能、安全实践)并没有变化。但是在形式和内容上,进行了大量的丰富和完善。

SAMM 1.1的改进

如上图所示,在SAMM 1.1中,原有的SAMM 1.0模型被划分成了两部分:操作指南和核心模型。并新增了快速入门指南、工具箱、OWASP资源和SAMM基准。

SAMM 1.5的改进

SAMM 1.5通过细化评分模型提升了评估的粒度,并在成熟度基准的评估中允许部分评分。现在,组织将获得在安全实践中完成的所有相关工作的评分,而不是将分数保持在最高的成熟度水平。

同时,SAMM 1.5通过工作表和指南中的典型案例,帮助组织在理解自身安全状况定位的同时,也知道类似情况下哪些工作对于别人是有效的。

从两次SAMM的演变情况中,可以看出SAMM对于评估的可操作性和实用性进行了较大的改进。不难看出,在企业对软件安全构建成熟度模型一无所知的情况下,如果想对开发安全状况进行自评估、了解下一步的改进方向,那么SAMM无疑是成本最小、最便捷的方式。

分析及展望

通过上述分析可以得出以下结论:

软件安全成熟度模型,仍然以大量安全实践和统计数据为基础。本文中分析的软件安全成熟度模型,近年来并没有发生大的变动。自2013年来,这四个模型的基础框架都未发生变化,仍然是以安全实践和安全活动为主,并未引入新的理论依据。

安全构建成熟度模型会根据软件开发技术的发展而演变。BSIMM新增的安全活动“使用应用程序容器”,以及对“使用自动化工具检测自定义规则”、“将安全测试包括在QA自动化中”和“执行为应用程序API而定制的模糊测试”的级别调整,都揭示了容器、DevOps、Web API等对成熟度模型的影响。

安全测试的工具化、自动化,是未来的发展趋势。为了顺应现代软件开发部署的快节奏,软件安全测试的工具化、自动化将势不可挡。例如SAMM的工具化、实用化演变,SDL威胁建模工具、静态分析工具、二进制验证工具的持续更新,BSIMM中“使用自动化工具检测自定义规则”、“将安全测试包括在QA自动化中”这种自动化安全活动的兴起,都证实了这一点。

软件安全将受到越来越多的关注与重视。从BSIMM的数据演变中可以发现,无论是加入软件评估的企业数目,还是各企业内专业从事软件安全的人员比例,都呈现逐步上升的趋势。

对于软件开发安全的未来趋势,我们认为:随着DevOps、微服务等软件开发技术的发展,传统软件安全的形态不断发生着演变。很多测试、评估的技术路线都在持续地演进,但是自动化、高速、与传统开发流程进行融合的趋势将愈发明显。工具化、自动化的安全测试将会成为各家公司保障软件安全的基础举措,而安全从业人员能够将更多精力投入到过程的改进与管理中。根据目前各软件安全构建成熟度模型的情况,我们也给出如下建议:

对于依托互联网、云服务等技术演变迅速的高科技公司,应尽可能避免使用SDL优化模型、CMMI+SAFE模型,因为其内容已经较长时间没有更新,可能有些细节已经无法与现阶段的开发过程或技术相匹配;

对于资源相对充足、安全关键的大型机构,可以采用BSIMM模型来指导安全开发体系的建设,同时引入专业的安全开发咨询服务,来尽可能保证企业始终处于较高的安全水平;

对于资源有限的中小型公司或创业公司,可以考虑引入SAMM模型,从而在控制成本的同时,尽快提升整体的软件安全水平。


本文作者:章磊@360代码卫士

来源:51CTO

相关文章
|
机器学习/深度学习 编解码 区块链
毕设选题应当注意什么-如何选题-附相关解决案例资料
毕设选题应当注意什么-如何选题-附相关解决案例资料
|
前端开发
如何利用dnslog探测目标主机杀软
如何利用dnslog探测目标主机杀软
429 0
|
安全 物联网 传感器
带你读《工业物联网安全》之一:一个前所未有的机会
本书为读者提供了针对IIoT安全各个方面的综合理解,以及用来构建部署安全IIoT解决方案的实践技术。书中介绍IIoT安全的基本原则、威胁模型、参考架构,以及现实生活中的实例分析学习,涵盖了用来设计基于风险安全控制方案的各种实用工具,并且深入讨论了多层防御相关技术,包括IAM、终端安全、互联技术以及基于边界和云环境的应用。读者能够从本书中获得保护IIoT生命周期流程、标准化、治理与评估新兴技术适用性方面的实用经验,从而实现成规模、可靠且具有社会效益的互联系统。
|
安全 物联网 物联网安全
带你读《工业物联网安全》之二:工业物联网数据流和安全架构
本书为读者提供了针对IIoT安全各个方面的综合理解,以及用来构建部署安全IIoT解决方案的实践技术。书中介绍IIoT安全的基本原则、威胁模型、参考架构,以及现实生活中的实例分析学习,涵盖了用来设计基于风险安全控制方案的各种实用工具,并且深入讨论了多层防御相关技术,包括IAM、终端安全、互联技术以及基于边界和云环境的应用。读者能够从本书中获得保护IIoT生命周期流程、标准化、治理与评估新兴技术适用性方面的实用经验,从而实现成规模、可靠且具有社会效益的互联系统。
|
9月前
|
监控 安全 Cloud Native
企业网络架构安全持续增强框架
企业网络架构安全评估与防护体系构建需采用分层防御、动态适应、主动治理的方法。通过系统化的实施框架,涵盖分层安全架构(核心、基础、边界、终端、治理层)和动态安全能力集成(持续监控、自动化响应、自适应防护)。关键步骤包括系统性风险评估、零信任网络重构、纵深防御技术选型及云原生安全集成。最终形成韧性安全架构,实现从被动防御到主动免疫的转变,确保安全投入与业务创新的平衡。
|
12月前
|
资源调度 数据可视化 项目管理
看板视图如何提升团队效率?
看板视图源自丰田生产系统的管理工具,通过可视化手段展示任务、工作流和项目进度,以卡片形式表示任务,在不同列间移动反映工作进展。它能提高团队协作效率、优化工作流、减少瓶颈,适用于项目管理和软件开发等领域。
|
12月前
|
机器学习/深度学习 文字识别 自然语言处理
医疗行业化验单智能识别技术探讨:OCR与表格识别的应用
本文探讨了OCR与表格识别技术在医疗化验单处理中的应用,通过自动化数据提取和录入,显著提高了效率和准确性,降低了人工劳动强度和错误率。技术实现包括图像预处理、文字识别和表格解析等核心算法的优化,支持与医院信息管理系统集成,未来将向跨模态数据融合、多语言适配及数据安全方向发展。
1187 9
|
安全 物联网 网络安全
智能设备的安全隐患:物联网(IoT)安全指南
智能设备的安全隐患:物联网(IoT)安全指南
1148 12
|
算法 搜索推荐 Java
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
251 0
|
存储 安全 物联网
探索未来网络:物联网安全的挑战与对策
本文深入探讨了物联网(IoT)技术的基本概念、发展现状以及面临的主要安全挑战,并提出了相应的解决策略。通过对当前物联网设备的安全漏洞和攻击手段的分析,文章强调了加强设备认证、数据加密和隐私保护等措施的重要性。同时,呼吁业界共同努力,制定统一的安全标准和规范,以促进物联网技术的健康发展。

热门文章

最新文章