威胁建模介绍
字数 2581
更新时间 2026-02-06 13:35:20

威胁建模全面教学文档

1. 威胁建模基本概念

1.1 定义与核心价值

威胁建模是通过识别目标、漏洞来优化系统安全,并定义防范或减轻系统威胁对策的结构化过程。该方法利用抽象思维帮助分析风险,是现代应用程序安全分析的重要方法。

核心特征:

  • 不是代码审查方法,而是对安全代码审查过程的补充
  • 从潜在攻击者视角看待系统(现代威胁建模思维)
  • 在SDLC中包含威胁建模可确保应用程序从一开始就内置安全性
  • 通过文档化使审阅者更好理解系统架构和入口点

1.2 历史发展

威胁建模概念并不新颖,但近年来出现明显的思维转变。微软是该过程的强力倡导者,将其作为SDLC的核心组件,并声称这是其产品安全性提高的关键原因之一。

2. 威胁建模参与角色

2.1 主要参与者

  • 软件开发与测试人员:实施安全开发实践
  • 架构师、操作员和管理员:负责系统架构和运维安全
  • 客户:提供业务需求和安全期望
  • 安全专家:提供专业安全知识和经验

3. 威胁建模实施时机

3.1 SDLC中的威胁建模

按照"需求-设计-开发-测试-部署-运行-结束"的生命周期:

  • 设计阶段:为新系统/新功能增加安全需求说明
  • 运行阶段:对已上线系统发现新风险,作为渗透测试的辅助工作

3.2 现有系统分析

当在SDLC之外执行源代码分析时,威胁建模通过深度优先方法降低源代码分析复杂性,优先评估高风险组件。

4. 威胁建模实施价值

4.1 核心优势

  • 早期Bug发现:在开发初期识别安全问题
  • 理解安全需求:明确系统安全要求和标准
  • 产品质量提升:构建和交付更安全的产品
  • 问题发现全面性:标记其他技术无法发现的问题

5. 威胁建模实施方法

5.1 图表化分析

5.1.1 流程步骤

  1. 理解上下文环境:基于业务需求和开发框架分析威胁环境
  2. 设定攻击场景:建立可能的攻击模型
  3. 绘制流程图:包含以下关键元素:

5.1.2 流程图元素

  • 外部实体:浏览器、移动设备、人、进程等
  • 数据流:功能调用、网络数据流等
  • 过程:服务、组件等
  • 数据库:数据库、文件、注册表、共享存储、缓存等
  • 可信边界:物理边界、特权边界、完整性边界

5.1.3 信任边界规则

  • 本地进程中的线程通常在信任边界内(共享相同权限)
  • 通过网络通信的过程总是存在信任边界

5.2 威胁分析框架

5.2.1 STRIDE模型

六大威胁类型:

  1. 欺骗(Spoofing)

    • 定义:身份欺骗,如使用他人认证信息
    • 示例:非法使用其他用户的用户名和密码
  2. 篡改(Tampering)

    • 定义:恶意修改数据
    • 示例:修改持久性数据或传输中的数据
  3. 否认(Repudiation)

    • 定义:用户否认执行操作且无证据
    • 示例:用户执行转账后否认操作
  4. 信息泄露(Information Disclosure)

    • 定义:未经授权访问敏感信息
  5. 拒绝服务(Denial of Service)

    • 定义:使有效用户服务不可用
    • 示例:使Web服务器暂时不可用
  6. 提权(Elevation of Privilege)

    • 定义:非特权用户获得特权访问权限
    • 风险:攻击者渗透所有防御成为系统可信部分

5.2.2 隐私威胁考量

除了STRIDE,需考虑隐私威胁,参考国标GBT 35273-2017《信息安全技术个人信息安全规范》。

5.2.3 攻击树分析

  • 基于组织业务经验积累
  • 参考同类型业务早期分析
  • 结合近期攻击者使用的漏洞和技术

5.3 缓解措施

5.3.1 对应缓解策略

  • 欺骗缓解:认证机制(基本认证、LiveID、Cookie认证等)
  • 篡改缓解:完整性控制(数字签名、消息认证码、哈希)
  • 否认缓解:不可否认性措施(强认证、安全日志、数字签名)
  • 信息泄露缓解:加密技术(加密、访问控制)
  • 拒绝服务缓解:可用性措施(过滤、配额、高可用设计)
  • 提权缓解:授权控制(访问控制、特权管理、输入验证)
  • 隐私威胁缓解:数据保护(数据清洗、脱敏、加密)

5.4 威胁建模过程

5.4.1 微软方法

六步流程:

  1. 预设场景:确定产品使用场景和用例
  2. 图表化场景:绘制详细流程图
  3. 识别威胁:从外部实体或驱动事件开始分析
  4. 提供缓解措施:为每个威胁制定应对方案
  5. 验证威胁和措施:检查图表与代码一致性
  6. 创建测试计划:确保每个威胁得到适当缓解

5.4.2 风险评估方法

详细步骤:

  1. 识别资产:确定包含敏感信息的关键资产
  2. 创建体系结构概述:绘制应用程序架构图
  3. 分解应用程序:识别进入和退出标准
  4. 识别威胁:使用STRIDE模型分析可能威胁
  5. 记录威胁:识别资产、威胁和控制措施
  6. 评估威胁:使用DREAD模型对威胁评级

5.4.3 OWASP方法

三阶段流程:

阶段一:分解应用程序

  • 创建用例理解应用程序使用方式
  • 确定入口点和攻击者感兴趣的区域
  • 生成数据流图(DFD)显示系统路径

阶段二:确定并排列威胁

  • 使用STRIDE或应用安全框架(ASF)分类威胁
  • 利用DFD识别潜在威胁目标
  • 使用DREAD或定性风险模型评估风险

阶段三:确定对策和缓解措施

  • 识别保护缺失区域
  • 按风险等级优先处理威胁
  • 制定风险缓解策略

6. 实际示例:用户登录场景

6.1 场景设定

用户通过浏览器登录Web应用系统,检查HTTPS请求,提交用户名密码到应用服务器,服务器验证数据库信息,认证成功后进入首页。

6.2 威胁识别

  • 用户实体:欺骗、否认威胁
  • 提交登录过程:篡改、拒绝服务威胁

6.3 缓解措施表格化

使用表格形式记录威胁类型、描述、风险等级和缓解措施。

7. 威胁建模工具

7.1 工具分类

  • 通用工具:白板+纸
  • 开源工具:微软开源威胁建模工具(GitHub下载)
  • 商业工具:Continuum Security等专业工具

7.2 攻击库资源

  • CAPEC:通用攻击模式枚举分类
  • OWASP:开放Web应用安全项目资源
  • 自定义威胁库:基于组织经验建立

8. 实施建议

8.1 成功要素

  • 早期集成到开发流程中
  • 多角色协作参与
  • 持续更新和维护威胁模型
  • 结合组织具体业务场景

8.2 避免的误区

  • 不要忽略任何威胁,即使利用方法未知
  • 确保图表与最终代码一致性
  • 平衡深度优先和宽度优先分析方法

通过系统化实施威胁建模,组织能够建立 proactive 的安全防护体系,在软件开发生命周期的各个阶段有效识别和缓解安全威胁。

 全屏