威胁建模有哪些常用方法?一文盘点5大类核心模型与实战应用
目录导读
- 什么是威胁建模?为何它是安全设计的基石?
- 威胁建模的5大常用方法详解
- 1 STRIDE模型:微软经典威胁分类法
- 2 PASTA模型:攻击驱动的风险分析
- 3 LINDDUN模型:隐私威胁分析框架
- 4 攻击树模型:层次化威胁路径拆解
- 5 数据流图(DFD)+威胁库:结构化分析
- 不同场景下的方法选择指南
- 常见问题解答(Q&A)
- 从建模到落地的关键步骤
什么是威胁建模?为何它是安全设计的基石?
威胁建模(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架构、企业级应用
- 需要快速分类威胁时
实战步骤:
- 绘制数据流图(DFD)
- 标记每个元素(进程、数据存储、外部实体)
- 对每个元素逐一应用STRIDE检查
- 记录威胁并设计缓解措施
优点:分类明确,容易上手,微软免费提供威胁建模工具(TMT)。
缺点:侧重技术威胁,对业务逻辑、复杂分布式系统(如微服务)覆盖不够。
注意:在微服务架构中,STRIDE的“Spoofing”要特别关注服务间身份认证(如mTLS),而“DOS”则需考虑熔断和限流。
2 PASTA模型:攻击驱动的风险分析
来源:VerSprite(2012年发布,现为开源框架)
全称:Process for Attack Simulation and Threat Analysis
核心思想:从业务目标出发,模拟攻击者视角,结合资产、影响、概率进行风险量化。
7步流程:
- 定义业务目标与安全需求
- 定义技术范围(系统边界、接口)
- 分解系统(构建数据流、信任边界)
- 分析威胁(使用CVE、CAPEC等库)
- 分析漏洞(结合代码审计、配置检查)
- 建模攻击(绘制攻击树或攻击路径)
- 分析风险与优先级(使用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)
- 需要额外分析数据最小化、匿名化机制
执行步骤:
- 绘制DPIA(数据保护影响评估)数据流
- 识别敏感数据元素
- 按LINDDUN七类检查每个数据流
- 应用隐私设计模式(如差分隐私、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速率限制”作为自定义威胁。
从建模到落地的关键步骤
威胁建模不是一次性的文档工作,而是持续的安全架构实践,建议形成以下闭环:
- 持续建模:每次架构变更(如引入新中间件、暴露新API)时更新模型。
- 威胁入库:将发现的威胁记录到项目管理工具(如Jira),添加“安全”标签。
- 定期评审:每季度由安全工程师、架构师、开发者共同审查威胁模型。
- 工具集成:考虑将威胁建模工具嵌入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