第3章 威胁建模执行步骤
适用场景
本章适用于安全引导阶段中需要对目标系统进行系统性威胁分析的任务场景,特别是当系统架构已初步明确,需要通过数据流图(DFD)抽象出系统交互边界,再结合STRIDE模型逐类枚举威胁,最终形成可追踪、可验证的威胁列表时,必须严格遵循本章的SOP步骤。
前置条件
- 已完成系统架构设计文档(至少包含核心组件、外部实体、数据存储)。
- 已明确分析范围(系统边界、信任边界)。
- 已准备至少一种DFD绘制工具(如Draw.io、Visio、PlantUML)或白板/纸笔。
- 引导师(安全专家)已掌握STRIDE分类语义与常见威胁示例。
- 团队角色职责已确认:架构师、开发负责人、QA代表、安全引导师。
操作步骤
| 步骤 | 操作要点 | 责任人 |
|---|---|---|
| 1. 绘制数据流图(DFD) | 识别外部实体、进程、数据存储、数据流;标注信任边界;保持层次清晰,建议先画顶级上下文图(Level 0),再逐层细化到Level 1/Level 2。 | 架构师牵头,安全专家审核 |
| 2. 使用STRIDE分类逐节点分析 | 对DFD中每个进程、数据存储、数据流、外部实体分别应用Spoofing、Tampering、Repudiation、Information Disclosure、Denial of Service、Elevation of Privilege六类威胁。 | 安全专家主导,全员参与头脑风暴 |
| 3. 生成威胁列表 | 每个威胁记录为一条:威胁ID、STRIDE类型、受影响元素、描述、风险等级(初步)、可能的缓解措施。使用结构化模板(如Excel/Threat Modeling Tool)保存。 | 安全专家记录,全体确认 |
输入输出物
| 输入 | 输出 |
|---|---|
| 系统架构文档、组件清单、数据资产分类 | 数据流图(DFD, Level 0 ~ Level 2) |
| DFD + STRIDE分类卡片 | 威胁列表(含ID、类型、描述、风险、缓解措施) |
责任边界
- 安全引导师:负责讲解STRIDE语义、引导头脑风暴、审核DFD完整性、交付最终威胁列表。
- 系统架构师:负责提供准确的组件关系、数据流方向、信任边界;参与绘制并修正DFD。
- 开发负责人:从实现角度验证威胁可行性,提供缓解措施的技术约束。
- QA代表:从测试角度补充遗漏的威胁,并确认后续验证方法。
记录材料
- DFD原稿(电子版或高清扫描件)
- 威胁列表模板(推荐使用下述结构化格式存储)
威胁ID|STRIDE类型|受影响元素|威胁描述|风险初步评级|缓解措施|状态
T-001|Spoofing|认证服务|攻击者伪造外部用户身份绕过登录|High|强制MFA|Open
T-002|Tampering|支付数据流|中间人篡改订单金额|Critical|TLS+签名验签|Open
异常处理
- DFD层级过多导致分析发散:限制分析深度为Level 2,超出部分标记为“需在后续迭代中细化”。
- STRIDE分类与元素不匹配:例如在“外部实体”上强行使用“Elevation of Privilege”——此类威胁通常不适用,应跳过并备注“N/A”。
- 威胁列表条目重复:合并同类威胁,保留最高风险等级,使用交叉引用字段。
- 时间不足无法完成全量分析:优先分析信任边界上的数据流和关键进程,剩余元素标记为“待续”,记录在案。
验收标准
- DFD满足:所有外部实体、进程、数据存储、数据流均已标识;信任边界用虚线清晰分隔;至少有Level 0和Level 1两层。
- STRIDE分析覆盖DFD中每一个元素;每个元素至少被一种STRIDE类别命中(N/A需备注理由)。
- 威胁列表包含字段:威胁ID、STRIDE类型、受影响元素、描述、风险等级、缓解措施、状态。条目总数≥10条。
- 威胁列表经全员确认,并由安全引导师签字归档。
目标产出示意图(简化版威胁建模流程)
实战提示:STRIDE分类时,建议使用“STRIDE per element”表格法,每个DFD元素单独一行,六列对应STRIDE,打勾或填出具体威胁。避免陷入“对数据流也做Spoofing”等无效分析——数据流无法被伪装,只需关注其完整性( Tampering)和信息泄露风险。
常见陷阱:不要跳过DFD绘制直接开始威胁枚举。没有DFD作为结构载体,STRIDE分析极易变成“拍脑袋”式发散,导致威胁列表遗漏关键边界上的攻击面。DFD必须至少更新至Level 1,方可进入STRIDE分类环节。