关于 performing-threat-modeling-with-owasp-threat-dragon
该技能指导安全团队和开发者使用 OWASP Threat Dragon 绘制威胁模型、识别威胁并生成报告,适用于设计评审与安全评估。内容涵盖多种威胁分类方法及桌面和 Web 应用工作流。
主要功能
- 01创建数据流图和威胁模型
- 02应用 STRIDE、LINDDUN 等方法
- 03规则引擎建议威胁与缓解措施
- 04生成 PDF 报告
- 05支持 JSON 模型文件与 TMBOM 导出
适用场景
- 01在新功能设计阶段评估威胁
- 02架构变更后更新威胁模型
- 03整理缓解措施并分配负责人
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-threat-modeling-with-owasp-threat-dragon安装后在 Claude Code 中输入/performing-threat-modeling-with-owasp-threat-dragon确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用 OWASP Threat Dragon 执行威胁建模
概述
OWASP Threat Dragon 是一款开源威胁建模工具,可帮助安全团队和开发人员创建威胁模型图、使用成熟的方法论(STRIDE、LINDDUN、CIA、DIE、PLOT4ai)识别威胁,并生成全面的报告。Threat Dragon 既可以作为 Web 应用运行,也可以作为桌面应用运行(Windows、macOS、Linux),支持分布式团队协作开展威胁建模工作。2.x 版本提供拖放式图表创建、用于生成威胁和缓解措施的自动生成规则引擎,以及用于文档记录和 GRC 合规的 PDF 报告输出。
何时使用
- 在开展涉及使用 owasp threat dragon 执行威胁建模的安全评估时
- 在处理相关安全事件并遵循事件响应流程时
- 在执行计划内的安全测试或审计活动时
- 通过动手测试验证安全控制措施时
前提条件
- OWASP Threat Dragon 桌面应用或 Web 实例
- 理解数据流图(DFD)表示法
- 熟悉 STRIDE 或 LINDDUN 威胁分类
- 应用架构文档和网络图
- 设计评审会议所需的利益相关方访问权限
威胁建模方法论
STRIDE
| 类别 | 威胁类型 | 描述 | 示例 |
|---|---|---|---|
| S | 仿冒 | 冒充用户或系统 | 被盗的会话令牌 |
| T | 篡改 | 在传输中或静态存储时修改数据 | SQL 注入篡改记录 |
| R | 抵赖 | 否认某个操作发生过 | 缺少审计日志 |
| I | 信息泄露 | 暴露敏感数据 | API 返回过多字段 |
| D | 拒绝服务 | 使服务不可用 | 资源耗尽攻击 |
| E | 权限提升 | 获得未授权访问 | 访问控制失效 |
LINDDUN(聚焦隐私)
| 类别 | 威胁类型 | 描述 |
|---|---|---|
| L | 可关联性 | 跨上下文关联数据项 |
| I | 可识别性 | 根据数据识别个人 |
| N | 不可否认性 | 无法否认某个操作(隐私风险) |
| D | 可检测性 | 判断关于某个主体的数据是否存在 |
| D | 泄露 | 暴露个人信息 |
| U | 无感知 | 用户不知道数据被收集 |
| N | 不合规 | 违反隐私法规 |
工作流
第 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 元素添加图表:
进程:转换数据的应用、微服务、API 端点。用圆形/圆角矩形表示。
数据存储:持久化数据的数据库、文件系统、缓存、消息队列。用平行线表示。
外部实体:信任边界之外的用户、外部系统、第三方服务。用矩形表示。
数据流:元素之间的通信通道,显示数据方向。用带标签的箭头表示,标签描述数据。
信任边界:分隔不同信任级别区域(互联网/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": "E-Commerce Application",
"owner": "Security Team",
"description": "Threat model for the checkout flow"
},
"detail": {
"contributors": [
{"name": "Security Architect"}
],
"diagrams": [
{
"id": 0,
"title": "Checkout Flow",
"diagramType": "STRIDE",
"cells": []
}
]
}
}
CycloneDX TMBOM 集成
Threat Dragon 参与 CycloneDX 威胁模型物料清单(TMBOM)计划,支持导出为通用格式,可被其他威胁建模工具和 GRC 平台使用,避免供应商锁定。
最佳实践
- 从简开始:先从高层级 DFD(Level 0)开始,再分解为详细图表
- 让开发者参与:让开发团队成员参与威胁建模会议,以获得切合实际的威胁评估
- 限制会议时长:初次会议限制在 90 分钟内;在后续会议中迭代
- 按风险排定优先级:使用严重性评级(严重、高、中、低)来确定缓解措施的优先级
- 动态文档:将威胁模型视为随系统演进的动态文档
- 尽可能自动化:使用规则引擎进行初步威胁生成,然后手动完善