开源项目
OWASP/threat-dragon avatar
OWASP/threat-dragon

OWASP Threat Dragon:画数据流图时就把威胁清单列出来

OWASP 的开源威胁建模工具。 [ ][构建] [ ][最新] [ ][实践] OWASP Threat Dragon [OWASP][owasp] [Threat Dragon][项目] 是一个免费、开源、跨平台威胁建模应用程序。

1,591 个 Star400 个 ForkJavaScriptApache-2.0

秒懂

它是什么?
Threat Dragon 是 OWASP 旗下的开源威胁建模工具,用画数据流图的方式引导团队列出威胁并记录缓解措施。本文基于其官方文档与仓库信息,说明它适合谁、怎么跑起来,以及它在版本迭代和外部存储接入上的真实边界。
适合谁用?
适合需要以数据流图为核心、希望把威胁建模门槛压低的团队,尤其是刚接触威胁建模、不想从空白模板开始的组织。不适合那些要求威胁库可编程扩展、或必须与内部系统深度集成的团队,因为它的核心交互是画图加填表,外部仓库仅作为文件存储。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 JavaScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是威胁建模的起步障碍

很多团队知道要做威胁建模,但不知道从哪里下笔。Threat Dragon 给出的答案是:先画数据流图,再针对图里的每个元素列威胁。它的定位不是自动化扫描器,而是一个引导工具。OWASP 官方把它描述为用于绘制威胁建模图并为图中元素列出威胁的应用。这意味着它默认你遵循 STRIDE 这类基于元素的思考方式,但不强制你用某种具体方法。对刚起步的团队,这种从图形入手的路径比面对一张空白威胁清单要友好得多。它面向的是各类团队,强调灵活和简单,不是给安全专家准备的专属武器。

图是入口,威胁列表是产出

从仓库结构看,应用分为两个部分:后端 td.server 负责存储和外部服务对接,前端 td.vue 用 Vue.js 实现绘图界面。用户操作的核心流程是:在画布上拖出组件,连线表示数据流动,然后为每个组件添加威胁条目和缓解措施。威胁不是自动生成的,工具只提供建议和记录框架。这个设计有它的代价:它不帮你发现威胁,只帮你把已经想到的威胁组织起来。对于想靠工具自动发现问题的团队,这个预期需要先调整。图与威胁列表的绑定关系是它的核心机制,也是它区别于普通绘图软件的地方。

三种跑法:桌面版、Docker 和源码

官方提供了多条运行路径。桌面版直接下载 Windows、MacOS、Linux 安装包,文件存在本地,不碰外部仓库。Docker 方式最直接,拉取稳定版镜像即可:docker pull threatdragon/owasp-threat-dragon:stable,然后运行 docker run -it --rm -p 8080:3000 -v $(pwd)/.env:/app/.env threatdragon/owasp-threat-dragon:v2.2.0。注意这里的 .env 文件需要你自己准备,里面配置环境变量。源码运行则先 git clone https://github.com/owasp/threat-dragon.git,然后 npm install。开发时在 Windows 上要分开跑 npm run dev:server 和 npm run dev:vue,Linux 或 MacOS 可以直接 npm start,浏览器访问 http://localhost:8080/。三条路径的差异主要在文件存储位置和外部服务接入能力上。

web 版的外部仓库接入是双刃剑

web 版可以配置访问 GitHub、Bitbucket、GitLab 和 GitHub Enterprise,威胁模型文件能存到这些远程仓库里。这对多人协作有意义,但接入成本不低。你需要去对应平台注册应用,拿到凭证后配置环境变量。README 里提供了 Bitbucket、GitHub、GitLab 的分步指南链接,但没有给出具体的配置键名,实际设置时需要查阅文档页面。桌面版没有这个能力,文件只留在本地。这个取舍很明显:要协作就得上 web 版并处理 OAuth 配置,要省事就用桌面版但放弃远程存储。没有两全的方案。另外,Docker 镜像的 latest 标签可能是开发版本,官方明确建议用 stable 标签,这个细节容易踩坑。

版本分裂是迁移时必须算的账

Threat Dragon 1.x 用 AngularJS 写的,但 AngularJS 已停止维护,所以 1.x 进入维护模式,不再积极开发。2.x 用 Vue.js 重写,这是当前的主线。对老用户来说,迁移不只是升级版本,而是换了一个前端框架,插件或自定义逻辑大概率要重写。仓库里保留了 legacy-v1.x 分支供参考,但官方态度明确:新功能都在 2.x。如果你正在用 1.x,需要评估现有模型文件的兼容性,README 没有说明 1.x 的模型能否直接导入 2.x。这是一个需要自己验证的点。项目本身遵循 Apache-2.0 许可证,可以自由修改和再分发,但修改后的版本如果对外提供,需要注意许可证对衍生作品的要求。

它不做什么,比它做什么更重要

Threat Dragon 不生成威胁报告,不自动评估风险等级,也不提供漏洞扫描。它把威胁建模压缩成两个动作:画图、填表。这种简化对新手友好,但对有成熟威胁建模流程的团队可能显得单薄。例如,它没有内置的威胁库分类浏览功能,也没有与常见漏洞数据库的联动机制。如果你需要的是能根据组件类型自动推荐威胁列表的工具,Threat Dragon 不是这个答案。它的价值在于提供一个低门槛的起点,让团队先跑起来,而不是一步到位。另一个现实限制是它的社区支持渠道主要是 OWASP 邮件组和 Slack 频道,没有商业支持选项,出了问题要自己查文档或提 issue。

和同类工具的差异在交互哲学上

与 Microsoft Threat Modeling Tool 相比,Threat Dragon 的差异不在功能列表,而在运行方式。微软的工具是 Windows 桌面应用,模型文件存在本地,威胁生成依赖内置的模板和规则。Threat Dragon 跨平台,且 web 版能对接 Git 系仓库,天然适合团队协作。另一个区别是 Threat Dragon 的安装门槛更低,Docker 一行命令就能起服务,而微软工具需要 Windows 环境。但微软工具在威胁自动生成方面更激进,Threat Dragon 更偏向手动记录。选择哪个取决于你的团队是想要一个自动建议的引擎,还是一个自由绘图的画板。两者都是图驱动,但前者帮你思考,后者帮你记录。

编辑结论

适合需要以数据流图为核心、希望把威胁建模门槛压低的团队,尤其是刚接触威胁建模、不想从空白模板开始的组织。不适合那些要求威胁库可编程扩展、或必须与内部系统深度集成的团队,因为它的核心交互是画图加填表,外部仓库仅作为文件存储。采用前先确认两件事:一是团队是否接受以图为中心的工作流,二是你选用的部署方式(桌面版、Docker、源码运行)对应的文件存储路径是否满足合规要求。若选择 web 版并接入 GitHub、GitLab 或 Bitbucket,需提前完成 OAuth 应用注册,这步的配置文档是现成的,但实际权限审批往往比预想耗时。Threat Dragon 的价值在于把威胁建模从文档任务变成画图任务,它不替你思考威胁,只负责把思考过程结构化。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记