iiamit/CyberQRM

GitHub: iiamit/CyberQRM

一个基于 FAIR v3.1 的本地定量网络安全风险评估平台,提供蒙特卡洛模拟与 ALE 分析。

Stars: 1 | Forks: 0

# CyberQRM – 定量网络安全风险管理 一个本地、开源的**定量网络安全风险评估**平台,采用 [FAIR v3.1](https://www.fairinstitute.org/)(信息风险因子分析)框架。可对威胁进行建模、运行蒙特卡洛模拟、衡量控制有效性并管理风险组合——全部在浏览器中完成,无需云账户。 ## 功能特性 - **基于 FAIR 的风险建模** — 为每个场景使用三角分布、对数正态分布或点分布定义威胁事件频率、脆弱性、资产价值和损失事件影响 - **蒙特卡洛模拟引擎** — 10,000 次迭代的模拟,支持可配置的随机种子以确保结果可复现 - **年度损失预期(ALE)分析** — 提供均值、中位数、百分位(P10–P99)以及 90%/95% 置信区间 - **敏感性/龙卷风图表** — 识别驱动最高风险的 FAIR 组件 - **控制有效性分析** — 建模当前与拟建控制措施;计算 ALE 降低、ROI 和投资回收期 - **组合管理** — 聚合多个场景以了解组织范围的风险 - **本地持久化存储** — 使用 SQLite 数据库,数据不会离开您的设备 - **完全离线** — 安装后无需互联网连接即可使用 ## 截图 ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2bbb09da34053051.png) ![模拟结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6b33d5d30b053052.png) ## 先决条件 | 要求 | 版本 | 说明 | |------|------|------| | **Node.js** | 22.5 或更高版本 | 使用 v22.5 引入的内置 `node:sqlite` 模块 | | **npm** | 随 Node.js 附带 | 无需单独安装 | ### 安装 Node.js - **官方安装程序(推荐)**:[nodejs.org/en/download](https://nodejs.org/en/download) — 选择 “Current” 或 “LTS ≥ 22” 版本 - **macOS 通过 Homebrew**:`brew install node` - **任意平台通过 nvm**:`nvm install 22 && nvm use 22` - **Windows 通过 winget**:`winget install OpenJS.NodeJS` ## 安装 ### macOS / Linux ``` # 克隆仓库 git clone https://github.com//CyberQRM.git cd CyberQRM # 运行安装程序(检查 Node 版本,安装所有依赖项) chmod +x install.sh ./install.sh ``` ### Windows ``` # 克隆仓库(Git Bash、PowerShell 或任意终端) git clone https://github.com//CyberQRM.git cd CyberQRM # 运行安装程序(双击或从终端运行) install.bat ``` 安装程序将执行以下操作: 1. 验证是否存在 Node.js 22.5+,若不存在则显示有帮助的错误信息 2. 安装根、后端和前端 `npm` 依赖项 3. 为 SQLite 数据库创建 `backend/data/` 目录 ## 运行应用 ### macOS / Linux ``` ./start.sh ``` 这将打开两个终端窗口(或 Linux 无桌面环境下的后台进程)— 一个用于后端 API,一个用于前端开发服务器,然后自动打开浏览器。 ### Windows ``` start.bat ``` 将打开两个控制台窗口(后端和前端)。浏览器将在 5 秒后自动打开。 应用运行后,可通过以下地址访问: | 服务 | URL | |------|-----| | **前端** | http://localhost:5173 | | **后端 API** | http://localhost:3001 | | **健康检查** | http://localhost:3001/api/health | ## 项目结构 ``` CyberQRM/ ├── backend/ # Express.js + TypeScript API │ ├── src/ │ │ ├── index.ts # Server entry point (port 3001) │ │ ├── db/ # SQLite adapter & schema │ │ ├── routes/ # REST endpoints (scenarios, controls, portfolios) │ │ ├── services/ # Business logic & Monte Carlo engine │ │ └── middleware/ # Error handling │ └── data/ # SQLite database (auto-created on first run) ├── frontend/ # React 18 + Vite + TypeScript │ └── src/ │ ├── pages/ # Dashboard, Scenarios, Controls, Portfolios │ ├── components/ # Charts, forms, UI primitives │ ├── store/ # Zustand state management │ └── utils/ # API client, formatting, report generator ├── shared/ # Shared TypeScript types (FAIR data model) ├── install.sh # macOS/Linux installer ├── install.bat # Windows installer ├── start.sh # macOS/Linux launcher └── start.bat # Windows launcher ``` ## 技术栈 | 层级 | 技术 | |------|------| | 前端框架 | React 18、TypeScript、Vite | | 样式 | Tailwind CSS | | 状态管理 | Zustand、TanStack React Query | | 图表 | Recharts | | 后端框架 | Express.js、TypeScript | | 数据库 | 通过 Node.js 内置的 `node:sqlite` 使用 SQLite | | 校验 | Zod | ## 工作原理 CyberQRM 以四个步骤实现 FAIR 方法论: 1. **定义场景** — 为资产、威胁行为者和业务上下文命名 2. **设置 FAIR 参数** — 输入威胁事件频率、脆弱性、资产价值和损失影响的分布 3. **运行模拟** — 引擎对每个分布采样 10,000 次并计算 ALE 4. **分析结果** — 查看 ALE 百分位、敏感度驱动因素和控制 ROI 数据库会在首次运行时自动创建(`backend/data/cyberqrm.db`)。所有数据保留在本地机器上。 ## 开发 若要启用热重载进行开发: ``` # 安装依赖(如尚未完成) ./install.sh # macOS/Linux install.bat # Windows # 同时启动两项服务并启用热重载 npm run dev # from the project root (requires npm-run-all) # 或单独启动它们 npm run dev:backend npm run dev:frontend ``` 若要构建生产包: ``` npm run build # 然后运行编译后的后端: cd backend && npm start # 使用任意静态文件服务器提供 frontend/dist 服务 ``` ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 ## 致谢 本项目实现了 [FAIR™(信息风险因子分析)](https://www.fairinstitute.org/) 本体。FAIR 是 FAIR Institute 的商标。
标签:ALE, FAIR, GNU通用公共许可证, MITM代理, Node.js, SQLite, 三角分布, 前端风险分析, 可重现模拟, 定量风险评估, 对数正态分布, 年度损失期望, 开源平台, 投资回报分析, 控制有效性, 敏感性分析, 无云风险建模, 本地部署, 浏览器风险评估, 点估计, 离线工具, 种子控制, 网络安全风险, 自动化攻击, 蒙特卡洛模拟, 风险仪表盘, 风险组合管理, 龙卷风图