一个本地、开源的平台,用于基于 FAIR v3.1(信息风险因子分析)框架进行量化网络安全风险评估。从浏览器中建模威胁、运行蒙特卡洛模拟、衡量控制措施有效性并管理风险组合——无需云账户。
LM = PLM + SLEF × SLEM

| 要求 | 版本 | 备注 |
|---|---|---|
| Node.js | 22.5 或更高 | 使用 v22.5 引入的内置 node:sqlite 模块 |
| npm | 随 Node.js 提供 | 无需单独安装 |
brew install nodenvm install 22 && nvm use 22winget install OpenJS.NodeJS# 克隆仓库
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
# 运行安装程序(检查 Node 版本,安装所有依赖,下载 ATT&CK 数据)
chmod +x install.sh
./install.sh
REM 克隆仓库(Git Bash、PowerShell 或任何终端)
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
REM 运行安装程序(双击或在终端中运行)
install.bat
安装程序将:
npm 依赖backend/data/ 目录用于 SQLite 数据库./start.sh
这将打开两个终端窗口(或在没有桌面的 Linux 上为后台进程)——一个用于后端 API,一个用于前端开发服务器——然后自动打开浏览器。
start.bat
将打开两个控制台窗口(后端和前端)。5 秒后浏览器将自动打开。
启动后,访问应用的地址为:
| 服务 | URL |
|---|---|
| 前端 | http://localhost:5173 |
| 后端 API | http://localhost:3001 |
如果端口 5173 已被占用,Vite 将自动切换到 5174。
CyberQRM 通过四个步骤实现 FAIR v3.1 方法:
多基础资产估值 — 在资产价值步骤中切换“高级:使用多种估值基础”以为每个价值维度定义单独的分布。模拟在每次迭代中对所有基础求和。
初级与次级损失 — 在损失影响步骤中切换“高级:分割为初级与次级损失”以模拟初级直接成本和次级利益相关者强加的成本(罚款、声誉损害、竞争损失),并带有条件的次级损失事件频率(SLEF)概率。所有金额均为绝对美元。
MITRE ATT&CK — 在威胁事件频率和脆弱性步骤中,打开技术浏览器以按策略过滤、按名称或 ID 搜索,并选择相关技术。平台根据现实世界的流行度层级(来自 Red Canary / CTID 观测数据)和脆弱性范围(基于您已实施的 ATT&CK 缓解措施数量)建议威胁事件频率范围。
数据库在首次运行时自动创建(backend/data/cyberqrm.db)。所有数据保留在您的本地机器上。
CyberQRM/
├── backend/ # Express.js + TypeScript API
│ ├── src/
│ │ ├── index.ts # 服务器入口点(端口 3001)
│ │ ├── db/ # SQLite 适配器、架构和迁移
│ │ ├── routes/ # REST 端点(场景、控制措施、组合、ATT&CK)
│ │ ├── services/ # 业务逻辑、蒙特卡洛引擎和 ATT&CK 服务
│ │ ├── data/ # attack-prevalence.json(捆绑的威胁事件频率层级数据)
│ │ └── middleware/ # 错误处理
│ └── data/ # SQLite 数据库 + ATT&CK STIX 文件(自动创建)
├── frontend/ # React 18 + Vite + TypeScript
│ └── src/
│ ├── pages/ # 仪表板、场景、控制措施、组合
│ ├── components/ # 图表、表单、UI 原语
│ │ └── forms/ # ScenarioForm, AttackTechniqueSelector,
│ │ # ValuationBasisList, PrimarySecondaryLossForm
│ ├── store/ # Zustand 状态管理
│ └── utils/ # API 客户端、格式化、报告生成器
├── shared/ # 共享 TypeScript 类型(FAIR 数据模型)
├── install.sh # macOS/Linux 安装程序
├── install.bat # Windows 安装程序
├── start.sh # macOS/Linux 启动器
└── start.bat # Windows 启动器
要使用热重载进行开发:
# 安装依赖(如果尚未完成)
./install.sh # macOS/Linux
install.bat # Windows
# 使用实时重新加载启动两个服务
npm run dev # 从项目根目录(需要 npm-run-all)
# 或者单独启动
npm run dev:backend
npm run dev:frontend
构建生产包:
npm run build
# 然后运行编译后的后端:
cd backend && npm start
# 使用任何静态文件服务器提供 frontend/dist 服务
欢迎贡献。请先开 issue 讨论重大更改。
git checkout -b feature/your-feature)MIT — 详见 LICENSE。
本项目实现了 FAIR™(信息风险因子分析) 本体。FAIR 是 FAIR Institute 的商标。
ATT&CK® 是 MITRE Corporation 的注册商标。ATT&CK 内容根据 ATT&CK 使用条款 使用。
| 健康检查 |
| http://localhost:3001/api/health |
| 层 | 技术 |
|---|
| 前端框架 | React 18, TypeScript, Vite |
| 样式 | Tailwind CSS |
| 状态管理 | Zustand, TanStack React Query |
| 图表 | Recharts |
| 后端框架 | Express.js, TypeScript |
| 数据库 | SQLite 通过 Node.js 内置 node:sqlite |
| 验证 | Zod |
| 威胁情报 | MITRE ATT&CK 企业版(STIX 2.1) |