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

基本介绍

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

常见术语

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

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

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

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

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

建模流程

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)威胁,具体可对照如下表格进行威胁识别

提出缓解措施

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

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

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

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

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

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

进行安全验证

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

文末小结

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/

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34099.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月20日 上午11:22
下一篇 2024年4月20日 上午11:24

相关推荐

  • 从“合规”角度谈汽车金融SP的资本路径

    资本市场是SP的一个质变从战术角度上看,我们从事SP行业是因为它可以盈利,但我们有没有从战略层面去思考过为什么要做SP呢?我认为只有从战略层面去考虑,我们才能有

    2024年9月1日
    0
  • 关于aptget 你所不知道的事

    使用过Ubuntu的小伙伴,一定使用过apt-get这条命令,那apt-get到底是做什么的呢?没错,apt-get是用来安装软件的,更准确的说,apt-get

    2024年9月19日
    0
  • 传播科学导论:dB 的故事

    dB是什么在移动通信领域,目前最火的话题是5G。关于5G的讨论一片热火,反映了大家对这个新时代的无限憧憬。然而,对于一些通信最基本的,习以为常的概念,探究起来仍

    2024年9月17日
    0
  • 编程设计是什么课

    编程设计是一门集理论知识与实践技能为一体的课程主要教授如何使用编程语言解决实际问题。除了学习编程语言的基本语法、数据结构和算法基础之外,本课程还培养逻辑思维和解决问题的能力。编程设…

    网站运维 2024年5月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注