威胁建模是识别潜在安全风险、分析攻击路径并制定缓解措施的系统化方法,以下是业内最常用的几种威胁建模方法,各有侧重,适用于不同的场景:

-
STRIDE(最经典、广泛使用)
- 来源:微软提出。
- 核心思想:从威胁类型出发,对系统每个组件或数据流逐一检查是否存在六类威胁。
- 六大威胁类型:
- Spoofing(欺骗):冒充他人身份(如伪造用户、服务器或IP)。
- Tampering(篡改):非法修改数据或代码(如中间人攻击篡改报文)。
- Repudiation(抵赖):用户否认做过某操作(缺乏审计日志)。
- Information Disclosure(信息泄露):敏感信息暴露给未授权者(如SQL注入泄露数据库)。
- Denial of Service(拒绝服务):系统资源耗尽导致服务不可用。
- Elevation of Privilege(权限提升):普通用户获取管理员权限(如缓冲区溢出提权)。
- 适用场景:软件架构设计、API安全、身份认证系统,适合产品初期或功能迭代时进行。
-
PASTA(过程导向、商业驱动)
- 全称:Process for Attack Simulation and Threat Analysis(攻击模拟与威胁分析过程)。
- 核心思想:以业务目标为驱动,通过7个步骤将安全与业务对齐,强调攻击模拟。
- 七阶段流程:
- 定义业务目标
- 定义技术范围
- 分解应用(数据流、信任边界)
- 威胁分析(识别资产与威胁)
- 漏洞分析
- 攻击建模(模拟攻击路径)
- 风险分析与缓解
- 适用场景:需要与业务风险关联的大型系统、金融或合规要求高的企业,适合安全成熟度较高的团队。
-
LINDDUN(隐私专用)
- 来源:由KU Leuven大学提出。
- 核心思想:专门针对隐私威胁,类似STRIDE但聚焦于个人数据保护。
- 七大隐私威胁类别:
- Linkability(可链接性):能否将用户不同行为关联起来。
- Identifiability(可识别性):能否从数据中直接识别出个人身份。
- Non-repudiation(不可否认性):(在隐私中视为威胁)用户无法否认某行为,导致无法匿名。
- Detectability(可检测性):攻击者能否发现用户的存在或数据的存在。
- Disclosure of Information(信息披露):隐私数据泄露。
- Unawareness(不知情):用户对数据处理不知情。
- Non-compliance(不合规):违反GDPR等隐私法规。
- 适用场景:GDPR、个人信息保护法合规审查、用户数据分析系统、匿名化方案设计。
-
攻击树(Attack Trees)
- 核心思想:以攻击目标为根节点,分解达成目标所需的子步骤(分支),形成树状结构。
- 特点:
- 直观展现攻击路径(如“获取数据库账号密码” -> 子节点:“SQL注入”、“暴力破解”、“社工”)。
- 可标注成本、难度、概率等量化指标。
- 适用场景:特定高风险资产的深度分析(如密钥管理系统、金库系统),以及红蓝对抗演练。
-
OCTAVE(组织级、轻量级)
- 全称:Operationally Critical Threat, Asset, and Vulnerability Evaluation。
- 核心思想:自上而下,由业务人员(非安全专家)主导,关注资产和运营风险。
- 特点:
- 不需要昂贵的专业工具,通过研讨会形式完成。
- 结果导向,输出风险优先级和缓解计划。
- 适用场景:中小企业或非IT密集型组织,缺乏专业安全团队但需要系统化评估。
-
数据流图 + 威胁枚举(实战中最常见的混合方法)
- 实际做法:通常先绘制系统的数据流图(DFD),标注信任边界、外部实体、数据存储和进程,然后结合STRIDE(或其他方法)逐一对每个数据流和节点进行威胁枚举。
- 核心优势:将抽象威胁落到具体的系统组件上,可视化程度高,团队沟通效率高。
如何选择?
| 场景 | 推荐方法 | 理由 |
|---|---|---|
| 快速评估新功能/API | STRIDE | 维度全面,上手快,产出直接 |
| 业务风险对齐与高层汇报 | PASTA | 有商业语言,结果可量化 |
| GDPR/隐私合规 | LINDDUN | 专门覆盖隐私威胁 |
| 深度分析单个核心资产 | 攻击树 | 深入攻击路径,易于模拟 |
| 非安全团队/中小企业 | OCTAVE | 流程轻量,依赖业务判断 |
| 标准安全开发流程 | STRIDE + DFD | 行业通行组合,可操作性强 |
建议团队从 STRIDE + 数据流图 开始建立基础能力,再根据业务需要引入PASTA或LINDDUN,威胁建模不是一次性的,应随着架构变更持续迭代。