Matriz de evaluación de riesgos — registro metódico
Un registro de riesgos que sigue un método escrito — ISO/IEC 27005:2022 o EBIOS Risk Manager — y se verifica a sí mismo: puntuaciones, tratamiento, aceptación formal por la autoridad correcta y revisiones, con informes, importación/exportación CSV segura e interfaz web
Contexto
Reconstruí este proyecto desde cero, en sustitución de dos prototipos anteriores (una matriz de riesgos en inglés y su reconstrucción en francés). El objetivo: un registro de riesgos que una pyme pueda defender ante su dirección o un auditor ISO/IEC 27001. El método — escalas, matriz, apetito, autoridades de aceptación — se escribe en un archivo y se valida; después, cada riesgo se comprueba automáticamente con él. Atelier Lumen, la empresa ficticia de mi ejercicio de simulación de respuesta a incidentes, aporta los registros de ejemplo.
Contenido del repositorio
- Un formato de método en TOML, bilingüe, con dos preajustes: 5×5 probabilidad × impacto (ISO/IEC 27005:2022) y EBIOS RM 4×4 (probabilidad V1–V4 × gravedad G1–G4, ANSSI 1.5)
- Un formato de registro: activos, amenaza, vulnerabilidad, riesgo inherente y residual, medidas previstas, tratamiento (reducir, aceptar, transferir, evitar), aceptación formal, revisión, historial
- Referencias en cada riesgo y medida: controles del anexo A de ISO/IEC 27001:2022 (solo números), técnicas MITRE ATT&CK y el playbook de respuesta a incidentes correspondiente
- Cuatro comandos: risk-check (verificación), risk-report (Markdown y HTML), risk-export (JSON, CSV) y risk-import (CSV a TOML)
- Una guía de evaluación y los registros de ejemplo de Atelier Lumen, en francés e inglés
Reglas verificadas automáticamente
- Un método coherente: matriz monótona, todos los niveles usados, una autoridad de aceptación para cada nivel por encima del apetito, revisiones más frecuentes para los riesgos más graves
- Riesgo residual nunca superior al inherente sin justificación
- Aceptación formal obligatoria cuando el riesgo residual sigue por encima del apetito y ya nada está en curso para reducirlo (ISO/IEC 27001, 6.1.3) — firmada por la autoridad prevista en el método, por su duración máxima
- Próxima revisión dentro de la frecuencia del nivel residual; historial cronológico
- Errores (datos no válidos) separados de los avisos (medida o revisión atrasada, aceptación vencida); --strict hace que los avisos bloqueen
Decisiones de seguridad
- Exportación CSV protegida contra la inyección de fórmulas (CWE-1236): las celdas que empiezan por =, +, -, @ se neutralizan, y la protección se retira al importar
- Importaciones limitadas en tamaño y filas, UTF-8 obligatorio, ningún archivo sobrescrito sin --force
- Informe HTML en un solo archivo sin script: todo el texto escapado, CSP que solo autoriza su propia hoja de estilo mediante un hash SHA-256
- Registros reales excluidos de Git por convención de nombres; la interfaz web lee un archivo en local, sin enviarlo ni conservarlo nunca
Interfaz web
- Carga de los registros de ejemplo o de una exportación JSON local, validada por completo antes de mostrarse (tipos, fechas, colores, coherencia con la matriz)
- Resumen de riesgos activos, por encima del apetito, medidas y revisiones atrasadas, aceptaciones vencidas
- Mapas de calor interactivos del riesgo inherente y residual, filtros (nivel, responsable, tratamiento, búsqueda sin acentos) y ficha detallada de cada riesgo
- Plan de acción y calendario de revisiones; francés e inglés, temas claro y oscuro, teclado y móvil, CSP estricta
Calidad de ingeniería
Uso
- 1PrepararElegir un preajuste, adaptar las escalas y el apetito con la dirección y hacer validar el método por risk-check.
- 2EvaluarDescribir cada riesgo (causa → evento → consecuencia) y puntuar su riesgo inherente; el nivel se lee en la matriz del método.
- 3Tratar y aceptarPlanificar las medidas con responsables y plazos, puntuar el riesgo residual y hacer aceptar lo que queda por la autoridad designada.
- 4RevisarRevisiones y aceptaciones vencen a su ritmo; risk-check --strict y el informe señalan lo atrasado.
Capturas de pantalla
