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

news2024/10/5 16:46:10

1. 概览

微软威胁建模工具(Threat Modeling Tool)是 Microsoft 安全开发生命周期 (SDL,Security Development 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 知识库。

默认模板称为“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详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对vue3/core源码ref.ts文件API的认识过程

对toRef()API的认识的过程: 最开始认识toRef()是从vue3源码中的ref.ts看见的,右侧GPT已经举了例子 然后根据例子,在控制台输出ref对象是什么样子的: 这就是ref对象了,我们根据对象中有没有__v_isRef来判断是不是一个ref对象,当对象存在且__v_isRef true的时候他就判定为是一个…

F28034中断

DSP中断 中断中断概述中断机制 中断 当CPU正在执行程序时,由于发生了某种随机的事件(外部或内部),使CPU的执行中断,转而去执行某一段特殊的程序(中断子程序或中断处理程序),以处理该…

cs与msf权限传递,以及mimikatz抓取win2012明文密码

目录 解释参数 foreign http foreign https cs与msf权限传递 Cobalt Strike会话传递到Metasploit Framework Cobalt strike上的操作 ​编辑​编辑​编辑 Metasploit Framework上的操作 传递会话 Metasploit Framework会话传递到Cobalt Strike Cobalt strike上的操作…

Tina-Linux -- 3. LVGL测试

参考韦东山 – Tina_Linux_图形系统_开发指南 Tina-linux lvgl 配置 环境配置 进入Tina-SDK根目录 source build/envsetup.sh lunch XXX平台名称 make menuconfigLVGL Gui --->Littlevgl --->< > lv_demo<*> lv_examples &#xff08;lvgl官方demo&#…

监控监测管理系统产品规格说明书(实际原件参考)

【智慧工地】监控监测管理系统产品规格说明书编制模板 一、引言 二、 项目概述 三、 总体需求 四、 功能需求 4.1 概述 4.2 业务功能概要描述 4.3 功能性需求 4.4 功能描述 五、 非功能性需求 5.1 用户界面需求 5.2 软硬件环境需求 5.3 产品质量需求 5.4 接口需求 5.5 其他需求…

HarmonyOS 鸿蒙应用开发 - 多态样式 stateStyles

前言&#xff1a;Styles和Extend仅仅应用于静态页面的样式复用&#xff0c;stateStyles可以依据组件的内部状态的不同&#xff0c;快速设置不同样式&#xff0c;类似于css伪类&#xff0c;但语法不同。 ArkUI提供以下四种状态&#xff1a; focused&#xff1a;获焦态。normal&…

MySQL库/表/数据的操作

文章目录 1.数据库操作1.1 创建、删除、查看和修改1.2 编码格式1.3 备份和恢复 2.表的操作2.1 创建表2.2 存储引擎2.3 查看表、修改表、删除表 3.数据类型3.1整数类型3.2字节类型(bit)3.3浮点类型(bit)3.4 decimal3.5 字符串类型3.6 日期和时间类型3.7 enum和set关于如何查找想…

ES 查询踩坑-全字段匹配

需求&#xff1a;name字段需要全匹配查询 name的映射 普通的must查询 GET power_engin/_search {"from": 0,"size": 10,"query": {"bool": {"must": [{"term": {"name": {"value": "尼…

解决Flutter位于悬浮窗口时,应用Logo不更新问题

问题描述 我已经更换了应用Logo&#xff0c;但是发现应用处于悬浮窗口时&#xff0c;logo还是更改之前的&#xff1f;下面的图片只是示意。 解决方案 终端命令 rm -rf ~/Library/Developer/Xcode/DerivedData2.xcode视图内解决 先在顶部找到 Xcode --> Setting --> Lo…

光速入门python的OpenCV

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python的OpenCV模块的关键知识点 争取用最短的时间入门OpenCV 并且做到笔记功能直接复制使用 OpenCV简介 不浪费时间的介绍: 就是类似于ps操作图片。 至于为什么不直接用ps&#xff0c;因为只有程序能…

AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇)

上一篇介绍了Agent与LangGraph的基础技能Tool的必知必会 AI菜鸟向前飞 — LangChain系列之十三 - 关于Tool的必知必会 前面已经详细介绍了Promp、RAG&#xff0c;终于来到Agent系列&#xff08;别急后面还有LangGraph&#xff09;&#xff0c;大家可以先看下这张图&#xff1…

Centos修改系統語言

一、使用命令行修系统语言 1、显示系统当前语言环 [rootkvm-suma ~]# localectl System Locale: LANGen_US.utf8 VC Keymap: cn X11 Layout: cn 2、查看系统支持字符集 [rootkvm-suma ~]# locale -a 2、设置系统语言环境 [rootkvm-suma ~]# localectl set-locale LANGz…

2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析

根据近年的安排&#xff0c;2024年第11届汉字小达人比赛还有4个多月就启动&#xff0c;那么孩子们如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。②把历年真题刷…

Three.js 研究:2、如何让动画线性运动

1、默认的动画含有加速度并非线性的 制作好的动画很明显是非线性的&#xff0c;这是一个运动环&#xff0c;为了让环运行线性进行如下设置。 2、设置动画成为线性动画

移动端开发 笔记01

目录 01 移动端的概述 02 移动端的视口标签 03 开发中的二倍图 04 流式布局 05 弹性盒子布局 01 移动端的概述 移动端包括:手机 平板 便携式设备 目前主流的移动端开发: 安卓设备 IOS设备 只要移动端支持浏览器 那么就可以使用浏览器开发移动端项目 开发移动端 使用…

如何修复 System has not been booted with systemd 报错信息?

如何修复 System has not been booted with systemd 报错信息&#xff1f; 一、问题描述&#xff1a; 我们在学习 linux 系统时&#xff0c;使用 systemd 命令&#xff08;比如 sudo systemctl status ssh&#xff09;&#xff0c;可能会遇到一个报错信息&#xff1a; System…

HCIP-Datacom-ARST自选题库__ISIS简答【3道题】

1.IS-1S是链路状态路由协议&#xff0c;便用SPF算法进行路由计算。某园区同时部署了IPv4和IPV6井运行IS-IS实现网络的互联互通&#xff0c;如图所示&#xff0c;该网络IPv4和IPV6开销相同&#xff0c;R1和R4只支持IPV4。缺省情况下&#xff0c;计算形成的IPv6最短路径树中&…

Redis内存回收-内存淘汰策略

LFU的访问次数之所以叫做逻辑访问次数&#xff0c;是因为并不是每次key被访问都计数&#xff0c;而是通过运算&#xff1a; 生成0~1之间的随机数R计算 (旧次数 * lfu_log_factor 1)&#xff0c;记录为P如果 R < P &#xff0c;则计数器 1&#xff0c;且最大不超过255访问…

深度学习设计模式之桥接模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 桥接模式是将抽象部分与实现部分分离&#xff0c;使它们都可以独立的变化。 一、介绍 桥接模式是结构型设计模式&#xff0c;主要是将抽象部分与实现部分分离&#x…

老显示器该换了,否则会摧毁你的眼睛~

正文 大家好&#xff0c;我是bug菌~ 今天给大家带来一篇关于程序员护眼的文章&#xff0c;大部分伙计都是敲代码的&#xff0c;即使不是码农&#xff0c;也多半每天要抱着电脑处理各种事务&#xff0c;那么对眼睛来说还是挺大负担的 特别眼睛原本就不好的朋友更加不友好&#x…