威胁模型(Threat Model)

威胁模型是系统化识别、分析和评估潜在安全威胁的过程,是构建安全系统的基础


什么是威胁模型

威胁模型是一种结构化的方法,用于:

  • 识别系统可能面临的威胁
  • 分析威胁的可能性和影响
  • 确定需要优先处理的威胁
  • 设计相应的安全对策

威胁建模的价值

  1. 前瞻性安全:在系统设计阶段识别风险,而非事后补救
  2. 资源优化:将有限的资源投入到最重要的安全措施上
  3. 全面性:确保没有忽略关键威胁
  4. 团队协同:为安全团队提供共同的语言和框架

STRIDE 威胁模型

STRIDE是微软提出的一种威胁建模方法,包含六种主要威胁类型:

1. 欺骗(Spoofing)

  • 定义:伪造身份以获取未经授权的访问
  • 例子
    • IP地址伪造
    • MAC地址伪造
    • 电子邮件地址伪造
    • 用户身份伪造
  • 防御措施
    • 强身份验证
    • 数字证书
    • 多因素认证
    • 反欺诈系统

2. 篡改(Tampering)

  • 定义:未经授权地修改数据或代码
  • 例子
    • 数据包修改
    • 配置文件篡改
    • 代码注入
    • 篡改传输中的数据
  • 防御措施
    • 数据完整性校验
    • 数字签名
    • 哈希验证
    • 访问控制

3. 抵赖(Repudiation)

  • 定义:否认已执行的操作
  • 例子
    • 否认发送邮件
    • 否认进行交易
    • 否认删除文件
    • 否认修改记录
  • 防御措施
    • 审计日志
    • 数字签名
    • 时间戳
    • 不可否认性服务

4. 信息泄露(Information Disclosure)

  • 定义:信息被未经授权的实体访问
  • 例子
    • 数据库信息泄露
    • 内存信息泄露
    • 网络嗅探
    • 错误信息泄露
  • 防御措施
    • 加密
    • 访问控制
    • 数据脱敏
    • 最小权限原则

5. 拒绝服务(Denial of Service)

  • 定义:使服务不可用或性能大幅降低
  • 例子
    • DDoS攻击
    • 资源耗尽
    • 缓冲区溢出
    • 逻辑炸弹
  • 防御措施
    • 负载均衡
    • 资源限制
    • 防火墙规则
    • 流量清洗

6. 权限提升(Elevation of Privilege)

  • 定义:获得比原本拥有更高的权限
  • 例子
    • 利用漏洞提升权限
    • 绕过访问控制
    • 获取管理员权限
    • 横向权限移动
  • 防御措施
    • 最小权限原则
    • 安全编码
    • 定期更新
    • 权限审计

攻击树模型

攻击树是一种图形化的威胁建模方法,以树状结构表示攻击路径:

              攻击目标
              /     \
        子目标1   子目标2
          / \         / \
   方法1 方法2  方法3 方法4

攻击树构建步骤

  1. 确定攻击目标:明确攻击者想要达成的最终目标
  2. 分解目标:将大目标分解为多个子目标
  3. 识别攻击方法:为实现每个子目标列出可能的攻击方法
  4. 分析成本效益:评估每种攻击方法的成本和成功率
  5. 确定防御措施:针对每种攻击方法设计相应的防御

攻击树优势

  • 可视化:直观展示攻击路径和依赖关系
  • 定量分析:可以计算攻击成本、时间和成功率
  • 防御规划:帮助识别最有效的防御点
  • 团队沟通:为安全团队提供共同的语言

DREAD 风险评估模型

DREAD是一种定量风险评估模型,包含五个维度:

1. 潜在损失(Damage Potential)

  • 评分标准:0-10分
  • 考虑因素:
    • 数据丢失量
    • 系统损坏程度
    • 业务影响范围
    • 恢复成本

2. 可复现性(Reproducibility)

  • 评分标准:0-10分
  • 考虑因素:
    • 攻击难度
    • 所需技术复杂度
    • 特殊条件要求
    • 成功概率

3. 可利用性(Exploitability)

  • 评分标准:0-10分
  • 考虑因素:
    • 攻击者技能要求
    • 所需工具
    • 攻击步骤
    • 检测难度

4. 受影响用户(Affected Users)

  • 评分标准:0-10分
  • 考虑因素:
    • 受影响用户数量
    • 用户权限级别
    • 数据敏感性
    • 业务重要性

5. 可发现性(Discoverability)

  • 评分标准:0-10分
  • 考虑因素:
    • 漏洞暴露程度
    • 信息泄露可能性
    • 逆向工程难度
    • 公开披露情况

风险计算

风险等级 = (潜在损失 + 可复现性 + 可利用性 + 受影响用户 + 可发现性) / 5
 
# 风险等级解释
# 0-3: 低风险
# 3-6: 中风险
# 6-10: 高风险

PASTA 威胁建模流程

PASTA是一种七阶段威胁建模流程,更注重业务背景:

1. 定义业务目标

  • 识别核心业务流程
  • 确定关键资产
  • 定义安全要求
  • 明确合规要求

2. 定义技术范围

  • 确定系统边界
  • 列出技术组件
  • 分析数据流
  • 绘制架构图

3. 分解应用

  • 创建数据流图
  • 识别信任边界
  • 分析数据存储
  • 确定安全控制

4. 威胁分析

  • 使用STRIDE等框架
  • 识别潜在威胁
  • 分析攻击路径
  • 评估威胁可能性

5. 脆弱性分析

  • 识别系统弱点
  • 评估脆弱性严重性
  • 确定利用可能性
  • 分析脆弱性影响

6. 攻击建模

  • 创建攻击场景
  • 分析攻击技术
  • 评估攻击可行性
  • 确定攻击影响

7. 风险管理与分析

  • 计算风险等级
  • 确定风险优先级
  • 制定缓解策略
  • 实施控制措施

威胁建模最佳实践

1. 早期参与

  • 在系统设计阶段开始威胁建模
  • 让安全团队参与架构设计
  • 将威胁建模作为开发流程的一部分

2. 多学科协作

  • 包括开发、运维、安全、业务人员
  • 鼓励不同视角的贡献
  • 建立共同的安全语言

3. 定期更新

  • 系统变更时更新威胁模型
  • 定期审查威胁假设
  • 关注新的攻击技术

4. 简单实用

  • 避免过度复杂的模型
  • 专注于高价值威胁
  • 使用团队熟悉的工具和方法

5. 可操作性

  • 确保威胁建模结果可执行
  • 将威胁与具体缓解措施关联
  • 跟踪缓解措施的执行情况

常见威胁建模工具

1. 微软威胁建模工具

  • 图形化界面
  • 自动STRIDE分析
  • 报告生成
  • 集成开发环境

2. OWASP Threat Dragon

  • 开源工具
  • 支持STRIDE模型
  • 支持攻击树
  • 导出多种格式

3. IriusRisk

  • 企业级平台
  • 支持多种模型
  • 自动化流程
  • 合规支持

4. SeaSponge

  • Python命令行工具
  • 简单易用
  • 开源免费
  • 可集成CI/CD

🔗 相关链接


最后更新:2025-01-26 维护规范:详见 笔记规范文档

威胁模型 STRIDE 攻击树 风险评估