1. 概览
微软威胁建模工具(Threat Modeling Tool)是 Microsoft 安全开发生命周期 (SDL,Security Development LifeCycle) 的核心要素。 当潜在安全问题处于无需花费过多成本即可相对容易解决的阶段,软件架构师可以使用威胁建模工具提前识别这些问题。 因此,它能大幅减少开发总成本。 此外,该工具在设计之初就充分考虑到了非安全专家的体验,为他们提供有关创建和分析威胁模型的清晰指导,让所有开发人员都可以更轻松地使用威胁建模。
微软威胁建模工具可以帮助开发/架构师实现如下目的:
- 交流系统的安全设计;
- 使用经过证实的方法分析这些设计是否存在潜在安全问题;
- 建议和管理针对安全问题的缓解措施。
2. 安装配置
2.1. 前置条件
- 要求系统为Windows环境,最新版本要求Windows 10及以上版本(该工具也仅适用于Windows)
- 需要安装
.NET Framework 4.7.1
及其以上版本 - 电脑需要联网
2.2. 下载安装
-
下载代理程序 TMT7.application,当前最新版本为7.3.31026.3(2023 年 10 月 26 日发行);
-
双击安装包,在弹出的框中点击:『安装』;
-
等待下载完成后会自动安装,安装成功后会打开工具界面。
3. 使用介绍
3.1. 背景知识
微软 SDL 威胁建模方法涉及创建关系图、识别威胁、缓解问题和验证每个缓解操作。 下面的关系图重点突出了此过程。在识别分析威胁时又用到了SRIDE方法。若想了解更多细节,可以关注博主,参阅博主前期文章。
3.2. 工具操作
3.2.1. 打开威胁建模工具
启动威胁建模工具时,可以看到下图显示的几项:
组件 | 详细信息 |
---|---|
创建模型 | 会打开空白画布以绘制关系图。 创建模型前请确保在下拉框中选出适合自己的模型的模板 |
打开模型 | 打开以前保存的威胁模型。 如需打开最近经常使用的文件,“最近打开的模型”功能很实用。 |
新模型的模板 | 创建模型前,必须选出想要使用的模板。 工具默认提供的主要模板是 Azure 威胁模型模板,其中包含特定于 Azure 的模具、威胁和缓解操作。 对于通用模型,可从下拉菜单中选择 SDL TM 知识库。 |
默认模板称为“SDL TM 知识库”,提供了一组基本元素和威胁生成功能。 只要对数据流关系图 DFT 和 STRIDE 有基本的了解即可使用。
4. 创建模型
拖动右侧的工具箱可以绘制数据流图
下面是博主绘制的一个威胁模型图:点击下载 (访问密码: 6277)。
结构细节说明:
- 用户浏览器被绘制为外部实体—正方形
- 用户正向我们的 Web 应用服务器发送命令— 圆圈
- Web 服务器正向数据库发出请求(两条平行线)
上面绘制的是 DFD,即“数据流图”的简写。 威胁建模工具可使用户指定信任边界(用红色虚线显示),以显示不同的实体被控制的位置。 例如,IT 管理员需要 Active Directory 系统以进行身份验证,因此 Active Directory 是不受其控制的。
4.1. 分析威胁
这一部分是 Threat Modeling Tool 的核心。 威胁生成引擎考察独立元素和已连接的元素,以确定生成哪个威胁。
单击图标菜单选项(带有放大镜的文件,下图红色方框图标)中的分析视图后,即转到 Threat Modeling Tool 基于默认模板建立的已生成威胁的列表,该列表使用名为 STRIDE(欺骗、篡改、否认性、信息泄露、拒绝服务和特权提升)的 SDL 方法。
STRIDE方法类似于通过先确保房子里的每扇门、每扇窗都锁好来保护房屋的安全,然后再添加警报或抓小偷。
先从选择列表上的第一项开始。 下面是发生的具体情况:
首先,两个模具之间的交互变得突显
其次,有关威胁的其他信息显示在威胁属性窗口中。
此威胁信息表明:攻击者可以通过详细的错误消息访问敏感数据,例如以下数据-服务器名称-连接字符串-用户名-密码-SQL过程-动态SQL故障的详细信息-堆栈跟踪和代码行-存储在内存中的变量-驱动器和文件夹位置-应用程序安装点-主机配置设置-其他内部应用程序详细信息
通过自动分析生成的威胁列表帮助架构师了解潜在的设计缺陷。 STRIDE 分类为其提供了有关潜在的攻击途径的思路,而其他说明信息能够让架构师了解问题所在,以及缓解问题可能使用的方法。 另外,可以使用可编辑字段在理由详细信息中撰写理由。
4.2. 报表和共享
在通过"添加重要事项、缓解/理由、优先项和状态更改"处理完以上威胁列表并后,可选择“报表”->“创建完整报表”->“保存报表”,该操作将为导出一份完整的报表,可与同事们一起查看,以确保执行了适当的安全操作。
若大家对博主的Demo样例感兴趣,可以下载快速上手体验:
- Threat Model Demo.zip (访问密码: 6277)
5. 威胁生成的原理
5.1. 指定源和目标
威胁生成引擎使用简单的句子来生成威胁。 示例包括:
- 目标为
[元素名称]
- 源为
[元素名称]
你还可以在标题和说明中使用元素名称。 格式为:“{target.Name}”或“{source.Name}
”。
5.2. 合并源和目标
你可以精确规定如何生成威胁。 用 AND OR
运算符组合目标、源及其各个属性。 示例包括:
target.[property name] is 'Yes' AND source.[property name] is 'No'
- 流交叉[信任边界名称]
5.3. 生成或忽略威胁
威胁生成引擎使用两个字段来生成或忽略威胁:
- 包括:如果在此字段中添加的句子为 true,则会生成威胁。
- 排除:如果在此字段中添加的句子为 true,则不会生成威胁。
下面是默认模板的实际示例,以便将这些步骤结合在一起:
- 威胁:跨站点脚本
- 包括:
(target is [Web Server]) OR (target is [Web Application])
- 排除:
(target.[Sanitizes Output] is 'Yes') AND (target.[Sanitizes Input] is 'Yes')
6. 参考
[1] 微软安全开发指导文档(共285页) (访问密码: 6277)
[2] uncover-security-design-flaws-using-the-stride-approach
[3] https://learn.microsoft.com/zh-cn/azure/security/develop/threat-modeling-tool-getting-started
[4] https://learn.microsoft.com/zh-cn/training/modules/tm-use-recommended-tools-to-create-a-data-flow-diagram/2-threat-modeling-tool
推荐阅读:
- 「 安全设计」68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标
- 「 网络安全常用术语解读 」软件物料清单SBOM详解
- 「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解
- 「 网络安全常用术语解读 」SBOM主流格式SPDX详解
- 「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解
- 「 网络安全常用术语解读 」漏洞利用交换VEX详解
- 「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐
- 「 网络安全常用术语解读 」什么是0day、1day、nday漏洞
- 「 网络安全常用术语解读 」软件物料清单SBOM详解
- 「 网络安全常用术语解读 」杀链Kill Chain详解
- 「 网络安全常用术语解读 」点击劫持Clickjacking详解
- 「 网络安全常用术语解读 」悬空标记注入详解
- 「 网络安全常用术语解读 」内容安全策略CSP详解
- 「 网络安全常用术语解读 」同源策略SOP详解
- 「 网络安全常用术语解读 」静态分析结果交换格式SARIF详解
- 「 网络安全常用术语解读 」安全自动化协议SCAP详解
- 「 网络安全常用术语解读 」通用平台枚举CPE详解
- 「 网络安全常用术语解读 」通用缺陷枚举CWE详解
- 「 网络安全常用术语解读 」通用漏洞披露CVE详解
- 「 网络安全常用术语解读 」通用配置枚举CCE详解
- 「 网络安全常用术语解读 」通用漏洞评分系统CVSS详解
- 「 网络安全常用术语解读 」通用漏洞报告框架CVRF详解
- 「 网络安全常用术语解读 」通用安全通告框架CSAF详解
- 「 网络安全常用术语解读 」漏洞利用交换VEX详解
- 「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐
- 「 网络安全常用术语解读 」通用攻击模式枚举和分类CAPEC详解
- 「 网络安全常用术语解读 」网络攻击者的战术、技术和常识知识库ATT&CK详解
- 「 网络安全常用术语解读 」静态应用安全测试SAST详解