作为风险管理策略的一部分,识别系统面临的安全威胁是缓解潜在漏洞的重要步骤。但就其本身而言,识别威胁并不足以抵御攻击。
IT团队和安全工程师必须通过利用威胁建模来更进一步,以主动、系统地评估和防御组织面临的各种威胁。下文将介绍威胁建模的含义、工作原理、主流威胁建模框架、工具以及优秀实践。
什么是威胁?
威胁是一个或一组恶意行为者认为妥协解决方案是有价值的。不同的威胁行为者将有不同程度的动机和技能来利用漏洞。而漏洞的可用性将取决于对现存事物的了解、所需的访问级别以及已实施的任何缓解措施。
出于讨论目的,我们将假设以下主要威胁行为者:
- 高级持续威胁(APT)——高能力、高积极性、高容量,包括直接或间接由国家支持的团体,例如一些有组织的犯罪集团(OCG);
- 组织的犯罪集团(OCG)——能力不等、动机不同、容量有限,非国家支持的团体;
- 动机型外部个体——能力不等、动机不同、容量有限,不同的赞助体
- 内部威胁——可以直接访问解决方案的设计、实施、操作或使用的人员。
什么是威胁建模?
威胁建模是一种基于工程和风险的方法,用于识别、评估和管理安全威胁,旨在开发和部署符合企业组织安全和风险目标的更好软件和IT系统。它可以分为几个不同的阶段:
- 威胁识别:团队通过了解自己的系统可能容易受到哪些威胁来开始威胁建模。
- 威胁评估:识别威胁后,团队评估每个威胁,以确定它们变成真正攻击的可能性,以及这种攻击的影响。
- 缓解计划:一旦威胁得到充分评估,组织就能确定可以采取哪些步骤来防止每个威胁变成成功的攻击;
- 缓解实施:然后组织可以实施缓解策略以提供针对威胁的主动防御;
- 反馈和改进:最后一步是确定整个威胁建模过程的运行情况,然后采取措施进行改进。如果团队未能预见到导致攻击的某些威胁类型,或是没有实施适当的威胁缓解措施,那么在此阶段可以着手解决这些问题。
通过遵循这些步骤,团队可以采取系统的、高度结构化的方法来识别威胁,作为其软件开发生命周期的一部分。他们还能获得主动威胁响应能力,而非坐等实际攻击开始再计划响应措施。
威胁建模可应用于任何类型的IT资源。您可以在应用程序、服务器、本地环境、公共云等上执行威胁建模。
威胁建模还可用于帮助管理任何类型的威胁——从DDoS和勒索软件攻击到内部威胁和意外的数据泄露,威胁建模技术是在风险引发现实安全事件之前提前进行预防的有效方法。
也就是说,威胁建模技术可能会因您关注的资源和威胁类型而异。例如,适用于本地环境的威胁管理策略,在某些重要方面与适用于公共云的威胁管理策略不同,因为组织与云服务提供商建立了责任共担模型,因此需要不同的缓解策略。
威胁建模的意义
通过对安全威胁进行系统的、结构化的响应,威胁建模有一系列优势:
- 威胁优先级——有些威胁比其他威胁更严重。例如,针对开发/测试环境的威胁可能不如影响生产系统的威胁那么严重。 评估每个威胁的潜在严重性有助于团队确定在缓解过程中优先考虑哪些威胁;
- 主动响应——如上所述,威胁建模允许组织采取主动的方法进行威胁管理。他们可以比攻击者领先一步,而非等待攻击发生然后才做出响应;
- 识别新的威胁类型——随着攻击者不断发现新的漏洞并开发新的漏洞利用技术,威胁形势正在不断变化。通过允许团队评估可能影响他们的现有威胁,威胁建模能够帮助企业领先一步识别新兴威胁;
- 改进安全态势——有时,缓解威胁的最佳方法是更改您的系统设计。例如,也许您有一个面向公众的资源,可以将其移到防火墙后以缓解基于网络的安全风险。在这些情况下,威胁建模可帮助企业采取措施强化其基础安全态势并减少攻击面;
- 更有效地利用资源——可用于IT安全的资源总是有限的。通过启用系统化的威胁管理方法,威胁建模可帮助企业从现有资源中获取最大程度的保护力度;
- 沟通——威胁建模使团队更容易以一致、集中的方式就威胁进行沟通。与其只关注可能影响各自管理的特定系统的威胁,每个工程师和开发人员团队可以在整个组织内共享威胁评估信息和见解,并共同努力缓解它们;
- 证明对安全性的承诺——执行威胁建模的简单行为有助于证明企业非常重视安全。这对于审计和合规目的可能很重要,尤其是在合规要求包括需要组织采取合理措施来保护敏感数据和应用程序的情况下。
威胁建模优秀实践
最有效的威胁建模策略需要植根于以下几个核心优秀实践:
(1) 与其他团队合作
在许多企业中,IT组织分为不同的团队,每个团队管理自己的系统和资源。
与其让每个团队创建自己的威胁模型并根据需要缓解威胁,不如努力在整个组织内就威胁建模进行协作。很可能一个团队面临的一些威胁也会影响其他团队。在威胁建模方面进行协作可以更有效地利用资源,同时还允许团队分享可能促成更有效的威胁缓解策略的见解。
(2) 整体地评估威胁
通常情况下,对一种资源的威胁可能会导致对下游资源的间接威胁。例如,如果攻击者破坏应用程序,对应用程序的威胁也可能危及应用程序访问的数据。
出于这个原因,重要的是要整体地评估威胁,而非孤立地评估。评估每个威胁的潜在严重性,不仅要根据它所威胁的主要资源,还要根据它可能对企业造成的整体损害。
同样地,需要采取措施在多个层面减轻威胁。例如,如果针对应用程序安全的威胁对数据安全造成了间接损害,那么您可以在应用程序和数据中采取措施来帮助缓解威胁。您可能需要对应用程序进行双重身份验证以降低违规风险,同时还需要实施数据的异地备份,以便在应用程序违规允许攻击者访问数据的情况下,您能拥有一份干净的副本并以此拒绝赎金勒索。
(3) 全面思考威胁
将威胁建模重点放在与最近备受瞩目的攻击相关的威胁上,或者您的企业过去面临的威胁上,这可能听起来很合理。但是,最好的威胁建模策略需要涵盖可能影响业务的每一个威胁——无论它的新闻价值如何,或者它过去是否曾转化为现实攻击。在识别威胁时,不仅要查看网络安全博客以了解最近的违规情况,还要查看威胁数据库和威胁情报报告,以深入了解您的团队可能不会考虑的威胁类型。
(4) 在开发生命周期的早期执行威胁建模
创建威胁模型的最佳时间是在项目或应用程序开发实践开始时。那时,在您的系统中建立威胁防御能力相对更容易。
如果您等到已经编写了代码,或者(更糟)等到它已经部署到生产环境中,您可能会发现实施最佳威胁缓解措施要困难得多。这样做可能需要更改您的代码,这意味着您必须重新构建、重新测试和重新部署,这无疑是一个耗时且低效的过程。
(5) 超越应用程序进行思考
在执行威胁建模时,很容易只关注应用程序,而非应用程序所在的更广泛的环境。毕竟,应用程序通常是您用户体验的核心。其他一切都只是陪衬。
但在安全性方面,环境任何层和开发生命周期任何阶段的威胁都可能变成漏洞。这就是为什么您不仅应该考虑您的应用程序,还应该考虑针对托管它们的服务器或云基础设施的威胁。如果您在容器中部署应用程序,那么还必须考虑对容器注册表、容器映像和容器编排工具的威胁。并且不要忘记可能影响数据的威胁,例如配置不当的IAM角色可能会将您的云存储桶暴露给公众。
威胁建模方法
有多种方法可用于帮助团队构建其威胁建模流程:
(1) 攻击树(Attack tree):使用这种方法,可以将威胁建模为一组路径(或树),以确定哪些资源会受到与每个威胁相关的攻击的影响。当拥有大量高度相互依赖的资源,并且想知道哪些直接和间接威胁会影响每个资源时,攻击树非常有用。
(2) 安全卡(Security card):安全卡技术采用开放式方法进行威胁建模。它基于一组42张卡片,询问有关组织面临的威胁问题。通过处理这些卡片,团队可以思考他们面临的威胁以及缓解这些威胁的策略。
(3) PASTA(攻击模拟和威胁分析流程):PASTA技术专注于帮助团队根据业务优先级评估威胁。它首先确定业务目标和支持它们所需的技术资源。然后,团队确定哪些威胁可能会影响这些资源——进而,他们会发现可能危及业务优先级的威胁。它由七个步骤组成,且每个步骤都非常复杂,由多个子步骤组成,但是总体顺序如下:
- 定义目标;
- 定义技术范围;
- 应用程序分解;
- 威胁分析;
- 漏洞和弱点分析;
- 攻击建模;
- 风险与影响分析。
(4) STRIDE:是威胁建模之父,最早于90年代末由微软提出。STRIDE代表六种威胁,每种威胁都违反了 CIA的变体的特定属性:
- 欺骗(Spoofing),冒充真实性的他人或计算机;
- 篡改数据(Tampering),破坏完整性;
- 抵赖(Repudiation),或无法将您执行的操作链接到您,这违反了不可抵赖性;
- 信息泄露(Information Disclosure),违反机密性;
- 拒绝服务(Denial of Service),违反了可用性;
- 特权提升(Privilege Escalation),违反授权;
STRIDE方法背后的核心概念是按类型划分威胁,然后根据威胁所属的类别对每个威胁做出响应。
威胁建模工具
威胁建模工具集成了一组核心功能,用于在单个平台内发现、分析和缓解威胁。威胁建模工具的主要功能包括:
- 威胁情报数据:威胁情报是关于已知威胁的信息。它通常是从主要漏洞数据库中收集的,例如NIST国家漏洞数据库和MITRE的通用攻击模式枚举和分类(CAPEC)。
- 威胁可视化:大多数威胁建模工具都提供可视化功能,例如将威胁映射到IT环境不同部分的图表,以帮助团队分析威胁。
- 威胁监控:监控功能(例如仪表板)允许团队跟踪他们已识别的威胁并验证威胁是否得到有效缓解。
- 报告:通过生成有关威胁的报告,组织可以跟踪其威胁识别和缓解效果。
许多软件供应商提供的工具都具有旨在帮助团队执行威胁建模的功能。 例如,Microsoft威胁建模工具是一种可下载的Windows桌面应用程序,是一种流行的选择;ThreatModeler是一个类似的基于Web的威胁建模平台;OWASP的Threat Dragon和pytm工具是广泛使用的开源威胁建模工具。
威胁建模用例
想要了解如何将威胁建模付诸实践,了解一些常见的用例或实际威胁建模示例可能会很有帮助。
(1) 云威胁建模
当工作负载从本地迁移到云端时,面临的威胁可能会发生巨大变化。缺乏物理安全性的问题基本上消失了,但出现了诸如不安全的IAM配置之类的新威胁。
团队可以使用云威胁建模,来帮助识别和管理在云迁移期间和之后影响工作负载的风险。通过这种方式,云威胁建模使他们能够预测如果坚持使用与本地相同的安全策略将无法解决的风险。
(2) 网络威胁建模
网络传播的威胁在范围和形式上可能会有很大差异,具体取决于网络的配置方式以及它们对公共互联网的暴露程度。使用虚拟网络等云服务无疑又为网络威胁增加了另一层复杂性。
专注于网络的威胁建模提供了一种评估和管理这些威胁的方法。它还可以帮助团队了解其网络架构固有的安全优势和劣势,并采取措施进行改进。
(3) 容器的威胁建模
将工作负载从虚拟机转移到容器也会带来新的威胁,例如恶意软件可能潜入容器映像或不安全的容器注册表访问控制。对这些威胁进行建模使团队能够识别、理解并采取措施缓解可能影响容器化环境的特殊威胁。
结语
简而言之,威胁建模使企业能够领先于安全威胁,无论威胁采取何种形式或针对哪种类型的资源。虽然威胁建模需要一些前期的时间投资,但当它允许团队主动响应威胁时,将产生巨大的好处。相较于不加以控制可能带来的高昂攻击代价,还是值得投入的!
原文链接:https://cloudsecurityalliance.org/blog/2022/04/21/threat-modelling-what-it-is-and-why-it-matters/