威胁建模有哪些常用方法?

wen 开源项目 47

威胁建模有哪些常用方法?一文盘点5大类核心模型与实战应用

目录导读

  1. 什么是威胁建模?为何它是安全设计的基石?
  2. 威胁建模的5大常用方法详解
    • 1 STRIDE模型:微软经典威胁分类法
    • 2 PASTA模型:攻击驱动的风险分析
    • 3 LINDDUN模型:隐私威胁分析框架
    • 4 攻击树模型:层次化威胁路径拆解
    • 5 数据流图(DFD)+威胁库:结构化分析
  3. 不同场景下的方法选择指南
  4. 常见问题解答(Q&A)
  5. 从建模到落地的关键步骤

什么是威胁建模?为何它是安全设计的基石?

威胁建模(Threat Modeling)是一种系统化的安全分析方法,在软件或系统设计阶段识别、评估并缓解潜在安全威胁,它不同于事后渗透测试,而是将安全左移(Shift Left),在设计早期即发现架构缺陷。

威胁建模有哪些常用方法?

核心价值

  • 减少后期修复成本(NIST研究显示,设计阶段修复成本仅为开发阶段的1/6)
  • 帮助团队理解攻击者视角,避免“想当然”的安全假设
  • 为安全投入提供优先级依据

根据OWASP和SANS的指南,任何复杂度≥中等的信息系统都应在架构评审阶段完成威胁建模。


威胁建模的5大常用方法详解

1 STRIDE模型:微软经典威胁分类法

来源:Microsoft(1999年发布)
核心思想:将威胁分为6类——Spoofing(假冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。

适用场景

  • 传统B/S架构、企业级应用
  • 需要快速分类威胁时

实战步骤

  1. 绘制数据流图(DFD)
  2. 标记每个元素(进程、数据存储、外部实体)
  3. 对每个元素逐一应用STRIDE检查
  4. 记录威胁并设计缓解措施

优点:分类明确,容易上手,微软免费提供威胁建模工具(TMT)。
缺点:侧重技术威胁,对业务逻辑、复杂分布式系统(如微服务)覆盖不够。

注意:在微服务架构中,STRIDE的“Spoofing”要特别关注服务间身份认证(如mTLS),而“DOS”则需考虑熔断和限流。

2 PASTA模型:攻击驱动的风险分析

来源:VerSprite(2012年发布,现为开源框架)
全称:Process for Attack Simulation and Threat Analysis
核心思想:从业务目标出发,模拟攻击者视角,结合资产、影响、概率进行风险量化。

7步流程

  1. 定义业务目标与安全需求
  2. 定义技术范围(系统边界、接口)
  3. 分解系统(构建数据流、信任边界)
  4. 分析威胁(使用CVE、CAPEC等库)
  5. 分析漏洞(结合代码审计、配置检查)
  6. 建模攻击(绘制攻击树或攻击路径)
  7. 分析风险与优先级(使用DREAD或CVSS打分)

适用场景

  • 高安全等级系统(金融、医疗、政府)
  • 需要量化风险以说服管理层投入

优点:与业务强关联,输出为可量化的风险矩阵。
缺点:流程较重,需要多人团队(安全、业务、开发)配合。

3 LINDDUN模型:隐私威胁分析框架

来源:KU Leuven大学(2014年)
核心思想:聚焦隐私威胁,覆盖6类——Linking、Identifying、Non-repudiation、Detecting、Data Disclosure、Unawareness、Non-compliance(实际简化为 LINDUN 7类)。
适用场景

  • GDPR、CCPA等隐私法规合规
  • 用户画像、数据分析系统

方法差异

  • 与STRIDE互补,但强调“不可链接性”(Unlinkability)和“正当目的”(Purpose Specification)
  • 需要额外分析数据最小化、匿名化机制

执行步骤

  1. 绘制DPIA(数据保护影响评估)数据流
  2. 识别敏感数据元素
  3. 按LINDDUN七类检查每个数据流
  4. 应用隐私设计模式(如差分隐私、k-匿名)
4 攻击树模型:层次化威胁路径拆解

来源:Bruce Schneier(1999年)
核心思想:用树形结构表示攻击目标(根节点)和达成目标所需的子攻击(叶节点),节点间关系为AND/OR逻辑。

适用场景

  • 单一核心资产(如一个硬件微控制器、一个关键API)
  • 需要量化攻击难度

案例

根节点:读取支付卡磁道数据
├─ OR 方式1:物理接触读卡
│  ├─ AND 破坏外壳锁
│  └─ AND 连接示波器
└─ OR 方式2:远程恶意软件
   ├─ AND 注入代码
   └─ AND 上传至服务器

优点:直观展示攻击者所需资源与步骤。
缺点:只能建模已知攻击路径,无法发现“未知的未知”。

5 数据流图(DFD)+威胁库:结构化分析

来源:融合了结构化分析与微软TMT工具
核心方法:先绘制系统的DFD(包含外部实体、进程、数据存储、数据流),然后基于预置威胁库(如OWASP威胁库)自动枚举威胁。
适用场景

  • 开发团队无安全专家时
  • 快速生成初步威胁清单

工具推荐

  • 微软Threat Modeling Tool(免费,支持STRIDE+DFD)
  • OWASP Threat Dragon(开源,支持在线协作)
  • IriusRisk(商业,支持PASTA与风险计算)

不同场景下的方法选择指南

场景 推荐方法 理由
Web应用常规威胁 STRIDE + DFD 快速、成熟工具支持
高安全金融系统 PASTA + 攻击树 可量化、适合合规评审
隐私敏感应用 LINDDUN + DFD 专注数据保护与匿名化
物联网设备固件 攻击树 + 硬件安全分析 聚焦物理与通信攻击
零信任网络设计 STRIDE + 信任边界分析 排查每层身份与认证

注意:没有“万能模型”,最佳实践是组合使用——先用STRIDE或LINDDUN识别威胁,再用攻击树深入关键路径,最后用PASTA评估风险优先级。


常见问题解答(Q&A)

Q:威胁建模必须在项目开始时做吗?
A:理想情况是在需求阶段做,但也可以在迭代中做“增量威胁建模”——每次新增用户故事时,更新DFD并检查受影响部分。

Q:没有安全专家,如何开始?
A:推荐使用微软TMT(Threat Modeling Tool),安装后加载模板即可自动生成部分威胁,同时配合OWASP的“威胁建模速查表”(Cheat Sheet)。

Q:威胁建模与渗透测试冲突吗?
A:不冲突,威胁建模找出“可能存在的隐患”,渗透测试验证“是否真实存在”,两者结合形成完整安全评估闭环。

Q:模型出来的威胁太多,如何排优先级?
A:使用DREAD(危害性、可复现性、可利用性、受影响用户、可发现性)或CVSS(通用漏洞评分系统)对每个威胁打分,优先处理评分>7的高危项。

Q:微服务架构该如何建模?
A:

  • 绘制服务间数据流,关注服务网格双向认证。
  • 用STRIDE检查每个服务边界,特别关注“Elevation of Privilege”(如Pod逃逸)。
  • 增加“配置漂移”和“API速率限制”作为自定义威胁。

从建模到落地的关键步骤

威胁建模不是一次性的文档工作,而是持续的安全架构实践,建议形成以下闭环:

  1. 持续建模:每次架构变更(如引入新中间件、暴露新API)时更新模型。
  2. 威胁入库:将发现的威胁记录到项目管理工具(如Jira),添加“安全”标签。
  3. 定期评审:每季度由安全工程师、架构师、开发者共同审查威胁模型。
  4. 工具集成:考虑将威胁建模工具嵌入CI/CD(如使用IriusRisk API触发扫描)。

威胁建模的价值不在于“有多少种方法”,而在于它让团队在系统具备“可解释的安全性”——即任何人审查架构时,都能理解我们为何选择某条设计路径、为何接受某个风险。


参考来源

  • Microsoft Threat Modeling Tool官方文档
  • OWASP Threat Modeling Cheat Sheet
  • 《Threat Modeling: Designing for Security》 by Adam Shostack
  • SANS Institute:Threat Modeling Methodologies Comparison

抱歉,评论功能暂时关闭!