当前位置: 首页 > 科技观察

威胁建模的主流框架、工具和良好实践

时间:2023-03-18 21:39:32 科技观察

了解威胁建模框架、方法和工具可以帮助您更好地识别、量化和排序您面临的威胁。威胁建模是一个结构化过程,IT专业人员可以通过该过程识别潜在的安全威胁和漏洞,量化每个威胁的严重性,并确定缓解攻击和保护IT资产的技术的优先级。这个宽泛的定义听起来像是网络安全专业人员的工作描述,但威胁模型的重要之处在于它是系统的和结构化的。威胁建模人员将执行一系列特定步骤,以全面了解他们试图保护的IT环境,识别漏洞和潜在攻击者。总的来说,威胁建模在某种程度上仍然是科学与艺术的结合,并且没有针对威胁建模过程的单一规范。威胁建模的实践借鉴了各种早期的安全实践,最著名的是1990年代开发的“攻击树”概念。1999年,Microsoft员工LorenKohnfelder和PraeritGarg在公司内部分发了一份名为“对我们产品的威胁”1的文档,许多人认为这是对威胁建模的第一个明确描述。Kohnfelder和Garg将他们的提议称为“STRIDE框架”,我们将在本文后面讨论它的详细信息。今天,我们有各种各样的威胁建模框架和方法,它们的侧重点各不相同,其中一些特定于特定的安全技术领域,例如应用程序安全。在本文中,我们将帮助您了解所有这些方法的共同点,以及哪种特定技术可能适合您。威胁建模过程和步骤每种威胁建模方法都包含一系列步骤,我们将在本文后面讨论每个步骤的细微差别。首先,我们将了解所有这些方法共有的基本逻辑流程。威胁建模过程最简洁的概述之一来自软件工程师GoranAviani,他指出威胁模型的目的是回答四个问题:我们在处理什么?可能的问题(威胁)是什么?我们该怎么做呢??我们做得好吗?反过来,威胁建模过程应包括四个主要步骤,每个步骤都将回答其中一个问题。分解应用程序或基础设施识别威胁识别对策和缓解措施威胁排名为了准确理解这些步骤中的每一个,我们需要讨论构成威胁建模基础的具体技术。也许上面列出的步骤最陌生的术语是分解。分解应用程序或基础设施意味着什么?从广义上讲,根据软件工程师AndreaDellaCorte的说法,分解应用程序涉及“了解应用程序及其与外部实体的交互方式。这涉及创建用例以了解应用程序的使用方式,确定入口点以查看潜在攻击者可以在何处进行交互与应用程序一起识别资产(即攻击者可能感兴趣的项目/区域),并确定代表应用程序将授予外部实体的访问权限的信任级别”(他在这里专门谈论应用程序安全性,但显然这也适用于广义上的基础设施视图。)分解应用程序的一种技术是构建数据流图。它是20世纪70年代开发的一种方法,可以直观地显示数据如何在应用程序或系统中移动,以及各个组件在何处更改或存储数据。其中,信任边界的概念是在2000年代初期加入的,具体指的是s数据流中的转折点,在该点需要验证数据,然后才能由接收数据的实体使用数据。信任边界是使用数据流图进行威胁建模的关键。网上银行应用程序的数据流图示例下图是网上银行应用程序的数据流图;虚线表示信任边界,其中数据可能会被更改并且需要采取安全措施。网上银行应用程序的数据流图(作者:WeiZhang和MarcoMorana,在OWASP许可下分发)可以在此Microsoft文档2中找到更深入的数据流图威胁建模方法。由于数据流图是由系统工程师而非安全专家开发的,因此它们包含威胁建模不需要的大量开销。数据流图的替代方法是过程流图。两者在一般概念上相似,但后者更精简,侧重于用户和执行代码如何在系统中移动,更接近于攻击者的思维方式(如下例)。绘制攻击树也是一种威胁建模技术,当您确定对您的应用程序或基础架构的潜在威胁的阶段时,它变得非常重要。上世纪90年代末,信息安全传奇人物BruceSchneier首创了攻击树。它们由一系列代表不同事件的父节点和子节点组成,其中子节点是父节点为真的必须满足的条件。根节点(图中最高的父节点)是攻击的总体目标。通过攻击树,威胁建模者可以看到哪些情况必须结合在一起才能使威胁成功。下图显示了银行应用程序的简单攻击树,说明了病毒可能成功感染文件的不同方式。下图是Hackinthebox从攻击者的角度构建的攻击树示例,可以帮助大家了解自己面临的威胁。威胁建模框架和方法威胁建模的各种结构化方法通常称为框架或方法(这两个术语在本文中主要互换使用)。目前有很多威胁建模框架和方法,我们将介绍一些最流行的如下:1.7大威胁建模方法STRIDEDREADPASTAVASTTrikeOCTAVENIST2。STRIDE威胁建模如上所述,STRIDE是一种威胁建模方法。mod之父,于90年代末在Microsoft首次开发。STRIDE代表六种威胁,每一种都对CIA的三个要素构成威胁,具体如下:欺骗或冒充他人或计算机,影响真实性篡改数据,破坏完整性拒绝,或无法链接执行的动作对运营商而言,这违反了不可否认性信息披露,违反了机密性拒绝服务,违反了特权的可用性升级,违反了授权3.DREAD威胁建模DREAD被认为是STRIDE模型的附加组件,它使建模者能够确定在威胁之后对他们进行排名。对于每个潜在威胁,DREAD代表六个问题:潜在损害:如果被利用,会造成多少损害?再现性:攻击再现的难易程度?可利用性:发动攻击有多容易?受影响的用户:大约有多少用户受到影响?可发现性:找到漏洞有多容易?这些问题中的每一个都按照1-3的等级进行评分。4.PASTA威胁建模PASTA代表攻击模拟和威胁分析过程,这是一个七步过程,致力于使技术安全要求与业务目标保持一致。每个步骤都非常复杂,由几个子步骤组成,但总体顺序如下:定义目标定义技术范围应用程序分解威胁分析漏洞和弱点分析攻击建模风险和影响分析5.VAST威胁建模VAST代表Visual,敏捷威胁建模。该模型是ThreatModeler的基础,ThreatModeler是一个自动化威胁建模平台,可区分应用程序和操作威胁模型。VAST旨在集成到围绕devops构建的工作流中。6.Trike威胁建模Trike是一个威胁建模和风险评估框架的开源工具,它基于防御的角度,而不是试图模仿攻击者的思维过程。使用Trike,您可以对您想要保护的系统进行建模,并从CRUD的角度评估每个组件,即谁可以创建、读取、更新或删除该实体。威胁是通过遍历数据流图来识别的,每个威胁都只分为两类:拒绝服务或特权升级。7.OCTAVE威胁建模OCTAVE代表“运营关键威胁、资产和漏洞评估”,是卡内基梅隆大学开发的一种威胁建模方法,侧重于组织风险而非技术风险。它包括三个阶段:构建基于资产的威胁概况识别基础设施漏洞制定安全策略和计划8.NIST威胁建模美国国家标准与技术研究院有自己的以数据为中心的威胁建模方法,包括四个步骤:系统以及数据识别和表征识别和选择要包含在模型中的攻击向量表征减轻攻击向量的安全控制分析威胁模型NIST草案还包括该方法的具体应用示例。如果您正在寻找威胁建模示例,那么阅读此文档可帮助您了解该过程的工作原理。威胁建模良好实践无论您选择哪种框架,都应遵循一些实践。但最重要的(而且通常很难做到)是将威胁建模作为系统开发过程中的优先事项。在项目开发的早期这样做可以避免以后的很多麻烦,因为安全性可以深入“内置”到应用程序或系统中。另一个最佳实践是不要将应用程序和系统彼此隔离。MichaelSantarcangelo写道:“如果各种威胁模型以相同的方式互连,并且应用程序和组件作为IT系统的一部分进行交互,结果将是一个全面的攻击面,CISO可以使用它来了解整个整体威胁组合。”我们还敦促您避免常见的威胁建模错误。简而言之:不要过于关注头条新闻中的威胁;不要忘记您的用户可能是所有人中最大的无意威胁;并且不要忘记威胁模型应该是需要不断更新的“活”文档。威胁建模工具需要指出的是,上面列出的两种方法(VAST和Trike)实际上是围绕特定软件工具构建的。还有一些工具可以支持其他方法,例如,Microsoft提供了免费的威胁建模工具,OWASP基金会推出了自己的桌面版和Web版威胁建模工具ThreatDragon3。实际上,这里描述的许多方法都是概念性的,并没有绑定任何软件都可以用纸笔画出攻击树或数据流图。正如LucaBongiorni在演讲中所解释的那样,一些最流行的威胁建模工具是MicrosoftVisio和Excel。开始对您的基础设施进行威胁建模的进入门槛很低,但回报很高。参考资料:原始威胁建模论文:https://www.microsoft.com/security/blog/2009/08/27/the-threats-to-our-products/使用STRIDE方法发现安全设计缺陷:https://www.microsoft.com/security/blog/2009/08/27/the-threats-to-our-products/://docs.microsoft.com/en-us/archive/msdn-magazine/2006/november/uncover-security-design-flaws-using-the-stride-approachOWASP威胁建模工具ThreatDragon:https://owasp.org/www-project-threat-dragon/【本文为专栏作者“平安牛”原创文章》,转载请通过安全牛(微信公众号id:gooann-sectv)获得授权】点此查看作者更多好文