安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装及使用详解(文末附样例)

本文主要是介绍安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装及使用详解(文末附样例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 概览

微软威胁建模工具(Threat Modeling Tool)是 Microsoft 安全开发生命周期 (SDL,Security Develop LifeCycle) 的核心要素。 当潜在安全问题处于无需花费过多成本即可相对容易解决的阶段,软件架构师可以使用威胁建模工具提前识别这些问题。 因此,它能大幅减少开发总成本。 此外,该工具在设计之初就充分考虑到了非安全专家的体验,为他们提供有关创建和分析威胁模型的清晰指导,让所有开发人员都可以更轻松地使用威胁建模。

微软威胁建模工具可以帮助开发/架构师实现如下目的

  • 交流系统的安全设计;
  • 使用经过证实的方法分析这些设计是否存在潜在安全问题;
  • 建议和管理针对安全问题的缓解措施。

2. 安装配置

2.1. 前置条件

  • 要求系统为Windows环境,最新版本要求Windows 10及以上版本(该工具也仅适用于Windows)
  • 需要安装 .NET Framework 4.7.1 及其以上版本
  • 电脑需要联网

2.2. 下载安装

  1. 下载代理程序 TMT7.application,当前最新版本为7.3.31026.3(2023 年 10 月 26 日发行);

  2. 双击安装包,在弹出的框中点击:『安装』;

  3. 等待下载完成后会自动安装,安装成功后会打开工具界面。

3. 使用介绍

3.1. 背景知识

微软 SDL 威胁建模方法涉及创建关系图、识别威胁、缓解问题和验证每个缓解操作。 下面的关系图重点突出了此过程。在识别分析威胁时又用到了SRIDE方法。若想了解更多细节,可以关注博主,参阅博主前期文章。

3.2. 工具操作

3.2.1. 打开威胁建模工具

启动威胁建模工具时,可以看到下图显示的几项:

组件详细信息
创建模型会打开空白画布以绘制关系图。 创建模型前请确保在下拉框中选出适合自己的模型的模板
打开模型打开以前保存的威胁模型。 如需打开最近经常使用的文件,“最近打开的模型”功能很实用。
新模型的模板创建模型前,必须选出想要使用的模板。 工具默认提供的主要模板是 Azure 威胁模型模板,其中包含特定于 Azure 的模具、威胁和缓解操作。 对于通用模型,可从下拉菜单中选择 SDL TM 知识库。

4. 创建模型

拖动右侧的工具箱可以绘制数据流图

下面是博主绘制的一个威胁模型图:点击下载 (访问密码: 6277)。

结构细节说明:

  • 用户浏览器被绘制为外部实体—正方形
  • 用户正向我们的 Web 应用服务器发送命令— 圆圈
  • Web 服务器正向数据库发出请求(两条平行线)

上面绘制的是 DFD,即“数据流图”的简写。 威胁建模工具可使用户指定信任边界(用红色虚线显示),以显示不同的实体被控制的位置。 例如,IT 管理员需要 Active Directory 系统以进行身份验证,因此 Active Directory 是不受其控制的。

4.1. 分析威胁

单击图标菜单选项(带有放大镜的文件,下图红色方框图标)中的分析视图后,即转到 Threat Modeling Tool 基于默认模板建立的已生成威胁的列表,该列表使用名为 STRIDE(欺骗、篡改、否认性、信息泄露、拒绝服务和特权提升)的 SDL 方法。

STRIDE方法类似于通过先确保房子里的每扇门、每扇窗都锁好来保护房屋的安全,然后再添加警报或抓小偷。

先从选择列表上的第一项开始。 下面是发生的具体情况:

首先,两个模具之间的交互变得突显

其次,有关威胁的其他信息显示在威胁属性窗口中

此威胁信息表明:攻击者可以通过详细的错误消息访问敏感数据,例如以下数据-服务器名称-连接字符串-用户名-密码-SQL过程-动态SQL故障的详细信息-堆栈跟踪和代码行-存储在内存中的变量-驱动器和文件夹位置-应用程序安装点-主机配置设置-其他内部应用程序详细信息

通过自动分析生成的威胁列表帮助架构师了解潜在的设计缺陷。 STRIDE 分类为其提供了有关潜在的攻击途径的思路,而其他说明信息能够让架构师了解问题所在,以及缓解问题可能使用的方法。 另外,可以使用可编辑字段在理由详细信息中撰写理由。

4.2. 报表和共享

在通过"添加重要事项、缓解/理由、优先项和状态更改"处理完以上威胁列表并后,可选择“报表”->“创建完整报表”->“保存报表”,该操作将为导出一份完整的报表,可与同事们一起查看,以确保执行了适当的安全操作。

若大家对博主的Demo样例感兴趣,可以下载快速上手体验:

  • Threat Model Demo.zip (访问密码: 6277)

5. 参考

[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


推荐阅读:

  • 「 安全设计」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详解

这篇关于安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装及使用详解(文末附样例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000913

相关文章

Kotlin 枚举类使用举例

《Kotlin枚举类使用举例》枚举类(EnumClasses)是Kotlin中用于定义固定集合值的特殊类,它表示一组命名的常量,每个枚举常量都是该类的单例实例,接下来通过本文给大家介绍Kotl... 目录一、编程枚举类核心概念二、基础语法与特性1. 基本定义2. 带参数的枚举3. 实现接口4. 内置属性三、

springboot整合mqtt的步骤示例详解

《springboot整合mqtt的步骤示例详解》MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,适用于物联网设备之间的通信,本文介绍Sprin... 目录1、引入依赖包2、yml配置3、创建配置4、自定义注解6、使用示例使用场景:mqtt可用于消息发

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创