什么是威胁建模?

威胁建模是一种提前识别应用程序架构中可能存在的漏洞的方法。 它包括绘制应用程序的图表,识别安全缺陷,并减轻这些缺陷。

学习目标

阅读本文后,您将能够:

  • 定义威胁模型
  • 描述威胁建模的四个主要步骤
  • 比较常见的威胁建模方法

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是威胁建模?

威胁建模是一种在应用程序及其环境中寻找安全漏洞的练习。 它涉及创建一个具有所有组件的应用程序的代表,然后确定薄弱点。 理想情况下,开发人员和安全工程师在整个软件开发过程中使用威胁建模--在应用程序上线之前,而不仅仅是上线之后。 威胁建模可以帮助使应用程序比其他情况下更安全,但不应该期望它能使应用程序坚不可摧。

在抢劫电影中,主角经常研究他们计划抢劫的设施的蓝图,找出薄弱环节--建筑物可以进入的地方,安全摄像机看不到的角度,等等。 同样,威胁建模就像检查给定应用程序的"蓝图。" 不同的是,威胁建模是由希望保持应用安全的人完成的,而不是由可能的抢劫者完成的。

威胁建模要求团队创建一个完整的应用程序视图。 然后,它涉及到像一个可能想妥协的人那样思考问题。 攻击者会怎么做? 他们也许会利用薄弱的 API安全? 他们会不会使用 供应链攻击 来感染一个综合系统库? 虽然不是所有的攻击都能被预测到,但威胁建模有助于在它们发生之前阻止其中一些攻击。

威胁建模的步骤是什么?

威胁建模有很多可能的方法,没有一种方法可以适用于所有情况。 但通常涉及这四个主要步骤:

1. 评估和绘制应用程序的图表

威胁建模者试图识别和描绘:

  • 一个应用程序的组成部分,包括数据库服务器、网络服务器、网关、库和用户界面。
  • 这些组件的连接方式,如用于交换数据的 协议 ,以及在传输中保护该数据的任何 加密

如果Terry写了一个显示气球图片的简单应用,他的应用图可能如下:

威胁建模的简单例子:应用界面、网关、网络服务器、数据库和连接的图示

请注意,这是一个大大简化的例子,真正的威胁建模应用图可能要复杂得多。

2. 识别应用程序构建中的安全缺陷

看到以这种方式布置的应用程序可以使其更容易识别缺陷。 例如,特里可能会注意到,他的气球照片数据库和他的网络服务器之间的通信没有使用 运输层安全(TLS)。 这意味着两个服务器都没有通过数字签名验证对方的身份,这使得攻击者有可能冒充数据库服务器并向网络服务器发送恶意内容。

威胁建模的简单例子:网络服务器和数据库之间的连接没有被加密

3. 做出修改,修复这些缺陷

由于威胁建模发生在整个开发过程中,减轻缺陷可能意味着改变应用程序的架构计划,或对正在构建的应用程序部署修复。

为了减轻他发现的威胁,Terry可以重新配置他的数据库服务器和网络服务器,使其使用TLS进行连接--或者更好的是,使用 相互TLS(mTLS) ,并相互验证。

威胁建模的简单例子:网络服务器和数据库之间的连接现在安全了

4. 验证这些变化已经被应用并正确地缓解了威胁。

在这一点上,Terry可能会在测试环境中运行应用程序,并检查1)服务器是否按照配置使用了TLS,以及2)Web服务器是否会接受来自未经验证的服务器而不是数据库服务器的HTTP流量。 他将对他所应用的任何其他缓解措施进行类似检查。

有哪些不同的威胁建模方法?

威胁建模方法是一种识别威胁的方法。 方法论为威胁建模过程提供了结构,否则在一个复杂的系统中可能会被淹没。 企业可以从广泛的威胁建模方法中进行选择,甚至可以开发自己的方法。 几种最常见的方法包括:

  • STRIDE: 这种方法由微软开发,是一种识别安全威胁的记忆法。 "STRIDE" 的字母代表"欺骗, 篡改、抵赖、 信息披露, 拒绝服务, 特权提升。" 。 ("Repudiation" 这里指的是无法验证数据的来源和完整性。) 这个想法是要在整个应用程序的架构中寻找这六种特定类型的威胁。
  • PASTA: 这代表了"攻击模拟和威胁分析的过程。" PASTA是一个识别、列举和评分威胁的七步程序。
  • VAST: 视觉、敏捷和简单威胁(VAST)方法与ThreatModeler(一种自动化威胁建模软件产品)有关。
  • SQUARE: 安全质量要求工程(SQUARE)方法有助于在开发过程的早期确定安全问题。

还有其他几种威胁建模的方法。 其中一些,如"Trike" 和各种混合方法,甚至没有首字母缩写。

威胁建模何时进行?

威胁建模的目的是在软件开发之前和期间,在应用程序的整个生命周期内进行。 如果一个应用程序在没有任何威胁建模或缓解的情况下发布,安全缺陷可能会在安全团队发现之前被用户--或攻击者--发现。 这可能导致 数据泄露 ,并引入更大的风险 zero-day 威胁

然而,由于威胁建模并不能发现系统内的所有风险,即使在发布之后,开发者和组织也应该继续这一过程。 除了威胁建模之外,他们还可以通过以下方式来实现:

  • 威胁搜索: 这涉及主动搜索针对系统的威胁。 威胁搜索 ,可以是由安全分析师进行的手动调查过程,也可以是由安全工具完成的自动过程,或者是两者的结合。
  • 渗透测试: 渗透测试,或称笔测试,是一种安全演习,道德黑客试图寻找和利用计算机系统的漏洞。 为了有效,渗透测试应该由事先不了解系统的人进行,因此必须与威胁建模过程完全分开进行。 通常情况下,那些建造应用程序的人离它太近了,无法识别所有的缺陷,就像一个安全设施的建筑师可能没有预见到让一队强盗在抢劫电影中闯入的缺陷。
  • 其他应用安全措施: 应用安全 是一门复杂的学科。 任何系统或应用程序都不应被认为是完全安全的。 网络应用防火墙(WAF) ,可以在很大程度上保证网络应用的安全。

Cloudflare还提供了一个 威胁情报 和运营服务Cloudforce One,以保护客户免受最新威胁。 Cloudforce One由一个世界级的威胁研究团队领导,该团队在瓦解全球规模的攻击者方面具有丰富的经验。 在此了解Cloudforce One的情况