nogamenolife12/Merge
GitHub: nogamenolife12/Merge
Merge 是一个基于 FAIR 方法论的全栈网络风险量化平台,将安全态势转化为董事会级别的财务风险指标并推荐优先修复措施。
Stars: 0 | Forks: 0
# Merge - 网络风险量化平台
**Merge** 是一个全栈网络风险量化(CRQ)平台,可将组织的技术安全态势转化为董事会级别的财务风险语言。通过将 **FAIR 方法论**与 **IBM 数据泄露成本 2025 基准**相结合,该平台能够计算定量网络风险指标(如年度损失敞口),并建议优先修复的路线图。
## 1. 系统架构
该应用程序采用解耦的全栈架构,包含一个 Node.js/Express 后端和一个 React (Vite) 前端。
```
graph TD
subgraph Frontend ["React Dev Server - Port 5174"]
A["Onboarding Form"] -->|"1. Submit Posture Data"| B["Animated Processing Screen"]
B -->|"2. HTTP POST /api/analyze"| C["Express REST API"]
D["Interactive Dashboard"] <-->|"5. Dynamic USD/INR Switch"| E["State Manager"]
C -->|"4. Return Calculated Metrics"| D
end
subgraph Backend ["Express Server - Port 5001"]
C --> F["FAIR Risk Engine"]
F --> G["Dynamic Summary Generator"]
F --> H["NVD API Client"]
H -->|"3a. Call NVD REST API (3s timeout)"| I["NIST NVD Database"]
H -->|"3b. Fail / Timeout Fallback"| J["Local High-Fidelity CVE DB"]
end
```
### 目录结构
* **[backend/](file:///Users/vanshajrana/Merge/backend)**:Express 服务器和量化逻辑引擎。
* **[frontend/](file:///Users/vanshajrana/Merge/frontend)**:Vite+React 开发代码库,使用 Vanilla CSS 和 Tailwind CSS v3 设置样式。
## 2. 技术规范与数学引擎
核心数学引擎基于**信息风险因子分析(FAIR)**标准运行。它将财务风险估算为**年度损失敞口(ALE)**,定义为:
$$\text{ALE} = \text{损失事件频率 (LEF)} \times \text{损失幅度 (LM)}$$
### A. 损失事件频率(LEF)
LEF 是在一年窗口期内发生成功入侵的概率:
$$\text{LEF} = \text{威胁事件频率 (TEF)} \times \text{脆弱性 (Vuln)}$$
1. **威胁事件频率(TEF)**:威胁行为者针对特定行业每年的基线攻击尝试次数。
* **金融、医疗保健、技术**:`0.9`(高度受攻击目标)
* **零售、电子商务、政府**:`0.7`(中度受攻击目标)
2. **脆弱性(Vuln)**:攻击成功的概率,该概率会随着安全控制的增加而降低:
* **基础脆弱性**:`0.8`(无活跃安全控制)
* **控制缓解**(每个活跃控制都会降低 Vuln):
* *防火墙*:`-0.15`
* *WAF*:`-0.15`
* *EDR*:`-0.15`
* *SIEM*:`-0.10`
* *DLP*:`-0.10`
* *漏洞扫描器*:`-0.10`
* *SOAR*:`-0.05`
* **脆弱性下限**:`0.10`(没有任何系统是 100% 安全的)
### B. 损失幅度(LM)
LM 代表一次成功安全事件的总体财务成本。我们使用 **IBM 数据泄露成本 2025 行业平均值**来初始化此值:
| 行业部门 | 基准成本(美元) |
| :--- | :--- |
| **医疗保健** | $7,420,000 |
| **金融** | $5,560,000 |
| **技术** | $4,970,000 |
| **电子商务** | $3,900,000 |
| **零售** | $2,960,000 |
| **政府** | $2,830,000 |
#### 成本调节系数:
* **组织规模乘数**:
* *小型(<500 名员工)*:`0.2`
* *中型(500 - 5,000 名员工)*:`1.0`
* *大型企业(5,000+ 名员工)*:`2.5`
* **数据泄露后类别拆分与控制折扣**:
1. *估算泄露成本*(检测、响应):占总基准成本的 `35%`。
2. *监管罚款风险敞口*:占总基准成本的 `15%`(如果 **DLP** 处于活跃状态,则减少 `20%`)。
3. *停机与运营损失*:占总基准成本的 `30%`(如果 **SOAR** 处于活跃状态,减少 `30%`;如果 **EDR** 处于活跃状态,减少 `10%`)。
4. *声誉损害*:占总基准成本的 `20%`(如果 **SIEM** 或 **WAF** 处于活跃状态,减少 `15%`)。
$$\text{LM} = (\text{泄露成本} + \text{监管罚款} + \text{停机} + \text{声誉损害}) \times \text{规模乘数}$$
## 3. 工程实现
### A. 后端引擎(`/backend`)
* **[server.js](file:///Users/vanshajrana/Merge/backend/server.js)**:运行一个 Express 服务器,暴露一个 POST `/api/analyze` 接口和一个用于健康检查的 GET `/api/health` 接口。
* **[analyzer.js](file:///Users/vanshajrana/Merge/backend/analyzer.js)**:
* 执行上述的数学计算。
* 使用 90 天的时间窗口和特定行业的关键词,查询实时的 **NIST NVD API v2**。
* 对 NVD API 请求实施严格的 **3 秒硬超时**。如果 NVD 服务器挂起、触发限流或失败,引擎将无缝返回一组高保真、逼真的兜底 CVE。
* 生成完全动态的**董事会级别执行摘要**,用于描述组织当前的风险等级、列出控制差距,并突出显示具有最高 ROI 的安全投资。
### B. 前端体验(`/frontend`)
* **[App.jsx](file:///Users/vanshajrana/Merge/frontend/src/App.jsx)**:管理三个屏幕的状态和模板:
1. **屏幕 1 — 引导**:一个企业亮色主题的表单,需要输入公司名称、所属行业、规模以及活跃安全控制清单。包含一个 USD/INR 切换开关。
2. **屏幕 2 — 处理中**:一个加载序列,显示模拟的阶段(如“正在从 NVD 获取实时漏洞数据...”等)和一个平滑的进度条。
3. **屏幕 3 — 仪表盘**:一个专业的 CISO 仪表盘,具有以下特点:
* **风险敞口头部**:醒目的年度损失大字数据和风险等级徽章。
* **财务细分图表**:使用交互式 Recharts 圆环图可视化类别拆分。
* **安全差距分析**:实时状态检查,展示已缓解的威胁与高亮显示的关键差距。
* **NVD 威胁情报**:展示排名前 5 的行业相关 CVE,包含 CVSS 评分和描述。
* **优先修复路线图**:根据 ROI 动态排定推荐措施的优先级(计算相对于工具部署成本的年度损失敞口降低百分比)。
## 4. 关键配置与设置
* **多货币支持**:集成了一个切换开关,可在 **USD ($)** 和 **INR (₹)** 之间切换数值。为确保准确性,汇率锁定为 `1 USD = 84.5 INR`。
* **Tailwind CSS**:基于 **Tailwind v3** 构建,采用符合企业规范的配色(如板岩色和海军蓝),确保高级的视觉美感。
## 5. 近期修复摘要(2026 年 5 月 21 日)
1. **白屏崩溃**:修复了 React 运行时崩溃。仪表盘之前尝试评估 `BASE_BREACH_COSTS[analysisData.industry]` 以显示行业基准,但前端并未定义 `BASE_BREACH_COSTS`。该常量现已被添加到 `App.jsx` 的顶部。
2. **SSL 引用更新**:将头部标准链接从 `https://openfair.org/`(由于 SSL 配置问题曾触发“连接不安全”的浏览器警报)更新为官方安全认证页面:**`https://www.opengroup.org/certifications/openfair`**。
## 6. 如何在本地运行和测试
### 前置条件:启动服务器
请确认两个服务器均已运行。如果它们尚未在您的机器上运行,您可以从它们各自的目录中将其启动:
#### 1. 后端服务器
```
cd backend
npm run dev
```
*运行在端口 `5001`。*
#### 2. 前端服务器
```
cd frontend
npm run dev
```
*运行在端口 `5174`(如果被占用则回退至 `5173`)。*
标签:GNU通用公共许可证, MITM代理, Node.js, React, Syscalls, 代码示例, 数据分析, 网络安全, 自定义脚本, 隐私保护