威胁建模完全指南:定义、方法与实例解析

本文深入解析威胁建模的定义、流程和六种主流建模方法(STRIDE、PASTA、LINDDUN等),涵盖威胁识别、评估与缓解策略,并介绍常用威胁建模工具,帮助构建更安全的应用程序和系统。

什么是威胁建模?定义、方法与示例

威胁建模是一种通过识别目标系统的安全弱点并实施相应对策来避免或减轻威胁影响的方法,用于提升应用程序、系统或业务流程的安全性。

威胁建模支持识别系统或组织的关键安全需求——包括关键资产、敏感数据和重要信息。这是一种详细且系统化的方法,用于识别潜在威胁和弱点,从而将IT资产面临的风险维持在最低水平。它还能帮助IT管理者理解威胁的影响、评估其重要性并实施防护措施。

威胁建模流程

威胁建模的全面性体现在它不仅涉及软件开发人员。要创建有效的威胁模型,您需要以下相关方的参与:

定义安全需求

在使用威胁建模工具和方法之前,您需要先确定本次活动的目标。目标通常基于以下标准制定:

  • 机密性:保护数据免受未经授权的披露
  • 完整性:避免未经授权的数据更改
  • 可用性:即使系统受到攻击,关键服务的提供能力也不受影响

列出您的可用性和性能服务级别协议(SLA)。如何保护专有资产和知识产权?现在的主要问题是您需要在威胁建模上投入多少时间和资金。

识别潜在威胁

此阶段涉及对构成系统的所有组件进行分类整理。一个完整应用程序的完善文档系统可以加速此过程。这可以通过用例、数据流、数据架构和部署图来实现。您可以创建两种类型的图表:

  • 数据流图:描述数据应如何在系统中流动。在功能层面,它显示数据在何处进入和离开每个组件,以及数据存储、处理过程、交互和信任边界
  • 流程流图:显示用户如何相互交互并在不同用例间推进。它处于应用程序级别。PFD关注用户和第三方与系统的交互,而DFD关注系统内部的工作方式。您可以同时使用其中一种或两种

既然您已经识别了应用程序中的主要参与者和资产,现在该继续进行威胁评估了。

威胁评估

您在上个阶段创建了图表来理解系统。在此阶段,您需要研究这些图表以掌握真正的威胁。此时,您应确定资产可能被破坏的各种方式,以及任何潜在攻击者的特征。这可以通过多种方式完成。在下一节中,我们将介绍六种最常见的威胁评估建模技术。

缓解威胁

当您完成威胁识别后,您将得到一个与每个资产及其操作相关的威胁专家列表或库,以及一个潜在攻击者配置文件列表。您现在需要确定您的应用程序面临哪些威胁。考虑本文第一部分介绍的示例。您会发现威胁是"暴力破解密码",而系统弱点是"使用MD5方法存储密码"。识别弱点后,您需要评估与每个弱点相关的风险。根据风险分析,您可以通过以下方式解决弱点:

  • 不采取任何措施(风险太低或威胁难以实施)
  • 消除相关功能
  • 减少功能的实用性或将其关闭
  • 获取新的代码、基础设施或设计改进

您还需要跟踪将在即将发布的版本中解决的弱点

威胁缓解验证

在验证过程中,您检查是否所有弱点都已解决。所有威胁是否都已消除?是否可以列出剩余威胁?之后,您应决定处理已识别威胁的后续措施,以及下一次威胁建模周期的日期。请记住,威胁建模是一个持续的过程。应在应用程序开发的特定阶段或定期进行。

为什么这很重要?

任何程序或系统都应构建为能够抵御攻击。然而,确定实现此目标所需的安全标准可能很困难。开发人员和用户的思维和行为方式与攻击者不同。

威胁建模是一种基本方法,用于识别通常无法通过代码审查或其他类型审计评估或发现的威胁。它使项目团队能够确定应用程序所需的安全控制措施,以及如何针对潜在威胁实施有效的对策并快速处理问题。该系统通过针对预期威胁,产生更安全的应用程序,并适当利用资源。

威胁模型是创建有效安全系统的重要方面。当威胁建模成为DevOps周期的一部分时,开发人员可以在开发维护阶段将安全性嵌入项目中。这消除了常见的疏忽,包括未能检查输入、认证薄弱、未正确处理错误以及未加密数据。

流行的威胁建模技术有哪些?

STRIDE威胁模型

STRIDE已成功应用于纯数字系统和数字物理系统。尽管STRIDE不再由微软维护,但它仍作为微软安全开发生命周期(SDL)的一部分与威胁建模工具一起使用。微软开发了一个类似的框架称为DREAD(损害潜力、可重现性、可利用性、受影响用户、可发现性),这也是一个助记符,但采用不同的方法来评估威胁。

PASTA威胁建模

2012年,攻击模拟和威胁分析过程(PASTA)被建立为威胁驱动的威胁建模范式。这是一个七步、攻击驱动的方法,在将技术要求与业务目标联系起来的同时考虑业务影响分析和合规要求。

LINDDUN

LINDDUN框架(可链接性、可识别性、不可否认性、可检测性、信息泄露、不了解、不合规)是一个信息安全框架。LINDDUN是一个六步隐私评估系统,遵循系统化方法。

LINDDUN的第一步是系统DFD,它描述了系统的数据流、数据存储、处理过程和外部实体。LINDDUN用户通过迭代每个模型元素并从威胁类别的角度分析它们,识别威胁与系统的相关性并生成威胁树。

攻击树

在纯数字系统、数字物理系统和纯物理系统上,使用攻击树模拟威胁是最古老和最广泛使用的方法之一。攻击树最初作为独立方法使用,现已与其他方法和框架结合。

攻击树是描述系统攻击的树状表示。攻击的目的是到达树根,而叶子是到达的路径。每个目标都被描述为自己的树。根据系统威胁分析,生成一组攻击树。

TRIKE威胁模型

Trike是一个使用威胁建模作为方法的安全审计框架。它从威胁管理和防御两个角度审视威胁建模。

与许多其他方法一样,Trike从定义系统开始。分析师通过列出和理解系统的参与者、资产、预期行动和规则来创建需求模型。此阶段构建一个参与者-资源-行动矩阵,列中是资源,行中是参与者。

每个矩阵单元格分为四个部分,分别对应每个CRUD操作(创建、读取、更新和删除)。

OCTAVE

OCTAVE(运营关键威胁、资产和脆弱性评估)方法是一个基于威胁的框架,用于评估和规划网络安全策略。SEI的CERT部门于2003年创建了它,并在2005年更新。OCTAVE是一种专注于组织而非技术风险的威胁评估方法。三个主要组成部分是运营风险、安全策略和技术。

  • 创建基于资产的威胁配置文件(这是对组织的评估)
  • 确定基础设施的脆弱性(这是对信息系统的审视)
  • 制定安全策略和计划(识别对组织战略资产和方向的威胁)

VAST

ThreatModeler是一个自动化威胁建模平台,是可视化、敏捷和简单威胁(VAST)建模方法的基础。其灵活性和可用性使其能够在大型企业的整个基础设施中实施,为许多相关方产生可操作且一致的结果。

VAST需要创建两种类型的模型:应用程序威胁模型和运营威胁模型,以说明开发和基础设施团队之间的操作和关注点差异。应用程序威胁模型使用流程流图来描述架构视角。DFD用于从攻击者的角度开发运营威胁模型。这种方法允许VAST集成到组织的开发和DevOps生命周期中。

Persona non Grata

Persona non Grata(PnG)是一个关于人类攻击者动机和能力的游戏。它将用户标记为可能滥用系统的模型,迫使分析师从意外使用的角度考虑系统。

PnG可以支持从敌人角度理解威胁,这在威胁建模的早期阶段很有用。目的是向技术专家介绍潜在的系统攻击者,以便分析攻击者的能力、动机和目标。这项研究帮助专家从攻击者的角度理解系统的弱点。PnG适用于使用角色的敏捷方法。

hTMM

2018年,SEI建立了混合威胁建模方法(hTMM)。它包括SQUARE、安全卡片和PnG练习。该方法的预期特征包括:无假阳性、无遗漏威胁、无论谁进行威胁建模都能获得一致结果,以及成本效益。

该方法的主要步骤如下:

  • 确定将要进行威胁建模的系统
  • 根据工程师建议应用安全卡片
  • 排除不太可能发生的PnG(即没有合理的攻击向量)
  • 借助工具总结发现
  • 继续使用传统的风险评估过程

qTMM

这种混合方法和谐地结合了攻击树、STRIDE和CVSS。它试图解决数字物理系统及其组件间复杂相互依赖关系的一些关键威胁建模困难。

对于STRIDE的五个威胁类别中的每一个,定量威胁建模方法(Quantitative TMM)首先生成组件攻击树。此活动展示了攻击类型与低级组件属性之间的关系。然后使用CVSS方法计算树组件的分数。

威胁建模的好处

当有效执行时,威胁建模可以通过在软件项目中提供清晰的视图来帮助证明安全工作的合理性。组织可以使用威胁建模方法来记录已知的应用程序安全问题,并就如何处理它们做出明智决策。否则,决策者可能基于极少证据做出草率结论。

总体而言,一个完善的威胁模型提供了有用的保证,可用于解释和捍卫应用程序或计算机系统的安全状况。当开发组织关注安全时,威胁建模是执行以下操作的最佳方法:

  • 在软件开发生命周期(SDLC)的早期发现问题——甚至在编写任何代码之前
  • 识别标准测试和代码审查可能遗漏的设计问题
  • 分析您可能未曾考虑过的新型攻击
  • 帮助确定测试和代码审查的优先级,可以帮助您充分利用测试预算
  • 确定安全要求
  • 通过在软件发布前解决问题,避免昂贵的部署后重新编码
  • 考虑常规攻击以外的风险,如特定于您的应用程序的安全弱点
  • 使系统领先于可能对您的应用程序构成威胁的内部和外部攻击者
  • 通过突出资产、威胁主体和控制措施,确定攻击者将针对哪些组件
  • 通过模拟威胁主体的位置、动机、能力和技能,结合系统架构发现潜在攻击者

威胁建模工具

威胁建模是一项艰巨的任务。存在无数潜在威胁。即使项目很小,使用威胁建模工具来节省时间和金钱也是有意义的。

威胁建模工具通过降低复杂性使过程更加结构化和可重复。这减少了从头开始构建威胁模型并长期维护它所需的资源。一个好的威胁建模工具允许用户查看、规划、准备和预测各种威胁。以下是工具中应寻找的一些主要特性:威胁情报流以确保评估最新识别的威胁;带有建议缓解方案的威胁仪表板;连接到问题跟踪器(如Jira)的缓解仪表板;以及用于合规性和相关方的报告。

以下是一些最常用的威胁建模工具:

  • CAIRIS:一个免费软件平台,使用有关潜在攻击的情报来衡量攻击面,并验证已知安全缺陷和潜在GDPR合规性问题的计划
  • IriusRisk:一个概念模型威胁建模工具,具有自适应问卷,引导用户完成应用程序的技术设计、计划功能和安全上下文
  • Microsoft威胁建模工具:一个帮助您建模威胁的程序。这个免费工具面向非安全专业人士设计。作为微软安全开发生命周期的一部分,它提供了关于创建和分析威胁模型的指导。它使用标准文档描述系统组件、数据流和安全区域,使得基于软件结构识别威胁类型变得容易
  • OWASP的Threat Dragon:这个开源应用程序可作为在线或桌面应用程序使用。它跟踪潜在威胁,确定缓解策略,并向用户显示威胁模型组件和威胁面
  • SD Elements:这个Security Compass工具根据弱点收集和组织系统信息,生成审计就绪的报告
  • Threagile:这是一个免费开源的集成开发环境,将威胁建模纳入应用程序代码库。它可用作命令行应用程序、Docker容器或REST服务器
  • ThreatModeler:在本地、云安全和应用程序安全版本中自动化威胁建模。使用预构建的架构模板帮助识别、预测和分类威胁,促进集成

结论

无论使用何种工具,只要应用程序、IT系统或威胁环境发生变化,威胁建模过程就应重新进行。随着新威胁的出现,这保持了威胁模型的时效性。

威胁分析需要时间和精力。这不是一个清单式的练习,但在攻击者之前发现并修复弱点总是更好的,而威胁建模方法是实现这一目标的最佳途径。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计