Bootstrap

实用威胁建模指南(二)

上篇文章我们介绍了威胁建模的发展历史, 解决的问题, 以及对于威胁建模的三条建议, 这篇文章开始我们就具体来看一下到底如何在实际开发中落地威胁建模.首先介绍几个重要的概念.

资产, 威胁, 漏洞,风险

在威胁建模中有上述的重要的概念, 我们需要注意:

威胁建模的过程就是通过对于资产, 威胁, 风险的识别, 找到风险点, 并解除这些风险点. 这就是威胁建模的过程.

威胁建模的几种方法

在我们了解清楚了威胁建模中的四个重要的概念后, 那么有什么方法可以帮助我们来找到风险点呢? 下边介绍两种实用的方法可以帮助大家来进行威胁建模.

Asset-Threats Mapping

第一种方法是Asset-Threats Mapping, 就是资产与威胁映射模型来进行威胁建模, 它主要分三步.

第一步: 列出系统中的资产与威胁.

在第一步中我们首先要识别系统中的资产与威胁是分别是什么. 以一个常见的软件系统为例, 我们的资产可能有:

威胁又有那些:

第二步是将资产和威胁进行匹配, 进行Mapping.

在识别出资产和威胁后, 第二步我们要做的事情就是将他们进行匹配, 例如黑客可能对于我们的基础架构有“兴趣”, 数据贩子可能对于我们的敏感数据有兴趣, 友商对于我们的代码和数据访问接口有兴趣, 前雇员和内部人员可能对于我们的敏感数据有兴趣等等.

做好Mapping之后我们就可以等到这样一张图, 那么可以清楚的梳理出资产和Threat的关系.

第三步, 假设我们是威胁者, 找到系统中的漏洞来获取资产.

例如如果是一个黑客像要得到用户的敏感数据, 那么他可以采用什么方法, 例如利用服务器上的已知漏洞, 获取服务器的权限. 了解了这一路径后, 那么就可以推到出一个Action就是我们要所有的服务器打布丁.

又例如前员工可以通过他之前的权限获取服务器的登陆权限, 那么我们需要做的一个Action就是完善我们的入职和离职流程,做好权限的管控和收集.

...

所以通过这样的方式就可以系统的梳理清楚整套系统中的漏洞点, 已经如何去fix这些漏洞. 回顾一下这三步, 第一步是识别我们的资产和威胁, 第二步是得到资产和威胁的交集, 第三部是得到资产,威胁已经漏洞的交集, 到底识别风险, 解除风险的目的.

所以Asset-Threat Mapping 的这种方法可以帮助我们系统化的梳理系统中的风险点, 这一点特别的有效.

STRIDE 模型

威胁建模的第二种常用的模型就是STRIDE模型, 是常用的威胁模型之一。

STRIDE 分别代表着

身份欺骗(Spoofing identity

篡改数据(Tampering with data

否认性(Repudiation)

信息泄露(Information disclosure)

拒绝服务(Denial of service)

提权(Elevation of privilege)。

这六种是最常见的攻击和威胁的方式. 关于STRIDE的具体介绍网上有很多的资料例如:

我这里就不再重复了, 关于使用STRIDE模型来进行威胁建模的具体操作方法, 我的建议是可以首先画出系统的架构图, 然后利用 OWASP提供的card game 来进行STRIDE威胁分析, 分别分析系统可能会遇到那些攻击, 然后根据分析的问题来进行解决.

小结

这篇文章介绍了两种实用的威胁建模的模型, 资产威胁匹配模型和STRIDE模型, 以及如何利用这两个模型来进行威胁建模, 希望能帮助大家找到合适的模型来进行威胁建模, 提高系统的安全性. 下篇文章会用一个真实的例子来展示如何进行一次威胁建模.