STRIDE威胁建模是由微软提出的一种威胁建模方法,将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和Elevation of Privilege(权限提升)六种威胁构成,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题
STRIDE威胁建模的一般流程如下:
数据流图是由以下4个元素组成:
安全人员与系统架构师及设计人员沟通了解设计详情并画出数据流图后还需要标注信任边界(Trust Boundary),针对简单的Web应用的数据流图如下:
STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖(R)威胁,具体可对照如下表格进行威胁识别
根据不同的数据流图元素及威胁相应的缓解措施也不相同,如本文示例数据流图中外部实体用户的仿冒威胁,其缓解措施简单来说就是对用户身份进行认证,对一个Web应用来说缓解仿冒威胁不仅需要较强的认证机制,还需要防止恶意攻击者用暴力破解、口令猜测等方法绕过认证从而造成仿冒用户的威胁,如果笔者来提出该用户仿冒威胁的缓解措施的话,详细措施如下:
在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁和不同的应用场景,其缓解措施也要随之而改变以提高应用安全的同时也能给用户带来较好的交互体验,微软对于常用的威胁给出了其常用的标准缓解措施并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块,可以方便同类应用直接使用:
在威胁建模完成后需要对整个过程进行回顾,不仅要确认缓解措施是否能够真正缓解潜在威胁,同时验证数据流图是否符合设计,代码实现是否符合预期设计,所有的威胁是否都有相应的缓解措施,最后将威胁建模报告留存档案,作为后续迭代开发、增量开发时威胁建模的参考依据
SDL的核心理念是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护,从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动以减少软件中漏洞的数量并将安全缺陷降低到最小程度,本文重点介绍了设计阶段的安全活动指导思想及STRIDE威胁建模,但SDL的其它阶段的不同安全活动也同样对软件安全有着重要影响,同时本文介绍的安全设计原则仅为指导思想,安全设计人员还需要掌握一定的安全攻防知识,具备一定的安全攻防经验才能更好的设计出安全的方案及软件应用。另外根据笔者经验,在实际的安全设计工作中对于不同软件及应用场景其面临的安全问题也不同,随着互联网时代发展,目前已经不再是一个单纯的软件时代了,类似通信设备、移动端应用、智能硬件、云端、大数据等新形态的应用都面临的自身特有的安全问题,安全设计人员要考虑的也要更多,但安全设计的核心原则还是相差无几,由于篇幅及笔者经验有限,本文所述如有不妥之处可以与笔者联系交流
https://www.microsoft.com/en-us/SDL/process/design.aspx https://www.microsoft.com/en-us/sdl/adopt/threatmodeling.aspx https://learn.microsoft.com/zh-cn/training/paths/tm-threat-modeling-fundamentals/