인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · 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

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