【SDL实践指南】STRIDE威胁建模

admin 2023年3月11日21:48:28评论85 views字数 2270阅读7分34秒阅读模式

基本介绍

STRIDE威胁建模是由微软提出的一种威胁建模方法,将威胁类型分为Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄漏)、Denial of Service(拒绝服务)和Elevation of Privilege(权限提升)六种威胁构成,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题

常见术语

  • 资产(Asset):有价值的资源,例如:数据库或文件系统上的数据或者系统资源

  • 威胁(Threat):任何潜在有可能直接或间接的危及资产的恶意的或其他的事件

  • 漏洞(Vulnerability):漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而使攻击者能够在未授权的情况下访问或破坏系统

  • 攻击(Attack):由某人或某些事物采取的针对资产的损害行为,这可能是有人根据威胁实施损害或利用漏洞采取的一些行为

  • 对策(Countermeasure):解决威胁并降低风险的保障措施

建模流程

STRIDE威胁建模的一般流程如下:

  • 绘制数据流图——设计

  • 识别潜在威胁——中断

  • 提出缓解措施——修复

  • 进行安全验证——验证

【SDL实践指南】STRIDE威胁建模

绘制数据流图

数据流图是由以下4个元素组成:

  • 外部实体(External Entity):系统控制范围之外的用户、软件系统或者设备,作为一个系统或产品的输入或输出,在数据流图中用矩形表示外部实体

  • 处理过程(Process):表示一个任务、一个执行过程,一定有数据流入和流出。在数据流图中用圆形表示

  • 数据存储(Data Store):存储数据的内部实体,如数据库、消息队列、文件等。用中间带标签的两条平行线表示

  • 数据流(Data Flow):外部实体与进程、进程与进程或者进程与数据存储之间的交互,表示数据的流转。在数据流图中用箭头表示


安全人员与系统架构师及设计人员沟通了解设计详情并画出数据流图后还需要标注信任边界(Trust Boundary),针对简单的Web应用的数据流图如下:

【SDL实践指南】STRIDE威胁建模

识别潜在威胁

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

【SDL实践指南】STRIDE威胁建模

提出缓解措施

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

  • 对用户访问进行帐号密码、证书等身份认证

  • 用户认证5次后仍然验证失败,则在30分钟内禁止该帐号登录

  • 用户帐号密码认证过程中,如果出现三次密码错误,则增加验证码机制,输入验证码且正确再进行身份认证

  • 用户密码必须包含数字、字母及特殊字符且长度在8位以上,如果业务安全需要则增加密码过期机制,每隔6个月提醒用户修改密码

在提出缓解措施时,有的时候不仅要考虑安全问题,同时也要考虑软件的易用性,所以不同的威胁和不同的应用场景,其缓解措施也要随之而改变以提高应用安全的同时也能给用户带来较好的交互体验,微软对于常用的威胁给出了其常用的标准缓解措施并在具体实施时已将常用的缓解方案及措施集成为独立的解决方案或者代码模块,可以方便同类应用直接使用:

【SDL实践指南】STRIDE威胁建模

进行安全验证

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

文末小结

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/

原文始发于微信公众号(七芒星实验室):【SDL实践指南】STRIDE威胁建模

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月11日21:48:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【SDL实践指南】STRIDE威胁建模http://cn-sec.com/archives/1598629.html

发表评论

匿名网友 填写信息