# Performing Threat Modeling With Owasp Threat Dragon

> 使用 OWASP Threat Dragon 创建数据流图，运用 STRIDE 和 LINDDUN 方法论识别威胁，并生成威胁模型报告用于安全设计审查。

- Skill: `killvxk/performing-threat-modeling-with-owasp-threat-dragon` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/performing-threat-modeling-with-owasp-threat-dragon`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/performing-threat-modeling-with-owasp-threat-dragon/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/performing-threat-modeling-with-owasp-threat-dragon

---


# 使用 OWASP Threat Dragon 执行威胁建模

## 概述

OWASP Threat Dragon 是一个开源威胁建模工具，使安全团队和开发人员能够创建威胁模型图、使用成熟方法论（STRIDE、LINDDUN、CIA、DIE、PLOT4ai）识别威胁，并生成全面报告。Threat Dragon 可作为 Web 应用和桌面应用（Windows、macOS、Linux）运行，支持分布式团队协作开展威胁建模。2.x 版本提供拖放式图表创建、威胁和缓解措施自动生成规则引擎，以及用于文档和 GRC 合规的 PDF 报告输出。

## 前置条件

- OWASP Threat Dragon 桌面应用或 Web 实例
- 理解数据流图（DFD）符号
- 熟悉 STRIDE 或 LINDDUN 威胁分类
- 应用架构文档和网络图
- 设计审查会议的利益相关者访问权限

## 威胁建模方法论

### STRIDE

| 类别 | 威胁类型 | 描述 | 示例 |
|----------|-------------|-------------|---------|
| S | 欺骗（Spoofing） | 冒充用户或系统 | 会话令牌盗用 |
| T | 篡改（Tampering） | 修改传输中或静止的数据 | SQL 注入改变记录 |
| R | 抵赖（Repudiation） | 否认某操作已发生 | 缺少审计日志 |
| I | 信息泄露（Information Disclosure） | 暴露敏感数据 | API 返回过多字段 |
| D | 拒绝服务（Denial of Service） | 使服务不可用 | 资源耗尽攻击 |
| E | 权限提升（Elevation of Privilege） | 获取未授权访问 | 访问控制失效 |

### LINDDUN（隐私专项）

| 类别 | 威胁类型 | 描述 |
|----------|-------------|-------------|
| L | 可关联性（Linkability） | 跨上下文关联数据项 |
| I | 可识别性（Identifiability） | 从数据中识别个人身份 |
| N | 不可否认性（Non-repudiation） | 无法否认某操作（隐私风险） |
| D | 可检测性（Detectability） | 确定是否存在关于某主体的数据 |
| D | 信息泄露（Disclosure） | 暴露个人信息 |
| U | 不知情（Unawareness） | 用户不知晓数据收集 |
| N | 违规（Non-compliance） | 违反隐私法规 |

## 实施步骤

### 步骤 1 --- 安装 Threat Dragon

**桌面应用：**
从 [OWASP Threat Dragon 发布页](https://github.com/OWASP/threat-dragon/releases) 下载 Windows（.exe）、macOS（.dmg）或 Linux（.AppImage/.deb/.rpm）安装包。

**Web 应用（Docker）：**
```bash
docker run -p 3000:3000 \
  -e ENCRYPTION_JWT_SIGNING_KEY=$(openssl rand -hex 32) \
  -e ENCRYPTION_JWT_REFRESH_SIGNING_KEY=$(openssl rand -hex 32) \
  -e ENCRYPTION_KEYS='[{"isPrimary":true,"id":0,"value":"'$(openssl rand -hex 16)'"}]' \
  -e NODE_ENV=production \
  owasp/threat-dragon:latest
```

### 步骤 2 --- 定义范围

在创建图表前，记录范围：
- 系统名称和描述
- 需要保护的资产（用户数据、凭据、支付信息）
- 外部依赖（第三方 API、云服务）
- 合规要求（GDPR、HIPAA、PCI DSS）
- 信任边界（网络段、认证区域）

### 步骤 3 --- 创建数据流图

在 Threat Dragon 中创建新威胁模型，使用以下 DFD 元素添加图表：

**处理（Process）**：转换数据的应用程序、微服务、API 端点。用圆圈/圆角矩形表示。

**数据存储（Data Store）**：持久化数据的数据库、文件系统、缓存、消息队列。用平行线表示。

**外部实体（External Entity）**：信任边界外的用户、外部系统、第三方服务。用矩形表示。

**数据流（Data Flow）**：元素之间显示数据方向的通信通道。用带标签的箭头表示，标签描述数据内容。

**信任边界（Trust Boundary）**：分隔不同信任级别区域的虚线（互联网/DMZ/内部网络、用户/管理员）。

### 步骤 4 --- 识别威胁

对每个 DFD 元素应用 STRIDE 方法论：

| 元素类型 | 适用的 STRIDE 类别 |
|-------------|------------------------------|
| 外部实体 | 欺骗、抵赖 |
| 处理 | 欺骗、篡改、抵赖、信息泄露、DoS、权限提升 |
| 数据存储 | 篡改、信息泄露、DoS |
| 数据流 | 篡改、信息泄露、DoS |

Threat Dragon 的规则引擎根据元素类型自动建议威胁。审查每个建议并标记为：
- **已缓解**：现有控制措施解决了该威胁
- **不适用**：威胁在此上下文中不适用
- **开放**：威胁需要处理（分配优先级和负责人）

### 步骤 5 --- 定义缓解措施

对每个开放威胁，记录：
- 缓解策略（预防、检测、响应、转移）
- 具体技术控制（加密、认证、速率限制）
- 负责实施的所有者
- 补救的优先级和时间表

### 步骤 6 --- 生成报告

Threat Dragon 生成包含以下内容的 PDF 报告：
- 威胁模型执行摘要
- 带注释的数据流图
- 带严重性评级的威胁清单
- 缓解状态和建议
- 适用时的合规映射

### 步骤 7 --- 集成到 SDLC

- 在新功能设计阶段进行威胁建模
- 架构变更时更新威胁模型
- 在安全设计审查期间审查威胁模型
- 将威胁模型文件与代码一起存储在版本控制中
- 在安全验收标准中引用威胁模型发现

## 威胁模型文件格式

Threat Dragon 使用 JSON 格式存储威胁模型，支持版本控制和程序化操作：

```json
{
  "version": "2.2.0",
  "summary": {
    "title": "电子商务应用",
    "owner": "安全团队",
    "description": "结账流程的威胁模型"
  },
  "detail": {
    "contributors": [
      {"name": "安全架构师"}
    ],
    "diagrams": [
      {
        "id": 0,
        "title": "结账流程",
        "diagramType": "STRIDE",
        "cells": []
      }
    ]
  }
}
```

## CycloneDX TMBOM 集成

Threat Dragon 参与 CycloneDX 威胁模型物料清单（TMBOM）工作，支持导出到可被其他威胁建模工具和 GRC 平台使用的通用格式，避免供应商锁定。

## 最佳实践

1. **从简单开始**：先从高层 DFD（0 级）开始，再分解为详细图表
2. **让开发人员参与**：在威胁建模会议中邀请开发团队成员，以进行实际威胁评估
3. **设定时间限制**：初次会议控制在 90 分钟内；在后续会议中迭代
4. **按风险优先排序**：使用严重性评级（严重、高、中、低）为缓解措施排优先级
5. **活文档**：将威胁模型视为随系统演进的活文档
6. **尽可能自动化**：使用规则引擎进行初始威胁生成，再手动完善

## 参考资料

- [OWASP Threat Dragon](https://owasp.org/www-project-threat-dragon/)
- [Threat Dragon GitHub 仓库](https://github.com/OWASP/threat-dragon)
- [OWASP 威胁建模速查表](https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html)
- [STRIDE 威胁模型](https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats)
- [LINDDUN 隐私威胁建模](https://www.linddun.org/)

