查看原文
其他

像攻击者一样思考:论威胁分析中的建模模型

Reese vivo千镜 2022-11-05

点击上方蓝字关注我们噢~

一款好的产品不仅要有优秀的架构,还要有安全的功能设计,以及开发中安全的编码方式,但是这些要如何保障呢?


要知道:安全不只是在安全漏洞出现之后的补救,我们更需要的是在最初就做好计划,将安全意识前移,做到防范于未然。


一句老话说的好,有需求就有市场   
 


为了评估产品架构和功能设计中的安全风险,我们需要站在攻击者的角度去识别风险点,针对相应的安全问题制定消减措施,保障产品的安全性。


此时威胁建模应运而生



        威胁建模是什么?      









微软在2004年定义了威胁建模这项能力,下面我们来看看它的前世今生:

如上图我们可以知道,微软在2004年第一次感知到了安全工作前移对于一个产品的重要性,所以着手开始建立威胁建模的方法论。

为了构建威胁建模能力,具体的制定了一个流程,两个模型,一个工具,多角色以及多评价指标,今天我们先着重了解下其中的方法论落地核心---模型部分。


      STRIDE模型:威胁识别模型     









STRIDE由微软开发,是现在最为常用的一种威胁模型


现在的项目中如果需要在流程节点中进行威胁建模,一般都会选择STRIDE模型进行威胁识别。


这个模型良好的定义了威胁从发现到闭环以及闭环后的处理这一套完整的流程,首先我们先来了解一下六个维度和四种元素。



    STRIDE模型的六个维度(6威胁)   









基础的信息安全三要素:机密性,完整性,可用性。

01

机密性:要求保护数据内容不被泄漏,加密是实现机密性要求的常用手段。

02

完整性:要求保护的数据内容是完整的、没有被篡改的。常见的保证一致性的技术手段是数字签名。

03

可用性:要求保护的资源是“随需而得”。

信息安全的三个属性则是认证,鉴权,审计


从信息安全的基础元素出发,分别进行评估项匹配就形成了STRIDE模型的六个考察维度


Ps:后续因为对隐私安全的重视程度变大,另外还加入了A(Advanced)代表隐私安全,后成为ASTRIDE。


      

    STRIDE模型建模的主要流程概述    








‍此模型使用的主要流程为:



分解业务场景,绘制数据流图


上图是一个典型的DFD案例(此图片是使用微软免费发布的威胁建模软件绘制:Microsoft Threat Modeling Tool),它主要由四种元素组成,分别是:长方形,圆形,双横线,带指向的箭头。


让我们对这些图形和连接线进行拆解,一个一个来认识一下吧~

长方形(外部实体):与系统进行交互但不在应用程序控制下的任何要素,例如用户。


圆形(进程):表示运算处理数据的单元也叫处理过程,包括:web服务、win32服务,linux守护进程或者也可以是芯片、服务器等。

双横线(数据存储)能存储数据的任何位置,如数据库、配置文件、日志文件、注册表等。


带指向的箭头(数据流):数据在不同组件间里的流动,注意区分方向。


红色虚线(信任边界---在模型中不做分析):如果数据流在不同的信任域内流动,则需要区分信任边界,左边的内容为可信任,右边的内容为不可信任。


了解STRIDE的分析策略


就像我们使用一个函数或者公式之前需要了解它独特的适用条件一样,我们在运用STRIDE进行建模时也需要提前熟悉它的分析策略,每种元素都会按照其本身的属性指定它们将会存在的风险,下面我们来具体看看每个元素需依照的准则吧。


Ps:√表示将会面临此种威胁,表示可以面临也可以不面临。

了解了模型的评估标准以及必须遵守的策略之后,我们就可以准备开始对我们的应用策划进行威胁建模啦~


建立缓解措施


此步骤主要是为了帮助我们对在模型中发现的问题进行实时消减方案的解读,缓解措施的录入首先需要输出一个威胁列表,威胁列表中的每个威胁包含这几项,此处给出一个样例模板(包含:组件、威胁描述、威胁类别、攻击方法、消减方案、危险评级,具体表格格式)例如:



威胁评级


进行到此刻,结合MicrosoftTread Modeling Tool工具,就可以对你在第一步绘制的DFD进行解读了,将模型中检测出来的风险点和你制定的缓解措施结合起来分析,将会得出比较详细的威胁分析报告。


你的DFD绘制的越细致,延伸到的相关对象越多,那么对于威胁的识别则越精准同时,你对缓解措施描述越完整准确,那么在形成的威胁分析报告中则会体现更多的内容,包括但不仅限于处理问题的优先级,修复模板,修复通用方案等,这些信息可以帮助你决定处理风险项的先后顺序,对于影响较小的问题可以选择忽略。


验证并落实缓解措施


后续就可以拉上你的小伙伴一起开会,对前期录入的模型所形成的报告进行讨论啦,修改检出风险的设计流程或者补充未在模型中体现的部分,这样在产品前期就可以规避这些由模型检查出的安全问题了,同时也减少了后期安全问题排查的工作量,至此一套威胁评估方案就基本结束了。


谈到这里,大家是不是有很多问号???我们上面示例表中的风险程度高低到底是通过什么评判标准得到的呢?下面我们就一起来看看能够确定问题修复优先级的重要模型---DREAD。

      

   

    DREAD模型—威胁评价模型    









其实业界有很多评估模型,比如CVSS、OWASP、DREAD,其中最常用的一般是CVSS打分系统,但是DREAD是作为微软的亲儿子经常和STRIDE一起出现,所以我们本次就先谈谈它吧!


就像CVSS有三个度量组:[基础-base],[时间-Temporal],[环境-Environmental],共14个评估标准,DREAD主要是分为5个评判指标:



下面将详细的叙述一下选择每一个指标的原因及指标的具体含义:


危害性(Damage)

这里模型是根据系统受危害程度,泄露信息的数据敏感性,资损,系统受危害程度等方面来衡量危害。

1)数据敏感性。各公司一般会数据根据敏感程度分等级,可以是对外公开,内部公开,秘密数据,机密数据等

2)资金的损失,可以按照实际的金额的某些区域进行划分,也可以按照某个比例计算

3)对系统的破坏包括但不限于,上面说的数据泄露、资金损失外,能够完全获得权限、执行管理员操作、非法上传更为严重。


复现难度(Reproducibility)

重点在于这个漏洞是不是容易复现成功,有难度和概率问题


利用难度(Exploitability)

使用什么才能实现这个攻击,这里关注的重点是具体使用的工具。


受影响用户(Affected Users)

实际应用的模型里,添加了业务的重要程度,以及多少算“多”的概念。

1)业务的等级,同现在大多数公司对于业务的概念,氛围核心、一般和边缘,这个由公司各业务主导业务定级,安全团队进行参考和微调

2)数量的概念,若想更好的界定各权值范围内的具体数量,可参考新颁布的网络安全法来进行商议。


发现难度(Discoverability)

此时默认此风险会被发现,按照是否能更轻松的被发现简易的分为4个等级。


关于每一个评价指标都有相应的权值可参考,高中低的程度也有比较确切的描述:



最后的等级通过计算公式进行计算:

DREAD模型的计算方式:等级=危害性+复现难度+利用难度+受影响用户+发现难度


通过这个公式,就可以计算出这个问题的风险等级啦,虽然相对与CVSS打分要稍微简单一点,但也可以比较可观的评价一个漏洞的风险级了。


以上就是关于微软对于其威胁建模的两个模型的定义,这两个模型和其研发的威胁建模工具Microsoft Threat Modeling Tool强相关, 感兴趣的同学可以上网找找TMT的使用步骤了解了解,使用方法超简单的,小编在这里就不多赘述了哈~


各位小伙伴们~下次再见啦~


此处参考:

https://www.anquanke.com/post/id/161442

https://www.secrss.com/articles/3298

https://mp.weixin.qq.com/s/-gHMhj1Qdl1N5rCne61m4Q



更多精彩阅读

“家贼难防”系列-密钥硬编码
你需要知道的SELinux入门学习
如何通过配置文件实现HTTPS证书固定




好文!在看吗?点一下鸭!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存