
Una implementación del Framework FAIR CRQ
Una plataforma local de código abierto para la evaluación cuantitativa de riesgos de ciberseguridad utilizando el marco FAIR v3.1 (Factor Analysis of Information Risk). Modele amenazas, ejecute simulaciones Monte Carlo, mida la efectividad de los controles y gestione carteras de riesgo, todo desde su navegador, sin necesidad de una cuenta en la nube.
LM = PLM + SLEF × SLEM

| Requisito | Versión | Notas |
|---|---|---|
| Node.js | 22.5 o posterior | Utiliza el módulo integrado node:sqlite introducido en la v22.5 |
| npm | incluido con Node.js | No se necesita instalación por separado |
brew install nodenvm install 22 && nvm use 22winget install OpenJS.NodeJS# Clone el repositorio
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
# Ejecute el instalador (verifica la versión de Node, instala todas las dependencias, descarga los datos de ATT&CK)
chmod +x install.sh
./install.sh
REM Clone el repositorio (Git Bash, PowerShell o cualquier terminal)
git clone https://github.com/iiamit/CyberQRM.git
cd CyberQRM
REM Ejecute el instalador (doble clic o ejecútelo desde una terminal)
install.bat
El instalador:
npm raíz, del backend y del frontendbackend/data/ para la base de datos SQLite./start.sh
Esto abre dos ventanas de terminal (o procesos en segundo plano en Linux sin escritorio) — una para la API del backend y otra para el servidor de desarrollo del frontend — y luego abre su navegador automáticamente.
start.bat
Se abrirán dos ventanas de consola (backend y frontend). Su navegador se abrirá automáticamente después de 5 segundos.
Una vez en ejecución, acceda a la aplicación en:
| Servicio | URL |
|---|---|
| Frontend | http://localhost:5173 |
| API Backend | http://localhost:3001 |
| Health check | http://localhost:3001/api/health |
Si el puerto 5173 ya está en uso, Vite cambiará automáticamente al 5174.
CyberQRM implementa la metodología FAIR v3.1 en cuatro pasos:
Valoración de Activos con Múltiples Bases — active "Avanzado: usar múltiples bases de valoración" en el paso de Valor del Activo para definir distribuciones separadas para cada dimensión de valor. La simulación suma todas las bases por iteración.
Pérdida Primaria y Secundaria — active "Avanzado: dividir en Pérdida Primaria y Secundaria" en el paso de Impacto de Pérdida para modelar costos directos primarios y costos secundarios impuestos por las partes interesadas (multas, daño reputacional, pérdida de ventaja competitiva) con una probabilidad SLEF condicional. Todos los montos están en USD absolutos.
MITRE ATT&CK — en los pasos de TEF y Vulnerabilidad, abra el navegador de técnicas para filtrar por táctica, buscar por nombre o ID, y seleccionar técnicas relevantes. La plataforma sugiere rangos de TEF basados en niveles de prevalencia del mundo real (obtenidos de avistamientos de Red Canary / CTID) y rangos de vulnerabilidad basados en cuántas mitigaciones ATT&CK ha implementado.
La base de datos se crea automáticamente en la primera ejecución (backend/data/cyberqrm.db). Todos los datos permanecen en su máquina local.
CyberQRM/
├── backend/ # API Express.js + TypeScript
│ ├── src/
│ │ ├── index.ts # Punto de entrada del servidor (puerto 3001)
│ │ ├── db/ # Adaptador SQLite, esquema y migraciones
│ │ ├── routes/ # Puntos finales REST (escenarios, controles, carteras, ATT&CK)
│ │ ├── services/ # Lógica de negocio, motor Monte Carlo y servicio ATT&CK
│ │ ├── data/ # attack-prevalence.json (datos de nivel TEF incluidos)
│ │ └── middleware/ # Manejo de errores
│ └── data/ # Base de datos SQLite + archivo STIX de ATT&CK (creado automáticamente)
├── frontend/ # React 18 + Vite + TypeScript
│ └── src/
│ ├── pages/ # Dashboard, Escenarios, Controles, Carteras
│ ├── components/ # Gráficos, formularios, primitivas de UI
│ │ └── forms/ # ScenarioForm, AttackTechniqueSelector,
│ │ # ValuationBasisList, PrimarySecondaryLossForm
│ ├── store/ # Gestión de estado con Zustand
│ └── utils/ # Cliente API, formato, generador de informes
├── shared/ # Tipos TypeScript compartidos (modelo de datos FAIR)
├── install.sh # Instalador macOS/Linux
├── install.bat # Instalador Windows
├── start.sh # Lanzador macOS/Linux
└── start.bat # Lanzador Windows
| Capa | Tecnología |
|---|---|
| Framework frontend | React 18, TypeScript, Vite |
| Estilos | Tailwind CSS |
| Gestión de estado | Zustand, TanStack React Query |
| Gráficos | Recharts |
| Framework backend | Express.js, TypeScript |
| Base de datos | SQLite mediante el módulo integrado de Node.js node:sqlite |
| Validación | Zod |
| Inteligencia de amenazas | MITRE ATT&CK Enterprise (STIX 2.1) |
Para trabajar en el código con recarga en caliente:
# Instalar dependencias (si no lo ha hecho ya)
./install.sh # macOS/Linux
install.bat # Windows
# Iniciar ambos servicios con recarga en vivo
npm run dev # desde la raíz del proyecto (requiere npm-run-all)
# O iniciarlos individualmente
npm run dev:backend
npm run dev:frontend
Para compilar un bundle de producción:
npm run build
# Luego ejecute el backend compilado:
cd backend && npm start
# Sirva frontend/dist con cualquier servidor de archivos estáticos
Las contribuciones son bienvenidas. Por favor, abra primero un issue para discutir cambios significativos.
git checkout -b feature/su-funcionalidad)MIT — consulte LICENSE para más detalles.
Este proyecto implementa la ontología FAIR™ (Factor Analysis of Information Risk). FAIR es una marca registrada del FAIR Institute.
ATT&CK® es una marca registrada de The MITRE Corporation. El contenido de ATT&CK se utiliza bajo los Términos de uso de ATT&CK.