跳转至

微软SDL-威胁建模

威胁建模以安全的视角看软件架构设计交互图
威胁建模将安全防御措施融入到软件架构设计图中,使得软件系统满足企业安全需求
威胁建模就是通过结构化的方法,系统的识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。

威胁建模介绍

威胁建模是SDL的核心功能,它是一种工程技术,可用于帮助您识别可能影响应用程序的威胁、漏洞和对策。您可以使用威胁建模来塑造应用程序的设计,满足公司的安全目标,并降低风险。

威胁建模主要包括 定义安全需求,创建应用流程图、识别威胁、缓解威胁、验证威胁被处置

微软威胁建模工具

威胁分类

微软提出STRIDE模型,对不同的攻击类型进行分类。

分类 描述
欺骗(Spoofing) 涉及非法访问并使用其他用户的身份验证信息,如用户名和密码(冒充他人身份非法访问系统)
篡改(Tampering) 恶意修改数据。示例包括对持久性数据(如数据库中的数据)进行的未经授权的更改,以及在开放网络(如Internet)上两台计算机之间流动的数据的更改
抵赖(Repudiation) (否认自己执行过相关操作)与拒绝执行某项操作的用户相关联的拒绝行为,而其他方没有任何其他方式证明。例如,用户在缺乏跟踪禁止操作能力的系统中执行非法操作。不可抵赖性是指系统对抗抵赖威胁的能力。例如,购买物品的用户可能必须在收到物品时签名。然后,供应商可以使用已签名的收据作为用户确实收到包裹的证据
信息泄露(Information Disclosure) 将信息暴露给不应访问信息的个人,例如,用户读取未被授予访问权限的文件的能力,或入侵者读取两台计算机之间传输的数据的能力
拒绝服务(Denial of Service) 攻击通过使Web服务器暂时不可用或不可用等方式拒绝向有效用户提供服务。为了提高系统的可用性和可靠性,您必须防止某些类型的DoS威胁
权限提升(Elevation of Privilege) 特权提升未经授权的用户获得特权访问权,从而有足够的访问权危害或破坏整个系统。特权威胁的提升包括攻击者有效渗透所有系统防御并成为可信系统本身的一部分的情况,这确实是一种危险的情况

缓解措施

分类 描述
审计日志 谁在什么时间做了什么事,应用程序如何记录与安全相关的事件
身份认证 你是谁?身份验证是一个实体证明另一个实体的身份的过程,通常通过凭据,如用户名和密码
授权 你能做什么?授权是应用程序为资源和操作提供访问控制的方式
会话管理 应用程序如何处理和保护用户会话?会话是指用户和Web应用程序之间的一系列相关交互
通信安全 你在和谁说话?通信安全确保所有通信尽可能安全
配置管理 您的应用程序以谁的身份运行?它连接到哪些数据库?您的应用程序是如何管理的?如何保护这些设置?配置管理是指应用程序如何处理这些操作问题
加密 你是如何保守秘密的?您如何防止数据或库的篡改(完整性)?您如何为必须具有密码强度的随机值提供种子?密码学是指应用程序如何执行保密性和完整性
异常处理 当应用程序中的方法调用失败时,应用程序会做什么?你透露了多少?您是否向最终用户返回友好的错误信息?您是否将有价值的异常信息传递回调用者?您的应用程序是否正常失败?
输入验证 您如何知道应用程序收到的输入是有效和安全的?输入验证是指应用程序在进行其他处理之前如何过滤、筛选或拒绝输入。考虑通过入口点约束输入,通过出口点编码输出。您信任来自数据库和文件共享等源的数据吗?
敏感数据 您的应用程序如何处理敏感数据?敏感数据是指应用程序如何处理必须在内存、网络或持久存储中保护的任何数据
具体介绍

微软威胁建模工具

安装软件后,首先需要选择模板(有通用模板和azure模板,不同模板的模具不同,威胁的描述不同,通用模板威胁描述没有SDL phase信息)创建空的威胁模型,根据系统架构设计图,在建模软件上选择相关的模具,绘制系统交互图,建模软件自动发现设计和实现阶段的威胁,并给出解决建议。通过oneDrive共享的方式,实现团队合作,共享威胁模型。
微软威胁建模工具可以在线免费下载,安装后,运行打开界面

选择Create A Model,进入画布后,选择左侧的模型,直接可以拖拽到右侧

如上图绘制一个最简单的交互流程,点击威胁分析按钮,工具自动进行威胁分析和显示分析结果,如下图所示:

根据交互流程中使用的组件,自动分析可能面临的威胁,如使用数据库,可能会存在数据被篡改等风险 发现的威胁,根据名字即可识别,最主要的是SDL phase,包括design和implementation两个阶段 ,如我们的这个设计流程,共38个威胁,design阶段有4个
每个具体威胁,信息如下

状态信息: 由于现有缓解或安全保证而不适用于设计的威胁可以从“状态”下拉列表中更改为“不适用”。 有三个其他选项:未启动 – 默认选择;需要调查 – 用于跟进项目;缓解 – 完全操作后。
在威胁建模时,需要对所有的威胁进行查看,更新状态 ,Possible Mitigation(s)可以重点关注,对应的一般解决方案
最后,导出生成的报告即可
威胁建模工具中,还可以创建模板,具体可以看微软威胁建模模板github 微软威胁建模中没有提到资产的概念,微软将威胁建模定位在软件开发设计阶段使用,目标用户是软件开发工程师,他们更容易理解的数据流程

使用教程参考

Getting started with the Threat Modeling Tool

Microsoft威胁建模工具通过可视化系统组件、数据流和安全边界的标准符号,使所有开发人员更容易进行威胁建模。它还帮助威胁建模人员根据其软件设计的结构确定应考虑的威胁类别。我们在设计该工具时考虑到了非安全专家,通过提供创建和分析威胁模型的明确指导,使所有开发人员更容易进行威胁建模

owasp threat dragon工具

这是owasp开源的威胁建模工具下载地址
与微软建模工具相比,功能相对简单,模具只有常见的处理、存储、角色、数据流、信息边界几种,如下图所示
威胁信息需要选中元素,手动进行输入

这个比较适合高级安全专家使用,操作偏复杂

优点是开源的,跨平台可用

mozilla seasponge

在线建模工具,感觉不是特别好用

简化的评估

  • 梳理系统的访问边界
  • 识别访问入口
  • 系统实现安全
  • 审计和日志

参考文档

微软威胁建模工具使用介绍
owasp threat model python
owasp threat-dragon
owasp threat model checklist 英文版
威胁建模宣言 英文版

Back to top