工具下载:https://aka.ms/threatmodelingtool
0x01 建模步骤
- 定义安全需求
- 创建应用程序图
- 识别威胁
- 减轻威胁
- 验证威胁已得到缓解
0x02 STRIDE威胁建模分析框架
类别 | 描述 | 缓解方式 |
---|---|---|
Spoofing(欺骗) | 涉及非法访问并使用其他用户的身份验证信息,例如用户名和密码。 | Authentication(认证) |
Tampering(篡改) | 涉及恶意修改数据。示例包括对持久数据(例如数据库中保存的数据)进行未经授权的更改,以及数据在通过开放网络(例如 Internet)在两台计算机之间流动时的更改。 | Integrity(完整性) |
Repudiation(否认) | 与拒绝执行某项操作而其他方没有任何方式证明的用户相关联——例如,用户在缺乏追踪被禁止操作的能力的系统中执行非法操作。不可否认性是指系统对抗否认威胁的能力。例如,购买商品的用户可能必须在收到商品时签名。然后,供应商可以使用签名的收据作为用户确实收到包裹的证据。 | Auditability(审计) |
Information Disclosure(信息泄露) | 涉及将信息暴露给不应该访问它的个人——例如,用户读取他们无权访问的文件的能力,或者入侵者读取两台计算机之间传输的数据的能力。 | Confidentiality(机密性) |
Dos(拒绝服务) | 拒绝服务 (DoS) 攻击拒绝向有效用户提供服务,例如,通过使 Web 服务器暂时不可用或无法使用。您必须防范某些类型的 DoS 威胁,以提高系统可用性和可靠性。 | Availability(可用性) |
Elevation of privilege(特权提升) | 非特权用户获得特权访问,从而有足够的访问权限来破坏或破坏整个系统。特权提升威胁包括攻击者有效渗透所有系统防御并成为可信系统本身的一部分的情况,这确实是一种危险情况。 | Authorization(授权) |
然后对这六种类型的威胁分别进行阐述
欺骗(Spoofing)
攻击者伪装自己的身份冒充可信来源来获取用户的敏感信息和数据。其中就包括CSRF和cookie重放,验证码重放,会话劫持等
预防方法:多因素验证用户身份,
篡改(Tampering)
篡改是指攻击者通过篡改目标网站的某些参数或代码来影响正常运行,破坏程序完整性。比如:XSS和SQL注入等
关于篡改的攻击点还是挺多的,抓包修改参数和数据包的都属于篡改数据。
否认(Repudiation)
也有翻译为抵赖的,没有证据,攻击者就可以否认攻击行为,也成为赖皮。
信息泄露(Information Disclosure)
信息泄露包括源码泄露、用户数据泄露、未授权访问等漏洞。
拒绝服务(Dos)
拒绝服务,攻击者通过代理池或者自己拥有大量的肉鸡,对某站点服务发起大量请求,使得目标CPU满负荷从而造成服务崩溃。
特权提升(Elevation of privilege)
未经授权获取权限。权限提升攻击利用应用程序中的漏洞和错误配置来获得对提升或特权的非法访问。权限提升攻击可能会利用凭证和身份验证过程,破坏代码和设计中的漏洞,利用错误配置,或使用恶意软件或社会工程来获取访问权限。
应在开发阶段将防止特权升级的保护内置到应用程序中。这包括管理身份生命周期、对所有用户强制执行最低权限原则、通过配置更改强化系统和应用程序、删除不必要的权限和访问、关闭端口等等。
0x03 开始威胁建模进程
下载工具后,直接安装即可。
打开软件后,可以选择从模板创建关系图,也可以创建空白画布自由绘制。
一个好的开始:
微软
OWASP
OWASP Threat Dragon | OWASP Foundation
微软的MTMT拥有自动生成报告的功能,这个是比较强大的功能,只需要画出数据流图就可以自动生成报告,可以从中筛选符合当前产品的威胁进行防护。
OWASP的建模工具,比较方便的是画图,且可以切换语言为汉语,所以两者可以一块使用。(无法自动生成)在项目的产品模型比较大时,可以使用微软的MTMT进行建模,自动生成的报告会尽可能的将威胁列举出来,而当产品模型较小的时候,就可以不用自动生成威胁报告了。当然也可以两者结合。
0x04 安全属性和设计原则
安全属性:
- 机密性:保证机密信息不被窃取,窃听者不能了解信息的真实含义。
- 完整性:保证数据的一致性,防止数据被非法用户窜改。
- 可用性:保证合法用户对信息资源的使用不会被不正当的拒绝,如DOS攻击。
- 鉴权:身份验证,建立用户身份。
- 授权:明确允许或拒绝用户是否能访问资源,访问哪些资源。
- 认可(不可抵赖):用户无法在执行某操作后否认执行了此操作。
- 原则1 最小攻击面
- 原则2 默认安全
- 原则3 权限最小化
- 原则4 纵深防御
- 原则5 失败安全
- 原则6 不信任第三方系统
- 原则7 业务隔离
- 原则8 公开设计
- 原则9 简化系统设计
- 原则10 使用白名单
MTMT(Microsoft Thread Modeling Tool)
针对产品的架构,将拓扑图画好后。可以自动生成威胁建模报告。