网络安全的本质是攻防双方的对抗与博弈。然而,由于多种攻防之间的不对称性因素存在,使得攻击者总能在对抗过程中抢占先机。为了更好地了解潜在的威胁和缺陷,实现主动式防御,企业需要重新考虑他们的网络防护方法,而威胁建模(Threat modeling)正是网络安全武器库中关键防御武器。
威胁建模的必要性
威胁建模是指识别并评估如何管理应用系统中安全弱点的过程,可以帮助企业更快速地发现信息化系统应用过程中的安全隐患,更清楚地了解安全建设需求,从而更有效地建立安全防御体系。
顾名思义,威胁建模会产生一个或多个模型。OWASP将威胁模型定义为:“影响应用程序安全性的所有信息的结构化表示。从本质上讲,它是从风险防御的视角来评估应用程序及其环境的安全性。”通过威胁建模的实践,可以为组织的而网络安全决策提供更全面的信息,并帮助构建和支持网络威胁情报(CTI)。
组织可以将威胁建模广泛地应用于软件应用程序、网络系统、分布式系统、物联网设备和数字化业务流程。概括来说,使用威胁建模可以给企业组织如下好处:
ㆍ明确组织的安全需求。传统的最佳实践和顶级威胁列表只是网络安全工作的指导方针,它们不能考虑到组织的具体情况。而威胁建模可以告诉组织应该优先考虑什么以及在哪里投入资源。
ㆍ更快的反馈,更低的成本。遵循“安全左移”的防护理念,威胁建模可以在应用系统开发过程的早期发现问题,甚至在漏洞萌芽之前消除它们,从而大大降低修复成本。
ㆍ更优质的产品+增强的信心。许多数据泄露事件凸显了安全团队对安全的忽视。威胁建模使您的缺陷直观可见,因此您可以制定创新计划并实际量化威胁。
正如安全技术专家Adam Shostack所认为的:“威胁建模是实现网络安全集中化防御的关键。如果没有威胁建模,企业的网络安全工作就是无休止的打地鼠游戏。”
威胁建模的过程
从广义上讲,威胁建模涉及从日常的安全工作中退一步,以了解企业的系统、评估网络和数字资源、识别威胁环境中的漏洞并优先考虑涵盖保护、响应、补救和恢复的计划。威胁建模团队的核心成员主要由安全专业人员和架构师组成。在更广泛的情况下,组织可以将各种利益相关者聚集在一起,包括应用程序所有者、技术支持人员、管理员等。
这些团队有许多明确定义的框架需要遵循,例如STRIDE,它是1999年由Microsoft开发的。STRIDE中的威胁建模会议通常以类似于白板会议的方式开始,安全专家和利益相关者在会上讨论风险因素,并集思广益怎么办。然而,这种方式目前必须要改变。
传统的威胁建模方法在当前的计算和威胁环境中,它们的扩展性和实际应用效果都不够好。特别随着越来越多的业务运营转向数字化,解决组织的所有高优先级威胁变得非常耗时,导致太多漏洞未得到解决。如何简化这个过程?组织或许应该反向进行改变,从另一端(攻击端)开始威胁建模过程。组织可以扫描现有系统,整合有关当前和可能威胁的数据,而不是从白板和人声鼎沸的会议开始,安全团队需要像黑客一样思考,试图识别潜在威胁。
在实际应用中,威胁建模过程一般遵循以下步骤:
ㆍ设定风险分析目标,确定需要保护的内容;
ㆍ创建安全风险架构概况,绘制系统或应用程序架构图;
ㆍ利用可视化技术来识别系统面临的网络安全威胁;
ㆍ评估威胁的优先级,并针对重点网络安全威胁优先提出缓解措施;
ㆍ验证所识别的威胁是否已被实际缓解。
威胁建模框架及方法
威胁建模的方法有多种,每种方法均有其独特的特点和架构,可指导安全专家识别和减轻相应的潜在威胁。这些威胁建模方法所提供的框架概括了如何应对复杂的威胁分析任务,能够帮助组织对安全风险进行全方位、系统的审查。
1 NIST威胁模型框架
NIST威胁模型是由美国国家标准与技术研究院(NIST)开发的一种威胁建模框架。它主要基于NIST发布的SP 800-30《风险管理指南》中的威胁建模指南。NIST威胁建模框架包括以下关键步骤:
ㆍ建立上下文规则:定义组织的上下文,包括业务目标、关键资产和相关利益相关者。
ㆍ威胁识别:分析系统,识别可能的威胁,包括自然灾害、人为活动和技术故障等。
ㆍ威胁评估:对识别的威胁进行评估,包括威胁的概率、影响和风险。
ㆍ制定风险缓解策略:根据评估的风险水平,制定适当的风险缓解策略,包括接受、转移、降低或避免。
ㆍ监控和更新:持续监控威胁环境,根据变化的情况更新风险管理策略。
2 STRIDE Model框架
STRIDE是威胁建模理念的最早实践者,也是最流行的威胁建模框架之一,由微软安全研究人员于1999年创建。它能够从攻击者的角度出发,将威胁分为以下6个类别:
ㆍ欺骗(Spooling):攻击者试图冒充与系统某些部分交互的实体(例如,用户、服务)。
ㆍ篡改(Tampering):攻击者试图修改数据以操纵某些结果。
ㆍ抵赖(Repudiation):攻击者否认其操作或交易,使其难以追踪或追究责任。
ㆍ信息泄露(Information Disclosure):攻击者可能获取系统中的敏感信息,如用户凭据、业务数据等。
ㆍ拒绝服务(DoS):限制或阻止对系统的正常访问。
ㆍ特权提升(Elevation of privilege):攻击者试图获取比其正常权限更高的权限级别,从而可能导致未经授权的访问和操作系统的敏感功能。
3 DREAD框架
DREAD是一种用于评估和量化安全风险的威胁建模框架,它考虑了以下五个关键方面:
ㆍ损害(Damage):攻击成功发生后可能对系统造成的实际损害程度,包括数据泄露、服务中断、财务损失等。
ㆍ可重复性(Reproducibility):攻击的复杂度以及攻击者是否能够轻松地重复该攻击。高可重复性意味着攻击很容易被多次执行。
ㆍ可利用性(Exploitability):衡量攻击者实施攻击的难度,以及攻击是否需要先前的专业知识或技能。较低的可利用性表示攻击相对难以实现。
ㆍ受影响用户(Affected Users):攻击可能影响的用户数量,如果攻击影响广泛的用户群体,风险程度可能会更高。
ㆍ可发现性(Discoverability):衡量攻击是否容易被检测或发现。低可发现性表示攻击者不易被发现。
4 PASTA流程
攻击模拟和威胁分析流程(PASTA)是一种以风险为中心的威胁分析方法,在模拟和测试威胁的可行性时始终与业务流程联系在一起。它采用以风险为中心的方法,根据威胁的可能性和潜在影响确定威胁的优先级。具体分为以下七个阶段:
ㆍ为风险分析定义目标。这包括对组织核心任务、服务、产品及其他关键业务方面的认知;
ㆍ定义技术范围,包括系统、网络、应用程序等;
ㆍ分解和分析应用程序,识别关键组件及其相互关系;
ㆍ威胁分析,识别系统可能面临的威胁;
ㆍ弱点和脆弱性分析;
ㆍ攻击建模与模拟;
ㆍ风险分析和管理;
5 LINDDUN框架
对于主要担心数据隐私的组织,可以采用更集中的威胁建模方法。LINDDUN就是这样一个框架,它提供了一个隐私威胁的目录,以便对可能影响隐私的广泛设计问题进行调查。
“LINDDUN”是以下隐私威胁类型的首字母缩略词,主要包括:
ㆍ关联(Linking):将数据或操作关联到个人或组的能力。
ㆍ识别(Identifying):了解个体的身份。
ㆍ不可抵赖性(Nonrepudiation):能够将某项主张归于某个人。
ㆍ侦测(Detecting):通过观察推断数据主体对系统的参与情况。
ㆍ数据泄露(Data disclosure):过度收集、存储、处理或共享个人数据。
ㆍ不知情(Unawareness):在处理个人数据时,没有充分告知、涉及或授权个人。
ㆍ不合规(Noncompliance):偏离安全和数据管理最佳实践、标准和法规。
6 TRIKE知识库
TRIKE是一种基于知识库的开源建模方法,通过收集、整理和分析威胁情报,构建一个全面的知识库,主要包括威胁漏洞、攻击向量等信息,来帮助组织理解和管理其面临的威胁和风险。该方法侧重于定义可接受的风险水平,同时分配风险等级,以确定制定的利益相关方是否可以接受风险,并根据这些等级调整安全工作。
7 安全决策树
安全决策树(Security decision trees)是一种以攻击者为中心的威胁建模技术,它允许团队使用树形结构对攻击如何展开进行建模。攻击场景模拟攻击者在攻击的每个阶段可能采取的行动,以及系统可以做些什么来对抗攻击者。这种方法可以帮助团队理解攻击者的心态和决策过程,以及攻击的投资回报(ROI)。
威胁建模应用实践
虽然威胁建模优势明显,但想要在组织内成功采用威胁建模却并不容易。为了最大程度地发挥威胁建模的作用,组织可以采取以下一些关键步骤:
首先,必须把重点放在培训和意识上。这意味着要投入时间和资源来教育开发团队、安全人员和其他受众,让他们了解威胁建模的重要性以及用于进行威胁建模的各种技术。彻底理解威胁建模在识别和预防安全漏洞中的作用,对于在团队中培养具有安全意识的文化至关重要。
其次,要将威胁建模集成到开发生命周期中。通过在软件开发的早期阶段威胁建模,组织可以确保安全性考虑不是“事后考虑事项”,而是开发过程的基本组成部分。在早期嵌入威胁建模有助于识别潜在的安全问题,因为这些问题通常更容易解决,而且成本更低。
最后,网络安全的本质要求威胁模型并非静态的。随着网络威胁和软件系统的不断发展,定期审查是必不可少的。组织应该通过定期审查来更新和改进威胁模型,确保它们准确地反映当前的威胁环境和系统本身的任何变化,从而保持一个强大的、响应性强的安全状态,以适应不断涌现的新挑战。
将这些实践整合到组织的安全策略中并非一次性的任务,而是一个持续努力的过程。随着威胁的演变以及系统的日益复杂,威胁建模也必须跟上网络安全的动态特性。如果企业想将威胁建模涵盖自身的所有业务,那么就应该通过优先使用自动化工具和大量可用威胁信息评估企业安全风险的方式,更快地解决所有高风险威胁,同时也不要忽视任何细小威胁。