威胁建模Skill threat-model

威胁建模技能提供结构化方法论,用于在系统设计阶段识别、分析和缓解安全威胁。它适用于规划新系统、审查架构安全、识别潜在威胁和评估风险。关键词包括威胁建模、STRIDE、DREAD、攻击树、安全架构、风险分析、漏洞评估、安全态势和防御深度。

安全审计 0 次安装 0 次浏览 更新于 3/24/2026

威胁建模

概述

这个技能提供结构化方法来识别、分析和缓解系统设计中的安全威胁。在规划新系统、审查现有架构或评估安全态势时使用。

何时使用威胁建模

  • 新系统设计:在实施前,识别安全需求
  • 架构审查:评估现有系统的安全差距
  • 功能添加:评估新功能的安全影响
  • 第三方集成:评估外部依赖的风险
  • 合规要求:为审计记录安全控制

方法论

STRIDE

按类型分类威胁:

威胁 描述 安全属性
Spoofing(欺骗) 冒充用户或系统 认证
Tampering(篡改) 修改数据或代码 完整性
Repudiation(抵赖) 否认操作发生 不可否认性
Information Disclosure(信息泄露) 将数据暴露给未经授权的方 机密性
Denial of Service(拒绝服务) 使系统不可用 可用性
Elevation of Privilege(权限提升) 获取未经授权的访问 授权

DREAD(风险评分)

为每个威胁评分(1-10),跨五个维度:

因子 问题
Damage(损害) 影响有多严重?
Reproducibility(可复现性) 有多容易被复现?
Exploitability(可利用性) 需要多少技能或资源?
Affected Users(受影响用户) 有多少用户受影响?
Discoverability(可发现性) 有多容易发现漏洞?

风险分数 = (D + R + E + A + D) / 5

  • 高风险:7-10(立即行动)
  • 中等风险:4-6(计划修复)
  • 低风险:1-3(接受或监控)

PASTA(攻击模拟与威胁分析过程)

七个阶段:

  1. 定义目标:业务目标、合规要求
  2. 定义技术范围:架构、技术、数据流
  3. 应用分解:组件、信任边界、入口点
  4. 威胁分析:威胁情报、攻击模式
  5. 漏洞分析:弱点、现有控制
  6. 攻击建模:攻击树、可能场景
  7. 风险与影响分析:优先级缓解措施

威胁建模过程

步骤1:定义范围和资产

## 系统概述

- **名称**:[系统名称]
- **目的**:[做什么]
- **敏感性**:[数据分类]

## 要保护的资产

| 资产            | 分类 | 如果泄露的影响      |
| ---------------- | -------------- | -------------------------- |
| 用户凭据 | 机密   | 账户接管           |
| 支付数据     | PCI-DSS        | 财务损失、合规 |
| 个人数据    | PII/GDPR       | 隐私泄露、罚款      |

步骤2:创建数据流图

识别:

  • 外部实体:用户、第三方服务
  • 过程:应用组件、服务
  • 数据存储:数据库、缓存、文件系统
  • 数据流:数据如何在组件间移动
  • 信任边界:权限级别变化的地方
┌─────────────────────────────────────────────────────────────┐
│                     信任边界:互联网                │
│  ┌──────────┐                                               │
│  │  用户    │                                               │
│  │ 浏览器  │                                               │
│  └────┬─────┘                                               │
│       │ HTTPS                                               │
├───────┼─────────────────────────────────────────────────────┤
│       │            信任边界:DMZ                      │
│       ▼                                                     │
│  ┌──────────┐     ┌──────────┐     ┌──────────┐            │
│  │  负载    │────▶│   API    │────▶│  认证    │            │
│  │ 均衡器   │     │  网关    │     │  服务    │            │
│  └──────────┘     └────┬─────┘     └──────────┘            │
│                        │                                    │
├────────────────────────┼────────────────────────────────────┤
│                        │   信任边界:内部         │
│                        ▼                                    │
│  ┌──────────┐     ┌──────────┐     ┌──────────┐            │
│  │ 应用     │────▶│ 数据库   │     │ 缓存     │            │
│  │ 服务器   │     │ (PG)     │     │ (Redis)  │            │
│  └──────────┘     └──────────┘     └──────────┘            │
└─────────────────────────────────────────────────────────────┘

步骤3:识别威胁(每个元素的STRIDE)

## 威胁分析

### API网关

| STRIDE | 威胁                     | 可能性 | 影响   |
| ------ | -------------------------- | ---------- | -------- |
| S      | 伪造的JWT令牌          | 中等     | 高     |
| T      | 请求体操纵  | 低        | 中等   |
| R      | 缺失审计日志         | 中等     | 中等   |
| I      | 详细错误消息     | 高       | 中等   |
| D      | 速率限制绕过       | 中等     | 高     |
| E      | IDOR访问其他用户 | 中等     | 关键 |

### 数据库

| STRIDE | 威胁                        | 可能性 | 影响   |
| ------ | ----------------------------- | ---------- | -------- |
| S      | 连接冒充      | 低        | 关键 |
| T      | SQL注入                 | 中等     | 关键 |
| I      | 未加密备份           | 中等     | 高     |
| D      | 资源耗尽           | 低        | 高     |
| E      | 通过SQLi权限提升 | 中等     | 关键 |

步骤4:构建攻击树

                    ┌─────────────────────┐
                    │ 窃取用户数据     │
                    │ (根目标)         │
                    └─────────┬───────────┘
                              │
            ┌─────────────────┼─────────────────┐
            │                 │                 │
            ▼                 ▼                 ▼
    ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
    │ 危害    │ │ 利用应用   │ │ 社会        │
    │ 凭据   │ │ 漏洞 │ │ 工程   │
    └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
            │                 │                 │
    ┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐
    │               │ │               │ │               │
    ▼               ▼ ▼               ▼ ▼               ▼
┌────────┐   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│钓鱼│   │暴力   │ │SQL     │ │IDOR    │ │借口攻击│
│        │   │破解   │ │注入  │ │        │ │支持  │
└────────┘   └────────┘ └────────┘ └────────┘ └────────┘
[可能性:高,影响:高]    [可能性:中,影响:高]  [可能性:中,影响:关键]  [可能性:高,影响:高]  [可能性:中,影响:高]

步骤5:定义缓解措施

## 缓解计划

| 威胁         | 缓解措施                              | 优先级 | 状态      |
| -------------- | --------------------------------------- | -------- | ----------- |
| SQL注入  | 参数化查询、输入验证 | P0       | 进行中 |
| IDOR           | 所有端点的授权检查   | P0       | 未开始 |
| JWT伪造    | RS256签名、短有效期、轮换   | P1       | 完成        |
| 暴力破解    | 速率限制、账户锁定、MFA     | P1       | 部分     |
| 详细错误 | 生产中的通用错误消息          | P2       | 未开始 |

威胁模型文档模板

# 威胁模型:[系统名称]

**版本**:1.0
**日期**:YYYY-MM-DD
**作者**:[姓名]
**评审者**:[姓名]

## 1. 执行摘要

[高级发现和建议]

## 2. 系统描述

### 2.1 目的

### 2.2 架构概述

### 2.3 数据分类

### 2.4 信任边界

## 3. 资产

| 资产 | 分类 | 所有者 |
| ----- | -------------- | ----- |

## 4. 威胁分析

### 4.1 数据流图

### 4.2 按组件的STRIDE分析

### 4.3 攻击树

## 5. 风险评估

| 威胁 | DREAD分数 | 风险级别 |
| ------ | ----------- | ---------- |

## 6. 缓解措施

| 威胁 | 缓解措施 | 所有者 | 时间线 |
| ------ | ---------- | ----- | -------- |

## 7. 剩余风险

[接受的风险和理由]

## 8. 评审计划

[何时重新审视此威胁模型]

领域特定威胁建模

API威胁建模

REST、GraphQL和gRPC API的重点领域:

认证与授权

  • 基于令牌的认证漏洞(JWT、OAuth 2.0)
  • 破碎的对象级授权(BOLA/IDOR)
  • 破碎的函数级授权
  • API密钥泄露和轮换问题

数据暴露

  • 响应中过度数据暴露
  • 大规模分配漏洞
  • 生产中的GraphQL内省
  • 详细错误消息泄露架构

速率限制与滥用

  • 缺失或可绕过的速率限制
  • 资源耗尽(大负载、深查询)
  • 批量请求滥用
  • 分页漏洞

输入验证

  • 注入攻击(SQL、NoSQL、命令、LDAP)
  • XML外部实体(XXE)攻击
  • 服务器端请求伪造(SSRF)
  • GraphQL查询复杂性攻击

API特定缓解措施

  • 模式验证(OpenAPI、GraphQL模式)
  • 查询深度/复杂性限制
  • 字段级授权
  • API网关安全策略
  • 请求签名和重放保护

基础设施威胁建模

云、容器和编排的重点领域:

云服务

  • 配置错误的S3桶/Blob存储(公开访问)
  • IAM权限提升路径
  • 元数据服务滥用(SSRF到凭据)
  • 未加密存储/传输
  • 网络安全组配置错误

容器安全

  • 易受攻击的基础镜像
  • 环境变量/层中的秘密
  • 特权容器
  • 容器逃逸漏洞
  • 注册表安全(镜像签名、扫描)

编排(Kubernetes、Docker Swarm)

  • 暴露的API服务器(未经认证的kubelet)
  • RBAC配置错误
  • Pod安全策略/标准违规
  • 网络策略差距
  • 秘密管理(etcd加密、外部保险库)

CI/CD管道

  • 受损的构建代理
  • 依赖混淆/替换
  • 版本控制中的秘密
  • 未签名工件
  • 管道注入攻击

基础设施缓解措施

  • 基础设施即代码安全扫描
  • 最小权限IAM策略
  • 网络分段(VPC、子网、安全组)
  • 不可变基础设施模式
  • 运行时安全监控(Falco、OSSEC)

ML模型威胁建模

机器学习系统的重点领域:

对抗性攻击

  • 规避攻击(推理时的对抗性示例)
  • 中毒攻击(训练数据操纵)
  • 模型反演(提取训练数据)
  • 成员推断(检测数据是否在训练集中)

模型窃取

  • 通过API查询模型提取
  • 知识产权泄露
  • 超参数发现
  • 架构逆向工程

数据隐私

  • 训练数据暴露
  • 模型输出中的PII泄露
  • 差分隐私违规
  • GDPR解释权挑战

部署风险

  • 模型服务API漏洞
  • 特征存储中毒
  • 模型注册安全
  • A/B测试利用

ML特定缓解措施

  • 对抗性训练和鲁棒性测试
  • 输入消毒和异常检测
  • 模型水印
  • 差分隐私技术
  • 可解释性约束
  • 预测API的速率限制
  • 模型版本化和回滚能力

快速参考:按组件的常见威胁

Web应用

  • XSS、CSRF、点击劫持
  • 会话劫持
  • 不安全的直接对象引用
  • 开放重定向

API

  • 破碎的认证/授权
  • 大规模分配
  • 速率限制绕过
  • 注入攻击

数据库

  • SQL注入
  • 权限提升
  • 未加密数据
  • 备份暴露

认证

  • 凭据填充
  • 会话固定
  • 令牌泄露
  • MFA绕过

文件上传

  • 恶意软件上传
  • 路径遍历
  • 远程代码执行
  • 存储耗尽

第三方集成

  • API密钥暴露
  • Webhook欺骗
  • 供应链攻击
  • 数据泄露

最佳实践

  1. 迭代:随着系统发展更新威胁模型
  2. 协作:包括开发人员、运维和安全人员
  3. 优先级:首先关注高影响、可能的威胁
  4. 文档:维护活的威胁模型文档
  5. 验证:通过安全测试测试缓解措施
  6. 自动化:将威胁建模集成到SDLC中