ToB企服应用市场:ToB评测及商务社交产业平台

标题: 安全设计 | 安全设计不得马虎!微软STRIDE威胁建模方法让你事半功倍,快速 [打印本页]

作者: 祗疼妳一个    时间: 2024-7-27 05:15
标题: 安全设计 | 安全设计不得马虎!微软STRIDE威胁建模方法让你事半功倍,快速
STRIDE威胁建模方法最早发表于2006年11月的《MSDN杂志》,作者是微软的工程师Shawn Hernan、Scott Lambert 、Tomasz Ostwald 和 Adam Shostack。那我们为什么要举行威胁建模? 怎样使用数据流图对体系举行威胁建模?怎样减轻威胁?接下来本文展开逐一先容。
  1. 安全设计原则

在先容STRIDE方法前我们需要先相识下安全设计的原则,设计安全软件的一个问题是,不同的群体对安全性的见解不同:

当然,以上考虑在构建安全体系时都很重要。常用的安全设计原则如下:
原则解释开放式设计假设攻击者掌握了来源和规格默认安全体系或软件应默认配置为安全状态,即默认情况下不开启不须要的服务或功能,减少潜在的攻击面最小权限体系中的每个组件或用户只应拥有完成其任务所需的最小权限集合。如许可以减少潜在的安全风险,因为即使攻击者获取了某些权限,其影响范围也会受到限定纵深防御在多个层面上实行安全措施,以确保即使一个安全层被攻破,其他层仍能提供掩护。这包括物理安全、网络安全、应用安全等多个层面透明性和可理解性安全机制应尽可能透明,易于理解和操作,以减少人为错误的可能性经济性安全机制设计尽可能简单短小,从而在排查缺陷、检测漏洞时代码更容易处置惩罚可审计性记载和审计体系运动,以便在发生安全事故时能够追踪和分析。这包括日志记载、监控和报告机制。 安全意味着体系具有秘密性、完备性和可用性的特性(即CIA特性),用户得到了正确的身份验证和授权,并且不能否认的。(PS:CIA加上份验证和授权、不能否认下文简称为CIA变体)下图解释了每个属性:

确保应用具有这些安全属性的一种方法就是使用STRIDE举行威胁建模,STRIDE 是六个主要威胁种别的首字母缩写:

STRIDE代表的六种威胁,每种威胁都违反了 “CIA 变体” 的特定属性,具体如下:

2. 威胁建模

2.1. 什么是威胁建模

威胁建模是一种有助于掩护体系、应用步伐、网络和服务的有效技能。 威胁建模使用以图形情势演示体系工作方式的数据流关系图。 之后,它应用一个框架来帮助你发现和修复安全问题。它可帮助你在开辟生命周期的早期确定潜在的威胁和降低风险策略。
威胁建模方法由微软的安全工程和通信小组开辟。与SDLC的其他部分一样,威胁建模也在不断发展,并将应用于新的环境中。当创建自己的安全代码开辟流程时,这种方法可能会很好地作为基线,实际上很多公司都参照了微软的威胁建模方法制定了自己的基线。
2.2. 为什么要举行威胁建模?

无论你是在构建一个新体系还是更新现有体系,你都需要考虑入侵者怎样攻击它,然后在体系的设计和实行阶段建立适当的防御。
微软内部通过一种名为威胁建模的技能来设计安全体系,即对体系设计或体系结构举行体系检察,以发现和纠正设计级别的安全问题。威胁建模是安全开辟生命周期中不可或缺的一部分。
3. 威胁建模和STRIDE

威胁建模是Microsoft安全开辟生命周期(SDL)的核心元素。这是一种工程技能,可以用来帮助您识别可能影相应用步伐的威胁、攻击、漏洞和对策。我们可以使用威胁建模来塑造应用步伐的设计,满足公司的安全目标,并降低风险。STRIDE方法是执行威胁建模的理论依据。
为了遵循STRIDE,我们要将体系分解为相干组件,分析每个组件对威胁的易感性,并减轻威胁。然后重复这个过程,直到我们对任何剩余的威胁都感到满足。这时我们才可以认为体系是安全的。
   我们无法证实当组件构成一个体系时,对欺骗威胁单独免疫的组件之间的相互作用不易受到欺骗威胁的影响。究竟上,只有当体系被毗连起来以创建更大的体系时,威胁才会经常出现。
  STRIDE威胁建模的流程如下:

3.1. 定义安全需求

需求定义阶段是一个关键步骤,它定义你的应用步伐是什么,以及它发布后可用来做什
么。 在需求阶段,就要考虑在你的应用步伐中构建的安全控制措施,以确保发布并部署安全的应用步伐。
此阶段是考虑基础的安全和隐私问题的最佳时间。 在项目开始时定义可担当的安全和隐
私级别有助于团队:

在编写对应用步伐的要求时,请确保考虑有助于掩护应用步伐和数据安全的安全控制措
施。
3.2. 绘制数据流图(DFD)

数据流图(DFD)通常用于以图形方式表示体系,将体系分解为多个部分,并表现每个部分不易受到相干威胁的影响。
DFD 使用由四个元素构成的标准符号集:

对于威胁建模,我们还添加了扩展元素:信任界限。下图则表现了这些符号。

注:
   正确绘制及使用DFD是正确使用威胁模型的关键。
  3.3. 识别潜在威胁

需使用数据流图查找针对体系的潜在威胁,STRIDE威胁清单如下:
威胁定义问题威胁示例欺骗攻击者假冒某人或某物通信的两边是否都通过了身份验证?通过看似合法的帐户向用户发送一封带有恶意链接和附件的电子邮件,以捕获用户的凭据、数据和设备访问权限篡改攻击者在未经授权的情况下更改数据怎样得知某人无法更改传输中的数据、正在使用的数据或静态数据?通过弱 API 调用处置惩罚修改内存,导致瓦解和泄漏敏感错误消息否认攻击者声称尚未执行任何操作每个操作是否可以绑定到标识?声称没有删除数据库记载信息泄露攻击者看到了不应看到的数据怎样得知某人无法看到传输中的数据、正在使用的数据或静态数据?访问安全控制较弱的未授权文档和文件夹拒绝服务攻击者使你的体系瓦解体系中是否存在资源受限的地区?向网络发送大量哀求权限提拔攻击者未经授权而可访问数据怎样得知某人可以执行此操作?使用输入处置惩罚逻辑或内存中的缺点来提取数据 数据流图中的每个元素(处置惩罚过程、数据存储、数据流和外部交互)都有一组易受威胁的因素,如下表所示:
元素仿冒篡改否认信息泄露拒绝服务权限提拔数据流XXX数据存储XXX处置惩罚过程XXXXXX外部交互XX 3.4. 制定缓解措施

在此阶段,需要决定怎样处置惩罚所有威胁。 每个 STRIDE 威胁都对应到一项或多项安全控制,这些控制措施提供不同的功能和操作类型。
威胁安全控制安全控制示例欺骗身份验证发送和接收使用数字签名举行签名的消息,以验证来源并确保消息完备性篡改完备性验证输入以防止处置惩罚恶意有效负载和错误处置惩罚意生手为否认不能否认性创建和掩护包罗用户操作和时间戳的安全日志信息泄露秘密性应用访问控制列表,以确保合适的用户可以访问适当的数据拒绝服务可用性使用弹性资源管理不断增长或减少的使用量权限提拔授权使用最少的访问量运行服务   可能有可以立即减少或完全消除多个威胁的安全控制。 比方,使用 SSL/TLS 创建安全传输通道,以帮助防止恶意数据修改或泄露。
  在上一阶段(识别潜在威胁)中发现的问题,可以使用以下此中一个办理方案。 它们在不同组织之间存在略微差异:
办理方案形貌减轻通过使用 bug 修复或重新设计来减轻或消除威胁影响和严重性。转移将问题分配给另一个体系或团队。消除去除体系中包罗问题的部分。担当在没有办理方法的情况下担当风险。 此办理方案需要授权风险决策者的答应。 此决定可能基于威胁严重性。 严重威胁可能需要高级领导的答应,而深层防御风险可能需要高级工程师答应。 与你的团队交流以获得战略指导。 3.5. 举行安全验证

验证阶段是威胁建模过程的末了一步,通常发生在部署体系之前。 它涉及到确保满足要求、验证假设以及准备好安全控制。
3.5.1. 验证要求和设置默认值

首先,验证是否满足第一阶段创建的所有要求。
示例:

然后,确保更改云提供商、操作体系和组件的默认配置设置,以满足所有安全要求。
3.5.2. 执行验证

执行验证会涉及运行手动和自动验证。 在微软内部,体系在部署前要执行一个验证流程。 该流程可能包括自动扫描步伐、代码评审和渗透测试。 可以在每次部署之前或隔一定的时间(如每 6 - 12 个月)强制执行该过程。
4. 结论

设计安全的软件可能很困难,但与任何挑战一样,一个好的策略是将问题分解为更容易办理的较小部分。对于高风险运动,将STRIDE模型与威胁建模结合使用就是如许一种方法。微软内部的许多团队中已经使用了这个模型。
在开辟安全软件时,发起将威胁建模作为流程的关键部分,特殊是本文中先容的STRIDE模型。但关键是要找到一种得当你的方法,在设计的早期应用它,记住任何组件都可能失败,并举行须要的研究,以确保你已经考虑到已知的攻击模式。
末了,设计只是构建安全软件的一部分。执行支持、实行、测试、构建和交付以及服务和维护都在体系的终极安全性方面发挥着至关重要的作用。
若大家对微软的SDL安全开辟生命周期感兴趣,可以深入学习如下两篇文档:

5. 参考链接



推荐阅读:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4