威胁建模介绍

Who? What? When? Why? How?

1 谁做/需要做威胁建模?

2 什么是威胁建模

利用抽象来帮助思考风险
威胁建模是通过识别目标和漏洞来优化系统安全,然后定义防范或减轻系统威胁的对策的过程。
威胁建模是分析应用程序安全性的一种方法。这是一种结构化的方法,使您能够识别,量化和解决与应用程序相关的安全风险。威胁建模不是代码审查方法,但却是对安全代码审查过程的补充。在 SDLC 中包含威胁建模可以帮助确保从一开始就以内置的安全性开发应用程序。这与作为威胁建模过程一部分的文档相结合,可以使审阅者更好地理解系统。这使得审阅者可以看到应用程序的入口点以及每个入口点的相关威胁。威胁建模的概念并不新鲜,但近年来有了明显的思维转变。现代威胁建模从潜在的攻击者的角度来看待系统,而不是防御者的观点。微软在过去的几年里一直是这个过程的强有力的倡导者。他们已经将威胁建模作为其SDLC的核心组件,他们声称这是近年来产品安全性提高的原因之一。
当在SDLC之外执行源代码分析时(例如在现有的应用程序上),威胁建模的结果通过推广深度优先方法与宽度优先方法来帮助降低源代码分析的复杂性。您可以不用同等重点地审查所有源代码,而是将安全代码评估放在优先级上,这些组件的威胁建模已经排在高风险威胁之下。

3 在软件开发安全生命周期中进行威胁建模

威胁建模可以在软件设计和在线运行时进行, 按照“需求-设计-开发-测试-部署-运行-结束”的软件开发生命周期,威胁建模在新系统/新功能开发的设计阶段,增加安全需求说明,通过威胁建模满足软件安全设计工作;如果系统已经在上线运行,可以通过威胁建模发现新的风险,作为渗透测试的辅助工作,尽可能的发现所有的漏洞。

4 为什么要做威胁建模?

5 如何做威胁建模

5.1 图表

5.2 威胁分析

5.3 缓解措施

缓解模式,举些例子:

5.4 威胁建模过程

OWASP的方法也是介绍了风险值的计算方法,详细说明见:https://www.owasp.org/index.php/Application_Threat_Modeling

6 实际的威胁建模示例

以简单的用户登录情况示例

  1. 设定场景
    用户使用浏览器登录Web应用系统,登录时检查是否为HTTPS请求,如果不是重定向到HTTPS,用户提交用户名和密码到应用服务器,应用服务网从后台数据库查询是否为正确的输入,如果用户名和密码正确,则认证成功,登录用户自己的首页界面。
  2. 图表化过程
    使用微软的建模工具辅助作图,过程见下图:
  3. 识别威胁
    结合本文 STRIDE 介绍部分,外部实体 User 可能存在欺骗、否认的威胁,否认可能是用户否认某次登录请求。
    过程“提交登录请求”可能存在篡改、拒绝服务威胁,篡改可以是拦截非 HTTPS 请求重定向到一个钓鱼站点。
  4. 缓解措施
    根据识别的威胁分析可以实施的缓解措施,最后整理成报告格式,可以用表格描述(下图只是个示例)

7 威胁建模工具

8 攻击库

参考

源链接

Hacking more

...