什么是威胁建模?定义、方法、示例
威胁建模是一种通过识别缺陷和弱点以及采取对策来避免或减轻系统威胁的影响来增强应用程序、系统或业务流程的安全性的方法。
威胁建模有助于确定系统或组织的安全需求——无论是基本、敏感还是包含重要信息。这是一种详细而有效的方法,用于识别潜在的风险和缺点,以便将 IT 资源的风险保持在最低限度。它还帮助 IT 主管了解风险的影响、评估其严重性并实施保护措施。
威胁建模过程
风险评估的全面性在于它涉及的不仅仅是软件工程师。您需要以下合作伙伴的投入才能创建成功的风险模型。
- 定义安全要求
在使用风险监测设备和系统之前,您应该首先确定要通过此活动实现的目标。目标通常基于以下步骤制定:
隐私对于保护信息不被未经批准的泄露非常重要。
避免未经批准的信息更改的能力被称为可尊重性。
即使该系统受到攻击,提供基本服务的能力也不会受到影响。
列出您的可用性和性能服务级别协议 (SLA)。专有服务和许可技术处理需要如何确保?现在的主要问题是您需要投入多长时间和金钱来进行风险评估。
- 识别可能的威胁
此阶段涉及对构成系统的所有组件进行列表。对整个应用程序进行全面报告的系统有助于系统加速。这应该以用例、数据流、数据蓝图和传输图表的形式显示。您可以创建两种类型的图表。
数据流图:它描述了数据应该如何通过系统。在功能层面,它显示了数据进入和离开每个部分的位置,以及数据存储、循环、连接和信任限制。
流程图:它显示了客户端如何相互协作并处理不同的用例。它处于应用程序级别。PFD 关注客户端和外部人员与您的框架的协作,而 DFD 关注框架内部的工作方式。您可以同时使用其中一种或两种。
既然您已经确定了应用程序中的主要参与者和资源,那么现在是继续进行风险评估的理想时机。
- 威胁评估
您在上一阶段制作了图表来了解您的系统。要掌握真正的风险,您需要在这一阶段关注这些模式。现在,您必须确定您的资源可能受到威胁的各种方式,以及任何潜在攻击者的个性。这可以通过多种方式实现。在下一节中,我们将介绍六种最常见的风险评估演示方法。
- 缓解威胁
完成识别风险的过程后,您将获得一份与每个资源及其活动相关的专业风险列表或风险库,以及潜在攻击者概况列表。现在,您需要确定您的应用程序面临哪些风险。考虑本文第一部分中介绍的示例。您将看到风险是“防火墙密码破解”,而系统漏洞是“使用 MD5 方法存储密码”。识别出您的漏洞后,您需要评估与每个漏洞相关的风险。根据风险分析,您可以按照以下方式解决漏洞:
- 什么都不应该做(太安全或太难甚至不考虑传达相关的恐吓)
- 消除与之相关的有用性。
- 降低组件的便利性或者将其关闭。
- 获取新代码、基础或计划升级。
- 您还将监控后续版本中将要解决的缺陷
- 确认威胁缓解
您需要检查是否在审批过程中已解决所有问题。是否已消除所有风险?是否可以列出剩余风险的清单?然后,您需要确定下一步处理已识别的风险,以及下一个风险评估周期的日期。请记住,风险评估是一个持续的过程。它应该在应用程序开发期间的常规时间或特定阶段进行。
为什么这样做很重要?
任何程序或系统都必须设计成能够抵御攻击。然而,确定实现这一目标所需的安全标准可能很困难。开发人员和用户的思维和行为与攻击者不同。
风险监控是识别通常无法通过代码测试或其他类型的审查进行评估或发现的危险的重要方法。它使项目组能够确定应用程序所需的安全控制,以及如何针对潜在风险实施有效的对策并快速解决问题。该系统通过关注预期风险来创建更安全的应用程序,并有效利用资源。
风险模型是构建有效安全框架的重要方面。开发人员可以在开发和维护阶段将安全性安装到项目中,此时风险监控对于DevOps周期至关重要。这可以消除常见的疏忽,包括忽视输入检查、验证不力、未正确处理错误以及未加密数据。
有哪些流行的威胁建模技术?
- 跨越威胁模型
STRIDE 已应用于纯数字和数字实体系统,并取得了巨大成功。尽管 STRIDE 仍与威胁建模工具一起用作 Microsoft 安全开发生命周期 (SDL) 的一部分,但 Microsoft 并未完全支持它。Microsoft 开发了一个名为 DREAD(危害可能性、可重复性、可利用性、受影响的用户、可发现性)的类似系统,它也是一个记忆辅助工具(危害可能性、可重复性、可利用性、受影响的用户、可发现性),但采用了不同的方法来评估风险。
- PASTA 威胁建模
2012 年,攻击模拟和威胁分析系统 (PASTA) 被建立,作为风险驱动的风险评估世界观。这是一个七项攻击驱动的技术,在将技术需求与业务目标联系起来的同时,还考虑了业务影响分析和一致性要求。
- 林顿
LINDDUN 结构(可关联性、可识别性、不可否认性、可感知性、数据暴露性、无知性、可反抗性)是一种信息安全系统。LINDDUN 是一个遵循有序方法的六要素安全评估框架。
框架 DFD 描述了框架的数据流、数据存储、循环和外部元素,是 LINDDUN 中的第一个部分。LINDDUN 的用户识别风险对框架的相关性,并通过关注单个模型元素并从风险类别的角度对其进行分解来生成风险树。
- 攻击树木
在纯数字系统、数字真实系统和纯真实系统中,使用攻击树重现风险是最古老和最广泛使用的方法之一。攻击树最初是作为一种独立的技术使用的,现在已经与其他技术和系统相结合。
攻击树是描述对系统的攻击的树状表示。攻击的动机是到达树根,而树叶是到达的路线。每个目标都像自己的树一样被描述。由于系统风险分析,创建了一组攻击树。
- TRIKE 威胁模型
从风险管理和谨慎的角度来看待风险显示。
与其他方法一样,Trike 首先定义一个系统。通过列出和评估系统的参与者、资源、预期活动和规则,研究人员创建了一个需求模型。此阶段构建了一个参与者资源活动系统,其中资源位于部分中,参与者位于行中。
每个网格单元被分成四个部分,每个部分对应一个 CRUD 活动(制作、阅读、刷新和删除)。
- 八度
OCTAVE(运营关键威胁、资产和漏洞评估)系统是一种基于风险的系统,用于评估和规划网络安全策略。SEI 的 CERT 部门于 2003 年创建了该系统,并于 2005 年进行了更新。OCTAVE 是一种风险评估系统,侧重于层次化风险而非技术风险。其三个主要部分是功能风险、安全规则和技术。
- 制定基于资源的危险概况。(这是对组织的评估。)
- 确定基础的弱点。(这是对信息框架的概览。)
- 制定安全方法和计划。(认识到对协会重要资源和方向的危险。)
- 广阔的
ThreatModeler 是一个自动化的威胁监测平台,是可视化、敏捷和简单威胁 (VAST) 建模过程的基础。其灵活性和便利性使其能够在大型组织的整个基础上实施,为许多合作伙伴产生显著而有效的结果。
大规模需要开发两种类型的模型:应用风险模型和功能风险模型,以表示开发和基础团队之间的任务和担忧差异。应用风险模型中使用流程图来描述技术视角。DFD 用于根据攻击者的视角构建功能风险模型。这种方法允许将 VAST 集成到组织的事件发展和 DevOps 生命周期中。
- 不受欢迎的人
Persona non Grata (PnG) 是一款关于人类攻击者的动机和能力的游戏。它将用户标记为可以滥用系统的模型,从而迫使研究人员从随机使用的角度思考系统。图 5 显示了一些模型。
PnG 可以帮助根据敌人的视角感知威胁,这在威胁识别的早期阶段非常有用。目的是让技术专家了解潜在的系统攻击者,以便分析攻击者的能力、动机和目标。这种分析有助于专家根据攻击者的视角了解系统的缺点。PnG 适用于使用角色的敏捷方法。
- 人TMM
2018 年,SEI 开发了混合威胁建模方法 (hTMM)。SQUARE、安全卡和 PnG 活动都对它至关重要。无虚假优势、无忽略风险、无论谁在进行风险建模,结果都是可预测的,并且成本合理性是该方法的预期特征。
该策略的主要步骤如下:
- 弄清楚哪个框架将会被证明是危险的。
- 根据工程师的建议使用安全卡。
- 那些可能不会发生的 PnG 应该被消除(即,没有合理的攻击媒介)。
- 在该设备的帮助下,对发现进行总结。
- 继续采用传统的风险评估流程。
- qTMM
这种混合方法很好地结合了攻击树、STRIDE 和 CVSS。它致力于解决几个关键风险,这些风险表明,虚拟物理系统之间存在复杂的相互依赖关系,从而带来问题。
对于 STRIDE 的五个危险类别中的每一个,定量威胁建模方法 (Quantitative TMM) 首先创建组件攻击树。此过程显示攻击类型与低级组件信用之间的关联。然后使用 CVSS 方法计算树组件的分数。
威胁建模的好处
如果做得好,风险评估可以通过在整个产品项目中提供合理的视角来帮助验证安全措施的有效性。组织可以利用风险评估技术来记录已知的应用程序安全问题,并就如何处理这些问题做出明智的决定。领导者可能会因为几乎没有证据而草率行事。
总体而言,经过充分审核的风险模型会提供有用的确认,有助于阐明和保护应用程序或计算机系统的安全状况。当开发公司担心安全问题时,风险评估是执行以下步骤的最佳方法:
- 在产品开发生命周期 (SDLC) 的一开始就发现问题 - 甚至在任何编码发生之前。
- 区分配置会导致标准测试和代码审计可能遗漏。
- 分析您以前可能未曾考虑过的新型攻击。
- 协助专注于测试和代码审计可以帮助您充分利用您的测试财务计划。
- 确定安全必需品。
- 通过在软件交付之前解决问题来避免昂贵的后期编码。
- 考虑除普通攻击之外的风险,例如应用程序特有的安全漏洞。
- 使系统免受可能对您的应用程序造成危险的内部和外部攻击者的侵害。
- 为了弄清攻击者将瞄准哪些部分,需要重点关注资源、危险专家和控制措施。
- 为了找到与框架技术相关的潜在攻击者,模拟危险攻击者、意图、技能和能力的情况。
威胁建模工具
风险评估是一项艰巨的任务。潜在的风险数不胜数。即使任务很小,使用风险评估工具来节省时间和金钱也是明智之举。
风险评估工具通过降低流程的复杂性,使流程更加有序和可重复。这消除了从最初阶段开始构建风险模型并长期跟踪它所需的资源。一个好的风险评估工具允许用户查看、规划、计划和预测各种风险。接下来是工具中需要寻找的主要功能之一:风险洞察流,以确保评估最新的已知风险;带有建议的缓解解决方案的风险仪表板;与 Jira 等问题跟踪器交互的缓解仪表板;以及合规性和合作伙伴报告。
接下来是最常用的危险示范工具:
凯里斯。
一个免费的编程平台,可利用有关预期攻击的洞察来行动攻击面并批准已发现的安全缺陷和潜在的GDPR合规问题的计划。
IriusRisk。
一个理论模型危险演示工具,具有灵活的查询,可引导用户了解应用程序的技术设计、组织元素和安全设置。
Microsoft 威胁建模工具。
Microsoft 威胁建模工具是一款帮助您分析威胁的程序。这款免费工具专为非安全专业人士而设计。作为 Microsoft 安全开发生命周期的一部分,它可帮助您创建和分析威胁模型。它使用标准文档来描述系统组件、数据流和安全区域,从而根据软件结构轻松识别威胁类型。
OWASP 的《危险龙》。
此开源应用程序可作为在线或桌面应用程序使用。它可监控潜在风险、确定审核策略并向用户展示风险模型元素和风险面。
SD 元素。
该安全指南针工具根据弱点收集和整理系统数据,从而生成审查准备报告。
敏捷。
这是一个免费的开源集成开发环境,在应用程序代码库中包含风险监控。它可以用作命令行应用程序、Docker 容器或REST服务器。
威胁建模者。
云安全和应用程序安全模型中实现自动化。使用预构建的工程设计帮助协调,识别、预测和描述风险。
结尾
无论使用何种工具,只要应用程序、IT 系统或风险环境发生变化,风险预测交互就必须进行改进。随着新风险的出现,风险模型也应随之更新。
风险分析需要时间和精力。它不是计划性的工作,但最好在开发人员之前发现并修复漏洞,而风险识别过程是实现这一目标的最佳方式。