
Un'implementazione del framework FAIR CRQ
Una piattaforma locale e open-source per la valutazione quantitativa del rischio di cybersecurity che utilizza il framework FAIR v3.1 (Factor Analysis of Information Risk). Modella le minacce, esegui simulazioni Monte Carlo, misura l'efficacia dei controlli e gestisci portafogli di rischio — tutto dal tuo browser, senza bisogno di un account cloud.
LM = PLM + SLEF × SLEM

| Requisito | Versione | Note |
|---|---|---|
| Node.js | 22.5 o successiva | Utilizza il modulo integrato node:sqlite introdotto in v22.5 |
| npm | fornito con Node.js | Nessuna installazione separata necessaria |
brew install nodenvm install 22 && nvm use 22winget install OpenJS.NodeJS# Clona il repository
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
# Esegui l'installer (controlla la versione di Node, installa tutte le dipendenze, scarica i dati ATT&CK)
chmod +x install.sh
./install.sh
REM Clona il repository (Git Bash, PowerShell o qualsiasi terminale)
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
REM Esegui l'installer (doppio clic o eseguilo da un terminale)
install.bat
L'installer farà:
backend/data/ per il database SQLite./start.sh
Questo apre due finestre di terminale (o processi in background su Linux senza desktop) — una per l'API backend e una per il server di sviluppo frontend — e poi apre automaticamente il tuo browser.
start.bat
Si apriranno due finestre della console (backend e frontend). Il tuo browser si aprirà automaticamente dopo 5 secondi.
Una volta in esecuzione, accedi all'app all'indirizzo:
| Servizio | URL |
|---|---|
| Frontend | http://localhost:5173 |
| API Backend | http://localhost:3001 |
Se la porta 5173 è già in uso, Vite passerà automaticamente alla 5174.
CyberQRM implementa la metodologia FAIR v3.1 in quattro passaggi:
Valutazione degli Asset su Base Multipla — attiva "Avanzato: usa più basi di valutazione" nel passaggio Valore dell'Asset per definire distribuzioni separate per ciascuna dimensione di valore. La simulazione somma tutte le basi per ogni iterazione.
Perdita Primaria e Secondaria — attiva "Avanzato: suddividi in perdita Primaria e Secondaria" nel passaggio Impatto della Perdita per modellare i costi diretti primari e i costi imposti dagli stakeholder secondari (multe, danno reputazionale, perdita competitiva) con una probabilità condizionale SLEF. Tutti gli importi sono in USD assoluti.
MITRE ATT&CK — nei passaggi TEF e Vulnerabilità, apri il browser delle tecniche per filtrare per tattica, cercare per nome o ID e selezionare le tecniche rilevanti. La piattaforma suggerisce range TEF basati sui livelli di prevalenza reali (fonte: avvistamenti Red Canary / CTID) e range di vulnerabilità basati su quante mitigazioni ATT&CK hai implementato.
Il database viene creato automaticamente al primo avvio (backend/data/cyberqrm.db). Tutti i dati rimangono sulla tua macchina locale.
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
Per lavorare sul codice con hot-reloading:
# Installa le dipendenze (se non già fatto)
./install.sh # macOS/Linux
install.bat # Windows
# Avvia entrambi i servizi con live reload
npm run dev # dalla root del progetto (richiede npm-run-all)
# Oppure avviali singolarmente
npm run dev:backend
npm run dev:frontend
Per creare un bundle di produzione:
npm run build
# Quindi esegui il backend compilato:
cd backend && npm start
# Servi frontend/dist con qualsiasi server di file statici
I contributi sono benvenuti. Apri prima un issue per discutere modifiche significative.
git checkout -b feature/tua-funzionalità)MIT — consulta LICENSE per i dettagli.
Questo progetto implementa l'ontologia FAIR™ (Factor Analysis of Information Risk). FAIR è un marchio del FAIR Institute.
ATT&CK® è un marchio registrato di The MITRE Corporation. Il contenuto ATT&CK è utilizzato secondo i Termini di Utilizzo di ATT&CK.
| Controllo di integrità | http://localhost:3001/api/health |
| Livello | Tecnologia |
|---|
| Framework frontend | React 18, TypeScript, Vite |
| Stili | Tailwind CSS |
| Gestione dello stato | Zustand, TanStack React Query |
| Grafici | Recharts |
| Framework backend | Express.js, TypeScript |
| Database | SQLite tramite node:sqlite integrato in Node.js |
| Validazione | Zod |
| Threat intelligence | MITRE ATT&CK Enterprise (STIX 2.1) |