Threat Dragon入门指南

  • A+

Threat Dragon入门指南

Threat Dragon是OWASP提供的开源威胁建模工具。支持OSX,Windows,Linux,提供基于Electron的可安装桌面应用程序或Web应用程序。桌面应用程序将威胁模型保存在本地文件系统上,而在线版本将其文件存储在GitHub中。这意味着要使用Web应用程序,您必须使用GitHub帐户登录,并为其授予对公共存储库的写访问权限。除此之外,Web和桌面版本之间的用户体验目前几乎相同。将来会与GitHub(和其他代码存储库)进行更深入的集成。

Threat Dragon目前处于开发的早期阶段(OWASP孵化项目),因此可能存在一些错误。

1.描述

威胁建模被广泛认为是在开发生命周期的早期将安全性纳入应用程序设计的一种有效方法。常见的安全实践防御包括但不仅限于:

  • IATF纵深防御
  • 在整个应用程序中建立一致的安全设计模式
  • 默认安全原则

但是,组织很难有效地采用威胁建模工具。原因包括:

  • 没有跨平台的免费工具
  • 现有工具的可用性不是很好,团队的生产力因此很差,尤其是在采用的早期适配阶段
  • 团队的学习曲线是陡峭的,威胁建模通常最终只留给团队的一小部分“专家”,而忽略了更广泛团队的宝贵观点
  • 与其他开发生命周期工具(例如问题跟踪工具)的集成很差,导致模型被忽略

OWASP Threat Dragon通过为实施STRIDE方法的团队提供免费的开源威胁建模Web应用程序来解决此问题。该工具的重点关注领域是:

  • 出色的用户体验:使用Threat Dragon非常简单有趣
  • 强大的威胁/缓解规则引擎:降低了团队进入的门槛,并允许非专家做出贡献和参与相关威胁建模
  • 与其他开发生命周期工具的集成:实施后,将确保模型轻松放入开发生命周期并在项目发展中保持相关性

OWASP徽标

1.1下载桌面应用

(1)桌面安装版从GitHub下载:

  • Windows(64位)
  • OSX
  • Linux

(2)Web版本:https://threatdragon.org/login

注意:当前版本的桌面应用程序未进行代码签名。这意味着当您尝试在Windows上安装它时可能会收到警告。这也意味着该应用程序将不会在OSX上自动更新。这将在将来的版本中修复。喜欢更新的可以关注github,也可以直接从Web浏览器直接访问。

2.入门

下载程序后进行安装,首页如下,分成打开已有的威胁模型,创建一个新的模型,打开样例三块。菜单包括文件,编辑,视图,窗口,帮助。

image20200504175426122.png
::: hljs-center

首页欢迎页面

:::

2.1创建一个新模型

2.1.1Web应用程序

Threat Dragon Web版本可以将其威胁模型存储在您的GitHub服务器中。这样一来,模型可以保持与正在建模的代码接近。未来的版本将提供更深入的集成,因此请注意此空间大小,首次登录Threat Dragon并单击时https://threatdragon.org,将看到“欢迎”页面。根据情况使用威胁模型。

image20200505182252957.png

登陆后依旧是创建威胁模型,打开已有的威胁模型,打开样例

image20200505182447969.png

2.1.2桌面应用

Threat Dragon桌面版本将其威胁模型存储在本地文件系统上。根据情况使用,创建还是修改已有的,还是查看样例。

image20200505182551719.png

然后,您将直接进入威胁模型编辑页面,可以在其中输入有关模型的常规信息。

2.1.3威胁模型编辑页面

我们以桌面版为例,web版本其实一致,“ Title标题”字段是必填字段。其余所有都是可选的,但是它们为您的模型提供了上下文。如果将来其他人必须选择模型,这将很有用。尽管只有Title标题字段是必填项,但是如果没有图表Diagrams,模型将毫无用处。

image20200505182847070.png

添加新的威胁模型图:

image20200505182943395.png

然后单击或点击“ ADD添加”以确认,或者单击“ 取消”。在此阶段,可以仅列出图表并命名。稍后添加所有图表元素。

输入所需的所有详细信息后,点击或点击保存。也可以单击取消退出而不保存,或重新加载以撤消所有更改并恢复为上一次保存。

image20200505183107033.png

web版本 Threat Dragon中,模型以类似的路径保存在您选择的分支中ThreatDragonModels/[model name]/[model title].json。查看 示例威胁模型可以进一步了解情况。因此,如果更改模型的标题,它将删除GitHub中的旧模型,并在新路径中将其替换为旧模型。但这并不适用于桌面版ThreatDragon。

2.2加载演示模型

假如想知道如何开始使用TreatDragon,可以加载样本威胁模型。在首页欢迎页面上,要查看样式,可以单击样例

image20200504175847886.png

然后进入到如下页面:

image20200504180243021.png

图中存在一些语法和已有的模型,关于图标,流程,数据存储,角色,数据流,信任边界,元素,威胁要素等可以阅读后续内容。

21.3打开现有模型

首页欢迎页面可以打开之前自行编辑的威胁建模项目:项目包括整体项目名称,如“Web威胁建模”,拥有者(Owner),审计员(Reviewer),贡献者(Contributor);第二个方框内是描述内容,如Web应用威胁建模。

最下面一层是建模模型,具体的威胁建模情况,这里是“Web认证”和“API安全“

image20200504185026952.png


2.4威胁模型报告

在“威胁模型”详细信息视图中,您可以看到模型的摘要报告,其中列出了图表,元素和威胁。在页面的右下角单击"Report"

image20200505183343957.png

可以自定义报告以显示或隐藏

  • 超出范围的威胁元素
  • 降低威胁风险
  • 威胁模型图

在Threat Dragon桌面版本上可以打印报告或将其另存为PDF。在Web版本上可以打印报告,然后在大多数浏览器上,可以使用打印对话框将报告另存为PDF。

3.威胁模型图

3.1威胁图表标题

要编辑图表标题,请单击或点击如下图所示图标。编辑完后,点击保存或者取消修改。

image20200505183516430.png

3.2流程,数据存储和参与者

通过在图编辑器左侧的模板中单击或点击相关形状,将模型元素添加到图中。添加后,可以通过单击它们以查看其属性和威胁并在图中拖动来选择它们。要删除元素,请先选择它,然后单击元素左上角的红色图标.:

该图显示了元素删除工具


3.3数据流和信任边界

通过在图编辑器左侧的模具中单击数据流和信任边界的形状,可以将其添加到图中。添加后,可以将其末端拖动到图表周围。要将数据流的末端连接到流程,数据存储或参与者,可以将其末端之一拖到元素上。绘制元素之间的数据流的一种更简便的方法是选择第一个元素,然后单击所选元素右上角附近红色删除工具旁边的灰色链接工具。这会使链接工具变为绿色。然后,当您单击另一个元素时,将创建一个新的数据流,将第一个元素链接到第二个元素。

元素链接工具

通过单击在线上的某个点可以添加额外的顶点(鼠标左键)。也可以拖动这些新顶点以定位数据流或信任边界。可以通过单击鼠标在顶点附近出现的删除工具“✖”来删除顶点。

顶点删除工具

可以通过单击鼠标在链接附近时出现的链接选项工具来选择数据流。选择之后,您可以编辑其属性或对其添加威胁。信任边界不能编辑属性。

流量选择工具

可以通过单击鼠标附近的红色删除工具来删除整个数据流或信任边界。

流量去除工具


3.4超出范围的元素

流程,数据存储,参与者和数据流可以标记为超出范围。可以将其用于帮助使图表变得有意义的必要元素,但是如果不希望对这些元素产生威胁。为了帮助审阅者Viewer(并提醒修改),可以指定将元素标记为超出范围的原因。这些元素阻止了威胁生成,超出范围的元素在图中用虚线表示:

超出范围的元素用虚线


3.5具有公开威胁的要素

具有开放(未缓解)威胁的流程,数据存储,参与者和数据流以红色突出显示,以便知道应将注意力集中在哪里:

具有公开威胁的元素是红色的


3.6编辑工具栏

图表编辑页面上的工具栏支持一些常规图表功能:

image20200505185332879.png

第一个:切换网格线的开/关。启用网格线时,元素将与它们对齐以用于更整洁的模型。

第二个: 取消编辑并返回到威胁模型详细信息视图。

第三个: 从模型中清除所有元素。

第四个: 从最后一次保存重新加载图,放弃所有更改。

第五个:为所选元素选择对应的威胁

第六个:赋值所选的元素。

第七个: 将威胁模型保存到本地浏览器存储中。


3.7元素属性

要编辑模型元素的属性,请首先选择它。元素属性显示在图编辑器的右侧。在未来版本的Threat Dragon中,威胁生成引擎将使用这些属性来建议模型的威胁和缓解措施。


3.8添加和编辑威胁

要将威胁添加到图表中的元素,请选择一个元素,然后点击或单击图表编辑器左侧的“ 编辑威胁 ”。这将折叠模型元素模具并显示所选元素的威胁。要添加新威胁,请点击或单击

image20200505185751905.png
添加新威胁.:

image20200505185947775.png

在威胁对话框中输入威胁的详细信息。在标题STRIDE威胁类型 是强制性的。完成后,点击保存。您的新威胁将会出现。要再次编辑,请点击或单击其标题。

3.9STRIDE

| 威胁 | 安全属性 | 定义 | 举例 |
| :------------ | :------- | :--------------------- | :------------------- |
| 仿冒(S) | 认证 | 冒充人或物 | 冒充其他用户账号 |
| 篡改(T) | 完整性 | 修改数据或代码 | 修改订单信息 |
| 抵赖(R) | 审计 | 不承认做过某行为 | 不承认修改行为 |
| 信息泄露(I) | 保密性 | 信息被泄露或窃取 | 用户信息被泄露 |
| 拒绝服务(D) | 可用性 | 消耗资源、服务可不用 | DDOS 导致网站不可用 |
| 权限提升(E) | 授权 | 未经授权获取、提升权限 | 普通用户提升到管理员 |

4.威胁产生规则

TD仍在努力实现其第一个里程碑-Alpha版。在这一点上,到目前为止,威胁生成规则仅仅是证明技术方法的一个片段。如第7节路线图所述,计划为beta版本(里程碑2)计划一个功能更完善的规则集。Threat Dragon的Alpha版本旨在提供基本的威胁建模体验,暂时而言只是为了识别威胁和制定缓解措施。

5.常见问题

Q1:TD与Mozilla的SeaSponge不同吗?

A1:在我进行原型制作时,主要是为了使自己正确使用javascript,我邮件列表发现了有关SeaSponge的信息。SeaSponge与该项目有很多共同点,基于他们的威胁模型文件下载功能的实现。也许将来可以合并吗?谁知道?

Q2:哪些浏览器可用于Threat Dragon?

A2:Threat Dragon已经在这些浏览器上进行了测试,但是肯定还有更多。

| Platform | Browser | Tested |
| -------- | -------- | ---------------------------------------------------- |
| Windows | Edge | Microsoft Edge 38 for Windows 10 |
| Windows | IE | Internet Explorer 11 for Windows 10 |
| Windows | Chrome | Windows 10 |
| Windows | Firefox | Windows 10 |
| Linux | Abrowser | Mozilla 68.0.2 for Trisquel / Gnu Linux trisquel 8.0 |
| MacOS | Firefox | Firefox 73.0.1 for macOS version 10.15 |
| MacOS | Safari | Safari 13.0.2 for macOS 10.15 |
| MacOS | Chrome | Google Chrome 80.0 for macOS 10.15 |

6.参考

1.下载可安装的桌面应用程序:http://docs.threatdragon.org/#downloads

2.第一次使用Threat Dragon:http://docs.threatdragon.org/#getting-started

3.如何为威胁模型使用图表:http://docs.threatdragon.org/#threat-model-diagrams

4.对用于生成威胁的规则的描述:http://docs.threatdragon.org/#threat-generation

5.参考文献:http://docs.threatdragon.org/

6.STRIDE威胁建模方法讨论:https://www.freebuf.com/articles/es/205984.html

7.漫谈威胁建模下的安全通信:https://mp.weixin.qq.com/s/m-ouMuBGX4BhHohV52Kykg

8.威胁建模介绍:https://xz.aliyun.com/t/2061

7.路线图

7.1项目愿景:

该项目的总体愿景是实施一种工具,希望将威胁模型纳入其应用开发生命周期并消除期间所遇到的障碍。我看到的障碍是:

  • 缺乏跨平台工具:工具必须是全平台支持
  • 现有工具的UX较差,生产力很差:出色的UX是必须的
  • 采纳团队的陡峭学习曲线:积累专家知识以帮助团队入门的工具
  • 模型被忽略:与其他生命周期工具的集成是关键

7.2最初的高级计划:

里程碑1:Alpha发布-基本威胁建模发布

  • 对现有原型进行体系结构审查,并在需要时进行完善/更改:已确认的JointJs可以正常工作,更改了存储模型并添加了基于Electon的桌面版本。Nools规则引擎(不再受支持)被json-rules-engine取代。从Grunt/Bower转移到NPM /Browserify
  • 安全的审查设计和发现
  • 测试开发(单元和手册):Codecov报告
  • 最终用户文档::GitHub页面
  • “开源驱动”让用户可以注册Alpha / Beta用户并产生反馈。桌面应用程序的下载量为数以万计,目前尚不清楚有多少人在使用它。

里程碑2:Beta版-威胁/缓解规则引擎

  • 根据alpha版本的反馈优化UX
  • (某些)基于来自Alpha版本的反馈的功能增强功能用户实现了一些功能请求(例如,网格)和已修复的问题报告(例如,保存错误)
  • 实施规则引擎以生成威胁/缓解措施
  • 更新了测试和最终用户文档

里程碑3:发行版1

  • 根据Beta版本的反馈进行关键改进,错误修复和新功能
  • 完整的最终用户文档
  • 渗透测试

里程碑4-开发生命周期集成

  • 待定义的详细范围,但总的来说,愿景是支持问题跟踪和需求管理工具,以便可以跟踪威胁/缓解措施以进行实施和测试

7.3时间表

很难估计,因为如果涉及其他开发人员,它可能会发生很大变化。基于我现在的独处速度,我可以说发行版1可以在1年内(乐观地)完成。

7.4技术

从头到尾都是技术架构。在客户端中,关键库是MVC架构的Angular和JointJS的图表。JointJS具有大量功能的日志,但不适用于Angular。这需要进行审查。在原型中,所有存储都使用浏览器本地存储在客户端上完成。

在对体系结构进行审查之后,进行了以下关键更改:

  • 引入了一个新的基于Electron的可安装桌面版本,该版本使用本地文件系统进行模型存储
  • Web变体已更改为使用GitHub进行模型存储-其他源代码控制系统将随之而来(例如BitBucket)
  • 将通用代码分离为新的NPM软件包,在Web和桌面版本之间共享
  • 由于不再维护Nools规则引擎,因此将替换它

7.5挑战性

  • 充分利用alpha和beta来正确使用UX和规则引擎
  • 寻找一种可持续的方式来托管它,尤其是要支持更深的GitHub / BitBucket / 等等

7.6最低可行产品

  1. 威胁建模工具的应用程序源代码
  2. 该工具的最终用户文档
  3. 该工具的在线托管版本
  4. 该工具的可安装,跨平台桌面版本

8.版本发布

| Release | Date | Location | Comments |
| ------------- | ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| v1.2 | 14 April 2020 | Web app Desktop | description for diagram elements label applied to boundaries save button always enabled zoom functionality disabled hot key copy and paste for diagram elements |
| v1.1 | 15 Mar 2020 | Web app | Duplicate element/diagram feature |
| v1.1 | 10 Mar 2020 | Desktop | Bug fix for blank screen on new model, and duplicate element/diagram feature |
| v1.0 | 22 Feb 2020 | Desktop | First full release for Windows, MacOS and Linux |
| v0.1.27-alpha | 28 Jul 2019 | Desktop | Windows only |
| v0.1.26 | 16 May 2017 | Desktop | MacOS and Windows only |
| 0.3.0 | 14 Mar 2017 | Web app | |
| v0.1.1-alpha | 14 Mar 2016 | Web app | |

相关推荐: hw在即,你还不会看危险报文?

我收集了八种近期主流的漏洞攻击报文,来自多个威胁感知平台,小白可以看看 信息泄露类 这种情况是最常见的,也是最难以捕获的,因为它也许不用攻击数据就能轻易获取,尤其是报错或探针页面,配置不当可能泄露很多东西 别看它危害小,但往往某个不起眼的信息就可以成为突破点 …