3. 威胁建模方法论概览

威胁建模不是“画一张数据流图然后开会讨论”,而是一套有明确输入、分析视角和输出物的工程方法。不同方法论解决的核心问题并不相同:有的擅长快速枚举技术威胁,有的擅长把业务风险与攻击路径对齐,有的专注隐私合规,有的强调把威胁建模嵌入敏捷开发流程。选错方法论,常见后果是分析结果与团队实际决策脱节——要么产出一堆无法排期的威胁条目,要么漏掉真正影响业务的关键风险。

四类主流方法论的核心定位

STRIDE 由微软提出,是最广泛使用的技术威胁枚举框架。它把威胁分为六类:Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。STRIDE 的核心优势是“可操作”:每一类威胁都对应一组安全属性(认证、完整性、不可否认性、机密性、可用性、授权),并可直接映射到缓解措施。它适合在架构设计阶段对数据流图逐元素(进程、数据存储、数据流、外部实体)做检查。

PASTA(Process for Attack Simulation and Threat Analysis)是七阶段、风险驱动的攻击模拟方法。它从业务目标出发,经过技术范围定义、应用分解、威胁分析、漏洞分析、攻击建模,最终落到风险与影响分析。PASTA 的独特价值在于“攻击者视角”和“业务对齐”:它要求先明确业务影响,再反推攻击路径,适合对高风险系统做深度评估,但耗时较长,通常用于关键系统或合规审计场景。

LINDDUN 专注隐私威胁,覆盖 Linking(关联)、Identifying(识别)、Non-repudiation(不可否认)、Detecting(检测)、Data Disclosure(数据披露)、Unawareness(不知情)、Non-compliance(不合规)七类。它与 STRIDE 结构相似,但分析对象是个人数据流和隐私属性。当系统涉及用户画像、位置、生物特征、行为日志等个人数据时,LINDDUN 应作为 STRIDE 的补充,而不是替代。

VAST(Visual, Agile, and Simple Threat modeling)强调可视化和敏捷集成。它区分两类模型:应用威胁模型(面向开发与运维)和运营威胁模型(面向基础设施与流程)。VAST 主张把威胁建模做成自动化、可重复的流水线活动,适合 DevOps 和持续交付环境,但对团队的工具链成熟度要求较高。

四类威胁建模方法论:分析视角与输出物对比 STRIDE 视角:技术威胁枚举 S 仿冒 · T 篡改 · R 抵赖 I 泄露 · D 拒绝服务 · E 提权 输入:数据流图 / 架构图 输出:威胁清单 + 缓解措施 适用:设计阶段快速覆盖 PASTA 视角:风险驱动 + 攻击模拟 七阶段:业务目标 → 技术范围 → 分解 → 威胁 → 漏洞 → 攻击 → 风险与影响 输出:攻击路径 + 业务风险 适用:关键系统深度评估 LINDDUN 视角:隐私威胁专项 L 关联 · I 识别 · N 不可否认 D 检测 · D 披露 · U 不知情 N 不合规 输出:隐私威胁 + 合规缺口 适用:涉及个人数据的系统 VAST 视角:可视化 + 敏捷集成 应用威胁模型(开发/运维) 运营威胁模型(基础设施) 输出:可自动化流水线活动 与 CI/CD 集成 适用:DevOps 持续交付 选择决策轴:按“分析目标”与“系统特征”匹配 快速覆盖技术威胁 → STRIDE 业务风险 + 攻击路径 → PASTA 个人数据与合规 → LINDDUN 敏捷迭代与自动化 → VAST 推荐组合策略 STRIDE 做基线覆盖 → PASTA 对高风险模块做攻击路径推演 → LINDDUN 补充隐私维度 → VAST 将结论嵌入迭代流程 原则:先保证覆盖广度,再对关键资产做深度分析,最后把输出物转化为可跟踪的安全需求或用户故事

选择标准:从“分析目标”出发,而不是从“方法论名气”出发

选择方法论时,建议按以下顺序判断:第一,明确本次威胁建模要回答什么问题——是“这个设计有没有明显安全漏洞”,还是“攻击者最可能从哪条路径打进来”,还是“个人数据处理是否合规”。第二,评估系统特征:是否涉及个人数据、是否属于关键业务、是否处于快速迭代环境。第三,考虑团队能力与时间预算:STRIDE 半天到一天可完成一轮,PASTA 通常需要数天到数周,LINDDUN 需要隐私专业人员参与,VAST 需要工具链支持。

一个常见的误区是“只选一种方法论”。实际工程中,组合使用往往更有效:用 STRIDE 做基线覆盖,确保六类威胁都被检查;对高风险模块用 PASTA 做攻击路径推演;涉及个人数据时用 LINDDUN 补充隐私威胁;在敏捷团队中,用 VAST 的思路把威胁建模活动拆解为可迭代的小任务。

落地要点:让威胁建模产生可跟踪的输出

无论选择哪种方法论,落地时都要抓住三个关键点。第一,输入要具体:数据流图必须标注信任边界、数据存储位置、外部实体和协议;没有这些信息,威胁分析会退化为泛泛而谈。第二,输出要可跟踪:每条威胁应记录威胁描述、受影响资产、攻击前提、潜在影响、缓解措施、责任人和状态。第三,节奏要匹配开发流程:在需求评审时做轻量 STRIDE 检查,在设计评审时做完整威胁建模,在迭代回顾时更新威胁状态。

教学示例:某在线问诊系统在架构评审阶段使用 STRIDE 对“医生查看患者病历”数据流做分析,识别出“越权访问”(Elevation of Privilege)和“病历传输未加密”(Information Disclosure)两条威胁。随后用 PASTA 对“患者预约挂号”模块做攻击路径推演,发现攻击者可通过枚举预约号获取他人就诊信息。最后用 LINDDUN 检查发现“患者位置信息被用于推荐科室”属于 Data Disclosure 风险。三条输出分别转化为安全需求:接口鉴权校验、传输层加密、位置信息脱敏与授权同意。

威胁建模方法论的真正价值,不在于用了多复杂的框架,而在于是否让团队在系统设计早期就识别出关键风险,并把风险转化为可执行、可验证的安全需求。选择方法论时,先问“要解决什么问题”,再问“团队能投入多少”,最后问“输出物如何进入开发流程”。