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 数据库,数据不会离开您的设备
- **完全离线** — 安装后无需互联网连接即可使用
## 截图


## 先决条件
| 要求 | 版本 | 说明 |
|------|------|------|
| **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, 三角分布, 前端风险分析, 可重现模拟, 定量风险评估, 对数正态分布, 年度损失期望, 开源平台, 投资回报分析, 控制有效性, 敏感性分析, 无云风险建模, 本地部署, 浏览器风险评估, 点估计, 离线工具, 种子控制, 网络安全风险, 自动化攻击, 蒙特卡洛模拟, 风险仪表盘, 风险组合管理, 龙卷风图