SAMM(Software Assurance Maturity Model)旨在帮助组织建立、改进和评估其软件安全实践。SAMM提供了一个结构化的方法,将不同的软件安全实践分为几个阶段,并根据每个阶段的成熟度指标来进行评估。
SAMM 是一个规范性模型,是一个易于使用、完全定义和可测量的开放框架。即使对于非安全人员,解决方案详细信息也很容易遵循。它可以帮助组织分析其当前的软件安全实践、 在定义的迭代中构建安全程序、显示安全实践的改进状况、定义和衡量与安全相关的活动。
SAMM 的定义具有灵活性,因此使用任何开发风格的商业、中型和大型组织都可以自定 义和采用它。它提供了一种了解组织在软件保障建设过程中当前所处位置、及进一步发展进入下一成熟度等级的建议方式。
SAMM 并不坚持要求所有组织在每个类别中实现最大成熟度级别。每个组织都可以确定每个安全实践的目标成熟度等级,以为每个特定需求最匹配和最适用的模板。
每种业务功能是一组软件开发过程中具体细节的相关措施;就是任何组织的软件开发团队要在某种程度上必须运用到的每一个业务功能。
每个安全实践都是一个为业务功能建立保障而与安全相关的领域。因此,总体来说,有15个独立的安全实践活动映射到五组业务功能,以改善软件开发中相对应的业务功能。
安全实践中的每个等级是由一个连续、且复杂的目标定义的;且每个等级的成功指标比上一个等级更加苛刻。另外,每类安全实践都能通过相关活动的优化单独改进。 对于每个安全实践,SAMM定义了两个活动流。每个活动流都有一个目标要达到,而且这个目标可以在提高成熟度水平时达到。活动流在不同成熟度级别上关联和链接至不同成熟度等级实践中的活动。
治理阶段 - 战略与指标
战略与指标实践的目标是建立一个有效的计划,以在组织内实现软件安全目标。
(参考活动流A与B,活动流A可以看做活动流B的基层,但在SAMM中活动流A与B都会作为评分标准的依据)
治理阶段 - 策略与合规
策略与合规的实践重点是理解和满足外部法律和规范要求,同时推动内部安全标准以确保符合组织业务目的的合规。
治理阶段 - 教育与指导
教育与指导的实践重点是为软件生命周期中的相关人员提供知识和资源,以设计、开发和部署安全的软件。通过对信息访问的优化,项目团队可以主动识别和减轻适用于其组织的特定安全风险。
设计阶段 - 威胁评估
威胁评估实践的重点是基于正在开发的软件功能和运行时的环境特征,识别和理解项目级风险。通过分析每个项目威胁和潜在攻击的详细信息,对安全措施的优先级设置进行更好的决策,从而使整个组织更有效地运作。
设计阶段 - 安全需求
安全需求实践聚焦于对安全软件而言重要的安全需求。第一种类,处理典型的与软件相关需求,以指定目标和期望,从而保护应用软件核心的服务和数据。第二种类,涉及与供应商组织有关的需求,这些需求属于应用软件开发上下文的一部分,尤其是对于外包开发而言。
设计阶段 - 安全架构
安全架构实践聚焦于与在软件架构设计期间要处理的组件和技术相关的安全。安全架构设计着眼于有关解决方案构成基础的组件选择和组成,并着重于其安全性。
开发阶段 - 安全构建
安全构建实践强调以标准化、可重复的方式构建软件以及使用安全组件(包括第三方 软件依赖项)进行构建的重要性。
开发阶段 - 安全部署
交付安全软件的最后阶段之一是确保在部署过程中不损害已开发应用软件的安全性和完整性。
开发阶段 - 缺陷管理
缺陷管理实践聚焦于收集、记录和分析软件安全缺陷,并用信息丰富它们,以驱动基于测量的决策。
验证阶段 - 架构评估
架构评估实践的可确保应用软件和基础架构充分满足所有相关的安全性和合规要求,并充分缓解已识别的安全威胁。
验证阶段 - 需求驱动的测试
需求驱动测试实践的目标是确保已实施的安全控制按预期运行,并满足项目规定的安全需求。它通过逐步构建一组安全测试和回归案例并定期执行来实现
验证阶段 - 安全测试
安全测试实践利用了以下事实:尽管自动化安全测试快速且可以很好地扩展到众多应用软件,但是有关应用软件及其业务逻辑深入知识的深度测试通常只能通过较慢的人工专家安全测试来执行。因此,每个活动流的核心都是一种方法。
运营阶段 - 事件管理
将安全事件定义为至少一项资产的安全目标受到破坏或迫在眉睫的威胁,无论是由于恶意行为还是过失行为。安全事件的示例可能包括:对云应用软件的成功拒绝服务(DoS)攻击、应用软件用户通过滥用安全漏洞访问另一用户的私有数据、攻击者修改应用软件源代码。事件管理实践聚焦于在组织中处理这些事件。
运营阶段 - 环境管理
默认情况下,任何应用软件堆栈中的大多数技术都不安全。这通常是有意的,以增强向后兼容性或易于安装。因此,要确保组织技术堆栈的安全运行,就需要对所有组件始终应用安全基线配置。
运营阶段 - 运营管理
运营管理实践聚焦于在整个运营支持功能中确保安全性得到维护的活动。尽管这些功能不是由应用软件直接执行的,但应用软件及其数据的整体安全取决于它们的适当性能。
SAMM 是一个规范性模型,是一个易于使用、完全定义和可测量的开放框架。即使对于非安全人员,解决方案详细信息也很容易遵循。
SAMM为所有类型的组织提供一种有效的、可衡量的方式来分析和改进其软件安全状况。
软件安全构建成熟度模型 (BSIMM) 是一项针对当前软件安全方案或计划开展的研究。BSIMM 量化不同行业、规模和地域的众多组织的应用安全 (appsec) 实践,并识别各个组织独特的差异。
作为一套随时间的不断发展演进的数据驱动的描述性模型,BSIMM的唯一目标就是观察和报告。其通过对大量企业进行评估得出的统计数据,进行分类归纳,形成的软件安全评估模型。
BSIMM的最重要的用途是作为一个标尺来确定企业目前采用的方法相对于其他企业处于何种位置。企业只需要梳理已经开展了哪些活动,在软件安全框架中找到这些活动,然后再构建自己的记分卡并将其与BSIMM记分卡进行比较,就可以发现自身的不足之处。
BSIMM 中被有组织的分为 121 项活动。揽括在 4 大领域 12 项实践中
战略和指标
“战略和指标”实践中包括规划和分配角色与职责、确定软件安全目标、确定预算,以及确定评估指标和软件发布条件。
合规性和政策
制定企业的软件安全策略;根据该策略开展审核工作。
培训
培训在软件安全方面一直发挥着至关重要的作用,因为软件开发人员和架构师在起步时往往没有掌握太多的安全知识。
攻击模型
攻击模型采集各种用来像攻击者那样思考问题的信息:威胁建模,滥用案例开发和细化,数据分类,以及与特定技术相关的攻击模式等。
安全性功能和设计
“安全功能和设计”实践主要负责开展以下工作:为主要安全控制手段创建可用的安全模式(满足“标准和要求”实践中规定的标准),为这些控制手段构建中间件框架,以及创建和发布前瞻性安全指南。
标准与要求
“标准和要求”实践涉及到如下工作:让企业提出明确的安全要求;决定推荐哪些COTS;制定主要的安全控制标准(例如,认证、输入验证,等等);为使用中的技术制定安全标准;以及成立标准审查委员会。
架构分析
架构分析包括以简明的图表来显示软件架构、应用风险和威胁列表、采用审查流程(例如架构风险分析),以及为企业制定评估和修复计划。
代码审查
"代码审查”实践中包括使用代码审查工具、制定量身打造的规则、针对不同角色使用的工具制作自定义的配置文件、手动分析、跟踪/评估结果。
安全性测试
“安全测试”实践涉及到发布之前的测试,其中包括将安全性整合到标准的质量保证(QA)流程中。该实践包括:把黑盒安全工具(包括模糊测试)用作QA 中的冒烟测试,风险驱动的白盒测试,攻击模型的应用,代码覆盖率分析等等。安全测试的重点对象是构建过程中的漏洞。
渗透测试
“渗透测试”测试实践涉及标准的“从外至内”(outside →in)由安全专家开展的一类测试。渗透测试侧重于最终配置中的漏洞,并针对缺陷的管理和缓解提供直接反馈。
软件环境
“软件环境”实践涉及到操作系统和平台打补丁(包括云端)、WAF、安装和配置文档、容器化、编排、应用程序监控、变更管理以及代码签名。
配置管理和安全漏洞管理
"配置管理和漏洞管理”实践涉及到应用程序打补丁和更新、版本控制、缺陷跟踪和修复、应急事件处理等活动。
BSIMM 是一套随时间的不断发展演进的数据驱动的模型。随着本项目的演进,不断根据所观察到的数据来添加、删除和调整各类活动的级别。
BSIMM主要是用于观察企业开发的安全活动与行业进行一个比较,给企业开发组织反馈一份的分析报告
SAMM | BSIMM | |
---|---|---|
模型结构 | 5个域,3个实践,3个成熟度,2个活动流 | 4个域、12个子域、122项活动 |
打分机制 | 对每个活动进行单独评价,最后进行汇总打分 | 根据观察活动行为存在性进行的梯度打分制 |
评分维度 | 每个实践活动在不同维度下的指标执行情况定义为4个梯度,分别是0,0.25,0.5,1。每个实践活动有两个活动流,三个成熟度,单项活动总分为3,单项活动下每个活动流总分为1.5。 | BSIMM的评分指标为观察到企业组织有该实践下的最高级别的活动得分。 |
发展由来 | 原始模型(v1.0)由Pravir Chandra编写,经过一段时间的深入讨论,并在欧洲和美国峰会期间听取了从业者和OWASP社区的意见,更新迭代为了V2.0版本。 | 经过多年的评估经验,不断根据观察到的数据进行添加、删除和调整各类活动形成。 |
模型作用 | 为所有类型的组织提供一种有效的、可衡量的方式来分析和改进其软件安全状况。(改善为主,评估为辅) | 用于观察当前时间节点企业开发组织的安全活动和行业中的比较,给企业开发组织反馈一份高度概括的分析报告。(评估为主,改善需客户自定方案) |
SAMM为所有类型的组织提供一种有效的、可衡量的方式来分析和改进其软件安全状况。通过自评估模型,来提升企业如何设计、开发和部署安全软件的认识和教育。
BSIMM主要是作为一个标尺来确定企业目前采用的软件安全能力水平相对于其他企业处于何种位置。
BSIMM模型是一套观察报告类型的描述式模型,旨在判断描述的实践活动存在与否形成评估报告,以标尺的作用来衡量企业开发组织目前安全活动水平相对于其他企业处于何种位置。并没有为组织提供落地性的指导建议,仅作为组织用以改善自身软件安全能力的参考。
SAMM 是一个规范性模型。旨在帮助组织分析其当前的软件安全实践、 在定义的迭代中构建安全程序、显示安全实践的改进状况、定义和衡量与安全相关的活动
无论是BSIMM,SAMM也罢,二者都为评估模型,是用以辅助安全治理的工具,而具体实施流程的关键还是在于人。需要对不同的实际情况而做出不同的改变。
SAMM模型:OWASPSAMM2.0.pdf