L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

performing-threat-modeling-with-owasp-threat-dragon

performing-threat-modeling-with-owasp-threat-dragon

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: performing-threat-modeling-with-owasp-threat-dragon description: 使用 OWASP Threat Dragon 创建数据流图,运用 STRIDE 和 LINDDUN 方法论识别威胁,并生成威胁模型报告用于安全设计审查。 domain: cybersecurity subdomain: devsecops tags: [threat-modeling, owasp, threat-dragon, stride, linddun, secure-design, dfd, data-flow] version: "1.0" author: mahipal license: Apache-2.0

使用 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 发布页 下载 Windows(.exe)、macOS(.dmg)或 Linux(.AppImage/.deb/.rpm)安装包。

Web 应用(Docker):

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 格式存储威胁模型,支持版本控制和程序化操作:

{
  "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. 尽可能自动化:使用规则引擎进行初始威胁生成,再手动完善

参考资料

Skills enregistrées