
An implementation of the FAIR CRQ Framework
A local, open-source platform for quantitative cybersecurity risk assessment using the FAIR v3.1 (Factor Analysis of Information Risk) framework. Model threats, run Monte Carlo simulations, measure control effectiveness, and manage risk portfolios — all from your browser, no cloud account required.
LM = PLM + SLEF × SLEM

| Requirement | Version | Notes |
|---|---|---|
| Node.js | 22.5 or later | Uses the built-in node:sqlite module introduced in v22.5 |
| npm | ships with Node.js | No separate install needed |
brew install nodenvm install 22 && nvm use 22winget install OpenJS.NodeJS# Clone the repository
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
# Run the installer (checks Node version, installs all dependencies, downloads ATT&CK data)
chmod +x install.sh
./install.sh
REM Clone the repository (Git Bash, PowerShell, or any terminal)
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
REM Run the installer (double-click or run from a terminal)
install.bat
The installer will:
npm dependenciesbackend/data/ directory for the SQLite database./start.sh
This opens two terminal windows (or background processes on Linux without a desktop) — one for the backend API and one for the frontend dev server — then opens your browser automatically.
start.bat
Two console windows will open (backend and frontend). Your browser will open automatically after 5 seconds.
Once running, access the app at:
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:3001 |
If port 5173 is already in use, Vite will automatically switch to 5174.
CyberQRM implements the FAIR v3.1 methodology in four steps:
Multi-basis Asset Valuation — toggle "Advanced: use multiple valuation bases" on the Asset Value step to define separate distributions for each value dimension. The simulation sums all bases per iteration.
Primary & Secondary Loss — toggle "Advanced: split into Primary & Secondary loss" on the Loss Impact step to model primary direct costs and secondary stakeholder-imposed costs (fines, reputational damage, competitive loss) with a conditional SLEF probability. All amounts are in absolute USD.
MITRE ATT&CK — on the TEF and Vulnerability steps, open the technique browser to filter by tactic, search by name or ID, and select relevant techniques. The platform suggests TEF ranges based on real-world prevalence tiers (sourced from Red Canary / CTID sightings) and vulnerability ranges based on how many ATT&CK mitigations you have implemented.
The database is created automatically on first run (backend/data/cyberqrm.db). All data stays on your local machine.
CyberQRM/
├── backend/ # Express.js + TypeScript API
│ ├── src/
│ │ ├── index.ts # Server entry point (port 3001)
│ │ ├── db/ # SQLite adapter, schema & migrations
│ │ ├── routes/ # REST endpoints (scenarios, controls, portfolios, ATT&CK)
│ │ ├── services/ # Business logic, Monte Carlo engine & ATT&CK service
│ │ ├── data/ # attack-prevalence.json (bundled TEF tier data)
│ │ └── middleware/ # Error handling
│ └── data/ # SQLite database + ATT&CK STIX file (auto-created)
├── frontend/ # React 18 + Vite + TypeScript
│ └── src/
│ ├── pages/ # Dashboard, Scenarios, Controls, Portfolios
│ ├── components/ # Charts, forms, UI primitives
│ │ └── forms/ # ScenarioForm, AttackTechniqueSelector,
│ │ # ValuationBasisList, PrimarySecondaryLossForm
│ ├── 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
To work on the code with hot-reloading:
# Install dependencies (if not done already)
./install.sh # macOS/Linux
install.bat # Windows
# Start both services with live reload
npm run dev # from the project root (requires npm-run-all)
# Or start them individually
npm run dev:backend
npm run dev:frontend
To build a production bundle:
npm run build
# Then run the compiled backend:
cd backend && npm start
# Serve frontend/dist with any static file server
Contributions are welcome. Please open an issue first to discuss significant changes.
git checkout -b feature/your-feature)MIT — see LICENSE for details.
This project implements the FAIR™ (Factor Analysis of Information Risk) ontology. FAIR is a trademark of the FAIR Institute.
ATT&CK® is a registered trademark of The MITRE Corporation. ATT&CK content is used under the ATT&CK Terms of Use.
| Health check | http://localhost:3001/api/health |
| Layer | Technology |
|---|
| Frontend framework | React 18, TypeScript, Vite |
| Styling | Tailwind CSS |
| State management | Zustand, TanStack React Query |
| Charts | Recharts |
| Backend framework | Express.js, TypeScript |
| Database | SQLite via Node.js built-in node:sqlite |
| Validation | Zod |
| Threat intelligence | MITRE ATT&CK Enterprise (STIX 2.1) |