exit-zero-labs/threat-forge
GitHub: exit-zero-labs/threat-forge
一款跨平台开源威胁建模工具,通过可视化画布、STRIDE 引擎和 AI 辅助分析,生成 Git 友好的 YAML 文件,是 Microsoft TMT 的现代化替代方案。
Stars: 4 | Forks: 0
面向持续交付团队的开源威胁建模工具
入门指南 • 功能特性 • 文件格式 • 参与贡献 • 官方网站
ThreatForge 是一款跨平台的威胁建模桌面应用。它生成人类可读、支持 git diff 的 YAML 文件,并利用 AI 加速威胁分析。该工具基于 [Tauri v2](https://v2.tauri.app/) 和 React 构建,支持在 macOS、Windows 和 Linux 上运行。 ## 问题背景 现有的威胁建模工具分化为两个阵营。一边是 Microsoft 的 Threat Modeling Tool —— 免费但仅限 Windows 平台,界面停留在 2016 年水平,且使用无法进行 diff、code review 或版本控制的 `.tm7` 二进制文件。另一边则是像 IriusRisk 和 ThreatModeler 这样的企业级平台,价格高达每年 2 万美元以上。 对于那些想要现代化界面、清晰文件格式以及 AI 辅助,却不想经历复杂采购流程的开发者来说,中间存在巨大的空白。 ThreatForge 正是为了填补这一空白。 ## 功能特性 ### 可视化数据流图 支持拖拽操作的画布,用于构建数据流图。包含 10 个分类下的 44 种类型化组件(服务、数据库、消息传递、基础设施、安全、客户端、网络、云/平台等),以及可调整大小的信任边界和文本注解。连接手柄会在元素间自动布线。 ### STRIDE 威胁引擎 内置规则引擎,将 Microsoft 的 STRIDE-per-element 方法论应用于您的架构。根据元素类型和数据流模式自动生成威胁。跨边界的数据流会被提升严重等级。无需 AI —— 完全离线可用。 ### AI 辅助分析 与 Claude 或 GPT 聊天讨论您的威胁模型。AI 能看到您的完整架构 —— 元素、数据流、信任边界和现有威胁 —— 并可以建议新威胁、提出缓解措施或回答安全问题。一键即可将 AI 建议的威胁纳入您的模型。 自带 API key。支持 Anthropic (Claude Opus 4, Sonnet 4, Haiku 3.5) 和 OpenAI (GPT-4o, GPT-4o Mini)。密钥在静态存储时使用 AES-256-GCM 加密。 ### 从 Microsoft TMT 导入 导入 Microsoft Threat Modeling Tool 生成的 `.tm7` 文件。ThreatForge 会将元素、数据流、信任边界和威胁转换为原生的 `.thf` 格式 —— 保留位置和 STRIDE 分类。告别 Windows 锁定。 ### 预置模板 从六个生产级模板开始:**Cloud Microservices**、**E-Commerce Platform**、**Mobile Banking**、**SaaS Platform**、**IoT Smart Building** 和 **Healthcare System**。每个模板都包含完整的数据流图,涵盖元素、信任边界、数据流和 STRIDE 威胁。 ### 15 种主题 8 种深色主题 (Midnight, Slate, Nord, Dracula, Monokai, GitHub Dark, One Dark, Catppuccin Mocha) 和 7 种浅色主题 (Daylight, Warm Sand, High Contrast, GitHub Light, Solarized Light, One Light, Catppuccin Latte)。自动检测系统偏好。 ### 键盘优先的工作流 - **命令面板** (`Cmd/Ctrl+K`),支持跨所有操作和组件的模糊搜索 - **27+ 键盘快捷键**,用于文件操作、画布导航、面板切换等 - **撤销/重做**,拥有完整的状态历史记录 - **可调整大小的面板** —— 左侧为组件面板,右侧为属性/威胁/AI 面板 - **画布小地图**、网格吸附和方向键微调 - 在模型间 **复制/粘贴** 元素 - 面向新用户的 **交互式入门指南** - **自动更新器**,带签名验证 ## 文件格式 `.thf` 格式是单个 YAML 文件 —— 人类可读、支持 git diff 且便于移植。无二进制数据块,无伴随文件,无厂商锁定。 ``` # ThreatForge 威胁模型 version: "1.0" metadata: title: "Payment Processing Service" author: "Alex Chen" created: 2026-03-15 elements: - id: api-gateway type: process name: "API Gateway" trust_zone: dmz technologies: [nginx, rate-limiting] position: { x: 400, y: 200 } - id: payment-db type: data_store name: "Payment Database" trust_zone: internal encryption: AES-256-at-rest position: { x: 700, y: 200 } data_flows: - id: flow-1 from: api-gateway to: payment-db protocol: PostgreSQL/TLS data: [transaction_records] trust_boundaries: - id: boundary-1 name: "Corporate Network" contains: [api-gateway, payment-db] threats: - id: threat-1 title: "SQL Injection on payment queries" category: Tampering element: api-gateway severity: High mitigation: status: mitigated description: "Parameterized queries via ORM" ``` 每个元素、流、边界和威胁都是一个独立的 YAML 块。添加组件或解决威胁会产生清晰、可审查的 diff。查看完整的 [文件格式规范](docs/knowledge/file-format.md)。 ## 入门指南 ### 前置条件 - [Node.js](https://nodejs.org/) 20+ - [Rust](https://www.rust-lang.org/tools/install) (stable) - 适用于您平台的 [Tauri v2 前置条件](https://v2.tauri.app/start/prerequisites/) ### 安装与运行 ``` git clone https://github.com/exit-zero-labs/threat-forge.git cd threat-forge npm install npm run tauri dev ``` 开发服务器将在端口 1420 上启动,支持热重载。 ### 构建 ``` npm run tauri build ``` 生成适用于您平台的原生桌面二进制文件(约 10MB)。 ### 测试 ``` npx vitest --run # 417+ frontend tests cargo test --manifest-path src-tauri/Cargo.toml # 73+ Rust tests ``` ### 代码检查 ``` npx biome check . # TypeScript cargo clippy --manifest-path src-tauri/Cargo.toml # Rust ``` ### 本地 CI ``` npm run ci:local # Native lint + test (~30s) npm run ci:docker # Docker lint + test (clean environment) npm run ci:docker:build # Docker lint + test + Tauri build ``` ## 技术栈 | 层级 | 技术 | |-------|-----------| | 桌面框架 | [Tauri v2](https://v2.tauri.app/) (Rust 后端,原生 webview) | | 前端 | React 19, TypeScript 5 (strict), Tailwind CSS 4, shadcn/ui | | 图表绘制 | [ReactFlow / xyflow](https://reactflow.dev/) | | 状态管理 | Zustand | | 文件格式 | 自定义 YAML schema (serde_yaml) | | 测试 | Vitest + React Testing Library, cargo test, Playwright | | 代码检查 | Biome (TypeScript), Clippy (Rust) | | CI/CD | GitHub Actions (矩阵: macOS, Windows, Linux) | ## 架构 ``` ┌──────────────────────────────────────────────────┐ │ Tauri v2 Shell │ ├────────────────────┬─────────────────────────────┤ │ React Frontend │ Rust Backend │ │ │ │ │ ReactFlow Canvas ◄──IPC──► File I/O (YAML) │ │ Zustand Stores ◄──IPC──► STRIDE Engine │ │ AI Chat Pane ◄──IPC──► AI Providers (SSE) │ │ Settings / UI ◄──IPC──► Key Storage (AES) │ └────────────────────┴─────────────────────────────┘ │ │ ▼ ▼ Local .thf files LLM APIs (optional) (Anthropic / OpenAI) ``` 所有 AI 调用均使用用户的 API key 直接从用户机器发起。无代理,无关于模型内容的遥测。查看完整的 [架构文档](docs/knowledge/architecture.md)。 ## 安全性 ThreatForge 是一款安全工具 —— 我们对自身代码的安全标准极高。 - **API keys** 在静态存储时使用 AES-256-GCM 加密 - **AI 调用** 直接发往提供商 —— 无中间服务器 - **LLM 输出** 被视为不可信输入,并在渲染前进行清洗 - **文件路径** 通过 Tauri 的能力系统进行作用域限制 - **严格的 CSP** —— 无内联脚本,无远程代码加载 - **自动更新** 经过签名验证 - **最小依赖** —— 使用 `cargo audit` 和 `npm audit` 进行审计 如需报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。请勿公开发布 issue。 ## 许可证 Copyright 2026 Exit Zero Labs LLC. 根据 [Apache License 2.0](LICENSE) 授权。
由 Exit Zero Labs 构建。Ship clean. Build forward.
标签:AI辅助, DevSecOps, DFD, Git友好, Microsoft TMT替代, React, Rust, SDL, STRIDE分析, Syscalls, Tauri, TypeScript, YAML, 上游代理, 人工智能, 可视化界面, 威胁建模, 威胁识别, 安全库, 安全开发生命周期, 安全插件, 安全设计, 开源, 微服务安全, 敏捷安全, 数据流图, 架构安全, 桌面应用, 用户模式Hook绕过, 网络安全, 网络流量审计, 自动化攻击, 隐私保护