SDL介绍----三、STRIDE威胁建模方法

本文阅读 8 分钟

威胁建模是一个非常有用的工具,它的核心是「像攻击者一样思考」。威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展,强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击。威胁建模的作用更偏向于确保产品架构、功能设计的安全,无法保证编码的安全,但是输出的威胁建模报告中包含了全面的安全需求,这些安全需求不仅包括大的方案设计,如要认证、鉴权、审计,也可以包括安全细节的实现,比如具体的认证方式、密码使用哪种安全算法存储,使用什么方法生成安全随机数等。所以,威胁建模虽不能保证编码的安全,但可以指导研发人员编写出安全的代码,同时也可以辅助渗透测试人员开展安全测试。 简单的来说,威胁建模就是通过结构化的方法,系统的识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。

STRIDE威胁建模是由微软提出的一种威胁建模方法,该方法将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和 Elevation of Privilege(权限提升)。这六种威胁的首字母缩写即是STRIDE,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题。此外,STRIDE威胁建模方法有着详细的流程和方法。

2.1、STRIDE的六类威胁

1、 Spooling(仿冒)
2、Tampering(篡改)
3、Repudiation(抵赖)
4、InformationDisclosure(信息泄露)
5、Dos(拒绝服务) 
6、Elevation of privilege (权限提升)
STRIDE威胁建模的一般流程如下:
1、绘制数据流图
2、识别威胁
3、提出缓解措施
4、安全验证

STRIDE威胁建模流程: img

3.1、数据流图

数据流图是由以下4个元素组成:
①外部实体:
系统控制范围之外的用户、软件系统或者设备。作为一个系统或产品的输入或输出。在数据流图中用矩形表示外部实体。
②处理过程
表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示。
③数据存储
存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示。
④数据流
外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示。

数据流图及元素类型: img

3.2、识别威胁

STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖(R)威胁。具体可以对照如下表格进行威胁识别。 数据流图元素对应的不同威胁:

3.3、提出缓解措施

根据不同的数据流图元素及威胁,相应的缓解措施也不相同。如本文示例数据流图中外部实体用户的仿冒威胁,其缓解措施简单来说就是对用户身份进行认证。对于一个Web应用来说,缓解仿冒威胁不仅需要较强的认证机制,还需要防止恶意攻击者用暴力破解、口令猜测等方法绕过认证从而造成仿冒用户的威胁。如果笔者来提出该用户仿冒威胁的缓解措施的话。

详细措施如下:
对用户访问进行帐号密码、证书等身份认证;
用户帐号密码认证过程中,如果出现三次密码错误,则增加验证码机制。输入验证码且正确再进行身份认证;
当用户认证5次后仍然验证失败,则在30分钟内禁止该帐号登录;
用户密码必须包含数字、字母及特殊字符,且长度在8位以上,如果业务安全需要则增加密码过期机制,每隔6个月提醒用户修改密码;

在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁,不同的应用场景。其缓解措施也要随之而改变以提高应用安全的同时也能给用户带来较好的交互体验。

微软对于常用的威胁给出了其常用的标准缓解措施,并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块。可以方便同类应用直接使用。

3.4、安全验证

在威胁建模完成后,需要对整个过程进行回顾,不仅要确认缓解措施是否能够真正缓解潜在威胁,同时验证数据流图是否符合设计,代码实现是否符合预期设计,所有的威胁是否都有相应的缓解措施。最后将威胁建模报告留存档案,作为后续迭代开发、增量开发时威胁建模的参考依据。

参考链接: 1、https://www.microsoft.com/en-us/SDL 2、Introduction_to_Threat_Modeling

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/118520237
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复