2.3应用程序安全成熟度模型
与SDL评估类似,查看诸如构建安全成熟度模型(Building Security in Maturity Model,BSIMM)或软件保证成熟度模型(Software Assurance Maturity Model,SAMM)等模型,可以非常有效地记录供应商软件项目的成熟度。当然,SDL是其中的一部分,但查看这些模型之一,如OWASP SAMM,也称为早期版本中的OpenSAMM,可能会有所帮助(https://owasp.org/www-project-samm)。
BSIMM也被广泛使用,但由于它是一个专有模型,我们更倾向于研究开源方法。SAMM定义了如图2.1所示的领域。
SAMM定义了五个业务功能,如图2.1所示:治理、设计、实施、验证和运营。在这些业务功能中,每个功能包含三个安全实践。每个安全实践涉及两个相互补充并相互构建的活动流。由于SAMM是一个开放模型,它可以内部用于评估一个组织,也可以由第三方外部使用。值得注意的是,NIST安全软件开发框架(Secure Software Development Framework,SSDF)指导——我们将在第七章“现有和新兴商业指导”中讨论,并且对向美国政府出售软件的供应商是强制要求的——经常使用SAMM,并在SSDF的实践和相关任务中交叉引用。
与所有OWASP项目一样,SAMM是一个社区驱动的项目,旨在可衡量、可执行且多用途。与BSIMM不同,SAMM是规定性的,这意味着它规定了组织可以采取的具体行动和实践,以提高其软件保证。正如其名称所示,SAMM是一个成熟度模型。在其指定的安全实践中,范围从1级到3级,起点为0级。尽管SAMM是一个成熟度模型,但并不要求所有组织在所有实践中都达到最高的成熟度水平。成熟度要求和目标取决于组织的资源、合规要求、资源和任务集。让我们深入了解SAMM中的一些业务功能和相关的安全实践。
治理
第一个业务功能是治理,它专注于与组织管理软件开发活动相关的流程。其实践内容包括战略与指标、政策与合规以及教育与指导。战略与指标方面,涵盖了创建、推广,并随时间进行测量和改进;政策与标准则涉及制定并管理其在整个组织中的实施和遵守。教育与指导分为培训与意识和组织与文化两个部分。培训与意识主要提升各利益相关者对软件安全的认知,而组织与文化则致力于在组织内部推动安全文化的形成。
设计
第二个业务功能是设计,它专注于组织创建和设计软件的流程和活动。安全实践包括威胁评估、安全需求和安全架构。威胁评估侧重于应用风险分析和威胁建模等活动流。通过风险分析,组织确定哪些应用被攻破会构成严重威胁,而威胁建模帮助团队了解正在构建的内容、可能出错的地方以及如何缓解这些风险。安全需求涉及软件构建和保护,以及可能参与组织应用开发的相关供应商组织(如外包开发人员)的要求。安全架构处理的是软件设计中涉及的各种组件和技术,确保架构设计的安全性和技术管理,包括识别和管理应用程序所使用的技术、框架、工具和集成的相关风险。
实施
第三个业务功能是实施,它涉及组织如何构建和部署软件组件,并可能包括缺陷管理。所涉及的安全实践如下:
- 安全构建:使用一致、可重复的构建过程和依赖关系核算
- 安全部署:提高软件部署到生产的安全性
- 缺陷管理:涉及管理已部署软件的安全缺陷
安全构建实践包括构建流程和软件依赖。构建流程确保你在部署时使用可预测、可重复的安全构建流程。软件依赖则关注外部库,确保它们的安全状况符合组织的要求和风险容忍度。
安全部署实践专注于将软件交付到生产环境的最后阶段,并确保在此过程中其完整性和安全性。与该实践相关的方面包括部署流程和秘密管理。部署流程确保组织拥有可重复且一致的部署流程,将软件工件推送到生产环境以及必要的测试环境。秘密管理关注对敏感数据(如凭证、API密钥和其他秘密)的适当处理,防止恶意行为者利用这些数据破坏软件开发中涉及的环境和系统。
最后一个安全实践是缺陷管理,专注于收集、记录和分析软件安全缺陷,以便做出数据驱动的决策。相关方面包括缺陷跟踪和指标,并且进行反馈。这些方面涉及缺陷的收集和后续处理,并通过这些活动推动安全性的改进。
验证
验证业务功能涉及组织在软件开发过程中如何检查和测试工件的流程和活动。与验证相关的安全实践包括架构评估、需求驱动测试和安全测试。架构评估验证软件及其支持架构的安全性和合规性,而需求驱动测试和安全测试则基于用户故事等项目,通过自动化检测和解决安全问题。
架构评估包括验证和缓解两个方面。验证旨在确保架构中安全目标和要求的实现,而缓解则是针对现有架构中已识别的威胁进行处理。这些实践中的测试活动确保组织进行诸如滥用/误用测试等活动,采用模糊测试等方法。模糊测试是一种软件测试方法,通过注入无效或格式错误的输入,揭示软件缺陷或识别可能被滥用以攻击应用程序的功能。安全测试则包括广泛的自动化测试基线和深入的理解,涉及对高风险组件和复杂攻击向量的手动测试,这些是自动化测试无法完成的。
运营
运营业务功能确保应用程序及相关数据在整个生命周期内,包括运行时环境中的机密性、完整性和可用性(confidentiality, integrity, and availability,CIA)。安全实践包括事件管理、环境管理和运营管理。进一步细分,这些实践涵盖了各种领域,如事件检测与响应、配置加固和补丁管理。最后,运营管理确保在数据创建、处理、存储和处理的整个生命周期内进行数据保护,并确保不再主动部署或支持已到生命周期末期的服务和软件。这减少了组织的攻击面,移除了其系统和应用程序中可能存在的漏洞组件。
通过利用SAMM并涵盖各种业务功能、安全实践和活动流,组织可以更好地确保其应用程序安全成熟度,其软件消费者也同样受益。
No Comments