模型 / 数据集
mrwadams/stride-gpt avatar
mrwadams/stride-gpt

STRIDE GPT:把威胁建模变成一条可脚本化的流水线

An AI-powered threat modeling tool that leverages OpenAI's GPT models to generate threat models for a given application based on the STRIDE methodology.

1,123 个 Star324 个 ForkPythonMIT

秒懂

它是什么?
STRIDE GPT 用 LLM 按 STRIDE 方法生成威胁模型、攻击树和 DFD,并提供 CLI、Streamlit 界面与 SARIF 输出。它的价值在于把威胁建模从一次性会议变成可重复执行的命令,代价是结论质量完全取决于你喂给模型的系统描述。
适合谁用?
适合已经在做威胁建模、想把它纳入代码评审或 CI 流程的安全团队,以及需要给大量内部系统快速产出初稿的架构师。不适合把它当成合规交付物直接签字,也不适合没有能力复核 LLM 输出的团队。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

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

开源项目深度解析

它解决的是威胁建模的启动成本,不是判断力

威胁建模最难的部分往往不是分析,而是让人坐下来开始。团队需要先描述系统架构、认证方式、是否暴露在公网、是否处理敏感数据,然后才能逐条讨论 STRIDE 的六类威胁。STRIDE GPT 把这一步交给 LLM:你提供应用描述,模型按 STRIDE 方法输出威胁清单,并附带缓解建议、DREAD 评分和攻击树。README 明确说明输出完全基于用户提供的信息,也就是说它不会去扫描你的真实系统,不会验证你的描述是否与实际部署一致。这个定位决定了它的使用者画像:已经理解威胁建模方法、需要快速产出初稿的人,而不是指望工具替自己做安全判断的人。它还提供了 agentic 代码库分析,README 描述为把 CLI 指向一个代码库后,agent 会自行规划、探索并跨子系统汇总发现。这类自动探索的覆盖范围取决于模型和仓库结构,README 没有给出准确率或召回率数据,因此把它当作线索生成器比当作审计工具更稳妥。

从描述到 SARIF:数据在管道里怎么流动

整条链路可以拆成四段。第一段是输入:应用描述文本、上传的架构图或流程图图片、GitHub 仓库分析结果,以及通过嵌入式 draw.io 编辑器产出的图。README 指出 draw.io 图会以 XML 解析,提取组件、连接和信任边界,这比单纯做图像识别能提供更丰富的上下文,原有的图片上传流程保持不变。第二段是模型调用,通过 LiteLLM 统一接入 OpenAI、Anthropic、Google AI、Mistral、Groq、DeepSeek,也可以指向本地 LM Studio Server。第三段是生成,包括威胁模型、攻击树、DFD、Gherkin 测试用例,以及 MITRE ATT&CK Enterprise 与 ATLAS 的技术编号标注。第四段是输出格式:Markdown、JSON、SARIF 和自包含 HTML。SARIF 这一项值得单独说,README 说明它可以导入 GitHub、GitLab、Azure DevOps 和 IDE,MITRE 编号在 SARIF 里以 mitre_attack 属性出现,在 Markdown 里是列,在 HTML 里是可点击的标签。这种多形态输出意味着同一份结果既能给人看,也能进工具链。DFD 还有一个细节:README 提到 CLI 的 /analyze 会在给出发现的同时输出系统级 DFD,并且确认后的 Mermaid 图会被回填进威胁模型和攻击树提示词,作为权威系统模型。这个回填机制是整个设计里最实在的一环,它让图不只是展示物,而是后续推理的输入。

装起来:uv、pip 与那个容易忽略的版本号

README 的安装章节给出的是 pip install stride-gpt,v0.19.0 的更新说明则明确写了依赖管理已经统一到 uv,uv.lock 成为唯一事实来源,重复的 requirements.txt 被移除,Docker UI 镜像和安全扫描工作流都通过 uv export 从 uv.lock 安装。对用 pip 安装的用户,发布说明称没有变化。这里有一个实际影响:如果你在自建镜像或 CI 里仍然引用 requirements.txt,升级到 0.19 之后那条路径就不存在了。确认版本的方式在更新说明里写得很清楚:stride-gpt --version 会打印已安装版本并退出,交互式 TUI 的横幅也会显示当前运行版本。这个改动看起来小,但它解决的是一类真实问题:当输出结果异常时,你首先需要知道跑的是哪个版本。运行方式有两条:Streamlit 网页界面,或者带 Tab 补全、历史记录和实时进度的 CLI 与交互式 REPL。README 提到 CLI 有交互式 REPL 速查表,适合不想开浏览器的人。配置方面,README 列出了环境变量支持,其中唯一具名的是 STRIDE_GPT_DRAWIO_URL,用于把嵌入式编辑器从托管的 embed.diagrams.net 指向自建 draw.io,面向自托管或气隙部署。README 还声明不做数据存储,应用详情不会被保存,这一条对处理敏感架构信息的团队是关键前提,但它描述的是应用自身行为,模型提供方那一侧的日志策略需要你自己去核对。

输出好看不等于输出正确

这个工具最大的风险不是崩溃,而是生成一份读起来非常专业的威胁模型,而其中包含并不适用于你系统的条目。README 反复强调输出基于用户提供的信息,这意味着输入描述里的任何遗漏都会直接变成威胁清单里的盲区。你写“使用 OAuth 2.0”而没有说明令牌存储位置,模型就只能给出通用建议。DREAD 评分是另一个需要警惕的地方:评分由模型给出,不同次运行之间是否稳定,README 没有说明,也没有给出任何一致性测试。MITRE ATT&CK 与 ATLAS 的编号标注同样如此,编号看起来权威,但映射是否准确需要人工核对,README 没有提供映射的验证方法。攻击树和 Gherkin 测试用例属于衍生输出,它们建立在前面威胁清单的基础上,如果基础清单有偏差,后面这些只会把偏差放大。还有一个容易被忽略的边界:agentic 代码库分析听起来最像自动化审计,但它依然是通过模型理解代码,不是通过数据流分析或污点追踪。把它当作一次快速的架构走查是合理的,把它当作渗透测试或代码审计的替代品是误用。

和纯人工工作流以及通用 LLM 对话的区别

最直接的替代方案是用通用 LLM 聊天界面手工做威胁建模。两者的差别不在模型能力上,而在工程约束上。手工对话没有 STRIDE 的结构化框架约束,没有 DREAD 评分字段,没有攻击树和 Gherkin 的固定产出,也没有 SARIF 这种能进代码扫描平台的格式。STRIDE GPT 把这些固定成了提示词模板和输出管道,代价是灵活性下降:如果你的组织用的是 LINDDUN 或 PASTA 而不是 STRIDE,这个工具的方法论框架就不匹配。另一个替代方向是传统的手工威胁建模会议配合 Microsoft Threat Modeling Tool 这类画图工具。那条路线的优势是人在回路中,讨论过程本身就是价值;劣势是难以规模化,一个季度能覆盖的系统数量有限。STRIDE GPT 的位置在两者之间:它比手工会议快,比通用对话有结构,但两者都不如人工评审可靠。README 提到的 Operationalization Guide 指向的是另一类需求,即注入组织自己的安全控制项和合规要求,这实际上承认了开箱输出需要被本地化,否则很难直接用于内部评审。

维护成本与 MIT 许可下的现实约束

项目采用 MIT 许可,这是最宽松的一类许可,允许修改、分发和商业使用,只需保留版权声明与许可文本。需要说明的是,这不构成法律意见,如果你打算把 STRIDE GPT 的输出或代码嵌入商业产品或合规流程,许可条款与内部政策需要由法务确认。维护成本主要来自两个方向。第一是模型侧:README 列出的高级推理模型支持包括 OpenAI GPT-5.4/5.5 系列、Anthropic Claude 4.6/4.8 的 Extended Thinking、Google Gemini 3 和 Mistral Magistral 系列,模型迭代速度很快,提示词模板可能需要跟随调整,而这类调整不会体现在版本号里。第二是依赖侧:v0.19.0 把依赖收敛到 uv.lock,好处是锁定的依赖与实际构建、扫描的依赖不再漂移,代价是你的构建流程需要接受 uv 作为工具链的一部分。从发布节奏看,项目从 0.18 到 0.19 引入了嵌入式 draw.io 编辑器和依赖管理重构,属于持续演进状态,跟随升级需要投入时间。README 也提供了 Docker 镜像和面向企业的部署指南,对有平台团队的组织来说,自建部署比依赖公共 Streamlit 实例更可控,尤其是当输入里包含内部架构信息时。

编辑结论

适合已经在做威胁建模、想把它纳入代码评审或 CI 流程的安全团队,以及需要给大量内部系统快速产出初稿的架构师。不适合把它当成合规交付物直接签字,也不适合没有能力复核 LLM 输出的团队。采用前先确认三件事:stride-gpt --version 输出的版本与你锁定的 uv.lock 是否一致;STRIDE_GPT_DRAWIO_URL 在你的网络里能否访问到 embed.diagrams.net 或自建实例;以及你选定的模型是否在 LiteLLM 支持列表内。

官方来源

  1. License: MIT
  2. mrwadams/stride-gpt on GitHub
  3. Project website
  4. README
  5. Releases
社区笔记

社区笔记