STRIDE 威胁建模:面向安全应用程序开发的威胁分析框架

一、什么是 STRIDE 威胁建模?

STRIDE 威胁模型由Microsoft安全研究人员于 1999 年创建,是一种以开发人员为中心的威胁建模方法,通过此方法可识别可能影响应用程序的威胁、攻击、漏洞,进而设计对应的缓解对策,以降低安全风险并满足公司的安全目标。

STRIDE为每一种威胁英文的首写字母,​​​​​​Spoofing欺骗、Tampering篡改、Repudiation否认Information disclosure信息泄露、Denial of Service拒绝服务、Elevation of privilege特权提升。虽然 STRIDE 威胁建模本身对组织很有用,但它也是一种更广泛意义的威胁分析方法,可为安全团队提供一个实用的框架,用于定义安全要求、创建应用程序图、识别威胁、减轻威胁、并验证威胁已得到缓解

STRIDE具体描述及缓解

类别 描述 缓解方式

Spoofing

欺骗

涉及非法访问并使用其他用户的身份验证信息,例如用户名和密码。

Involves illegally accessing and then using another user's authentication information, such as username and password

Authentication

认证

Tampering

篡改

涉及恶意修改数据。示例包括对持久数据(例如数据库中保存的数据)进行未经授权的更改,以及数据在通过开放网络(例如 Internet)在两台计算机之间流动时的更改。

Involves the malicious modification of data. Examples include unauthorized changes made to persistent data, such as that held in a database, and the alteration of data as it flows between two computers over an open network, such as the Internet

Integrity

完整性

Repudiation

否认

与拒绝执行某项操作而其他方没有任何方式证明的用户相关联——例如,用户在缺乏追踪被禁止操作的能力的系统中执行非法操作。不可否认性是指系统对抗否认威胁的能力。例如,购买商品的用户可能必须在收到商品时签名。然后,供应商可以使用签名的收据作为用户确实收到包裹的证据。

Associated with users who deny performing an action without other parties having any way to prove otherwise—for example, a user performs an illegal operation in a system that lacks the ability to trace the prohibited operations. Non-Repudiation refers to the ability of a system to counter repudiation threats. For example, a user who purchases an item might have to sign for the item upon receipt. The vendor can then use the signed receipt as evidence that the user did receive the package

Auditability

审计

Information Disclosure

信息泄露

涉及将信息暴露给不应该访问它的个人——例如,用户读取他们无权访问的文件的能力,或者入侵者读取两台计算机之间传输的数据的能力。

Involves the exposure of information to individuals who are not supposed to have access to it—for example, the ability of users to read a file that they were not granted access to, or the ability of an intruder to read data in transit between two computers

Confidentiality

机密性

Dos

拒绝服务

拒绝服务 (DoS) 攻击拒绝向有效用户提供服务,例如,通过使 Web 服务器暂时不可用或无法使用。您必须防范某些类型的 DoS 威胁,以提高系统可用性和可靠性。

Denial of service (DoS) attacks deny service to valid users—for example, by making a Web server temporarily unavailable or unusable. You must protect against certain types of DoS threats simply to improve system availability and reliability

Availability

可用性

Elevation of privilege

特权提升

非特权用户获得特权访问,从而有足够的访问权限来破坏或破坏整个系统。特权提升威胁包括攻击者有效渗透所有系统防御并成为可信系统本身的一部分的情况,这确实是一种危险情况。

An unprivileged user gains privileged access and thereby has sufficient access to compromise or destroy the entire system. Elevation of privilege threats include those situations in which an attacker has effectively penetrated all system defenses and become part of the trusted system itself, a dangerous situation indeed

Authorization

授权

以上表格参考:Microsoft Threat Modeling Tool threats

二、STRIDE 威胁建模的六个要素

1、欺骗

欺骗攻击是指攻击者伪装自己的身份以成功冒充可信来源并获得对用户重要数据或信息的访问权限。欺骗经常使用社会工程来说服用户提供用户名和密码等信息。一旦他们获得信息,攻击者将使用它来访问应用程序并从那里感染网络。

欺骗攻击包括 cookie 重放攻击、会话劫持和跨站点请求伪造 (CSRF) 攻击。 

由于欺骗是对用户身份验证的攻击,因此最好的预防形式是实施安全的用户身份验证方法,包括安全密码要求和多因素身份验证(MFA)。

2、篡改

篡改涉及故意修改系统以改变其行为。攻击者将尝试通过篡改目标参数或代码来破坏应用程序,以修改应用程序数据,例如用户凭据和权限,或应用程序中的其他关键项目。

跨站点脚本 (XSS) 和 SQL 注入等篡改攻击会破坏应用程序的完整性。为了防止篡改,应用程序应设计为验证用户输入并编码输出。在开发阶段和应用程序投入生产后,应使用静态代码分析来识别应用程序中的篡改漏洞。

3、否认

拒绝攻击是对应用程序上操作的有效性和完整性的攻击。否认攻击利用缺乏正确跟踪和记录用户操作的控制,利用这种缺乏来操纵或伪造新的、未经授权的操作的标识、删除日志或将错误数据记录到日志文件中,并拒绝操作或接收服务(例如,实施欺诈)。

开发人员可以通过在提供操作证明的应用程序中加入数字签名或确保有完整的、防篡改的日志来建立不可否认性,或确保某人不能否认操作的有效性。

4、信息泄露

信息泄露是指应用程序无意中泄露了可能被攻击者用来破坏系统的应用程序信息。 

信息泄露可能来自应用程序中留下的开发人员评论、提供参数信息的源代码或包含过多细节的错误消息、泄露用户数据、敏感的商业或业务数据以及有关应用程序及其基础架构的技术细节.

然后,攻击者可以使用此信息来强制访问收集有关客户信息的应用程序,这些信息可用于进一步犯罪,或者获得特权,从而可以访问应用程序的更敏感区域。

开发人员是防止应用程序信息泄露漏洞的核心:

  • 错误消息、响应标头和背景信息应尽可能通用,以避免泄露有关应用程序行为的线索。 
  • 应制定适当的访问控制和授权,以防止未经授权访问信息。 
  • 应该从用户的角度检查应用程序本身,以验证开发人员的评论和其他信息没有在生产环境中显示。

5、拒绝服务

拒绝服务 (DoS) 攻击使目标流量泛滥,触发崩溃,然后将其关闭为合法流量。DoS 攻击通常会耗费时间和金钱,但不会对其受害者造成其他损害。最常见的 DoS 攻击形式是缓冲区溢出攻击,它只是向应用程序发送过多的流量。其他攻击利用漏洞导致系统崩溃。

DoS 攻击可以针对网络层或应用程序层。通过配置防火墙来阻止来自某些来源(例如保留、环回或私有 IP 地址或未分配的DCHP DHCP客户端)的流量,或者引入速率限制来管理流量,可以保护应用程序免受 DoS 攻击。

6、特权升级

权限提升攻击利用应用程序中的漏洞和错误配置来获得对提升或特权的非法访问。权限提升攻击可能会利用凭证和身份验证过程,破坏代码和设计中的漏洞,利用错误配置,或使用恶意软件或社会工程来获取访问权限。

应在开发阶段将防止特权升级的保护内置到应用程序中。这包括管理身份生命周期、对所有用户强制执行最低权限原则、通过配置更改强化系统和应用程序、删除不必要的权限和访问、关闭端口等等。

三、STRIDE 威胁建模的好处

尽早发现漏洞

一旦开发了所有或大部分应用程序,许多公认的漏洞识别方法(静态代码分析、渗透测试漏洞赏金等)就会发挥作用。但是,在开发周期中修复漏洞比在实时产品中修复漏洞更便宜、更容易。

STRIDE 威胁建模是一种以开发为中心的方法,用于评估可能影响应用程序的威胁。STRIDE 可用于形成安全软件开发生命周期的清单,支持开发人员在更便宜且更容易缓解或补救时及早发现潜在弱点。

采取安全第一的方法

STRIDE 威胁建模是围绕威胁构建的,鼓励开发人员思考所考虑的每个威胁如何攻击应用程序的不同部分。此外,它挑战假设,使开发人员和信息安全团队质疑他们的假设,并测试它们的有效性和安全性。

STRIDE 威胁建模练习的结果可以与 DREAD 风险评估模型(损害潜力Damage potential、可再现性Reproducibility、可利用性Exploitability、受影响的用户Affected users、可发现性Discoverability)相结合,以评估每个风险的影响,并确定漏洞的优先级以进行补救。

STRIDE 威胁建模可以反复进行

STRIDE 威胁建模是一个框架,允许定期进行威胁建模练习,以使安全团队能够掌握快速发展的威胁形势,并确保到位的保护能够抵御新旧威胁。

四、STRIDE 建模软件工具-Microsoft Threat Modeling Tool

STRIDE 威胁建模框架中考虑的六个威胁组侧重于应用程序中的不同安全元素,鼓励开发人员考虑可能影响应用程序或系统每个部分的威胁,实际使用中,可借助微软的威胁建模工具,软件不大,可下载至本地直接体验,具体操作可参考此链接:Getting Started - Microsoft Threat Modeling Tool - Azure | Microsoft DocsLearn how to get started using the Threat Modeling Tool. Create a diagram, identify threats, mitigate threats, and validate each mitigation.https://docs.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-getting-started

 

《完》 

参考:

1、STRIDE Threat Modelling: Six Steps to a Secure Application

2、Getting started with the Threat Modeling Tool