
CRML
Zeron Research Labs / CyberSec Consulting LLC · Programación
CRML (Cyber Risk Modeling Language) es un lenguaje abierto y declarativo para describir modelos de ciberriesgo en YAML o JSON, mantenido por Zeron Research Labs y CyberSec Consulting LLC. En lugar de encerrar los supuestos de riesgo dentro de hojas de cálculo o de la herramienta de un solo proveedor, deja que definas el modelo, sus asignaciones de telemetría y sus salidas como archivos revisables, y luego los ejecutas con el motor de cuantificación de ciberriesgo que ya uses. Como herramienta de riesgo de código abierto, se distribuye como librería de riesgo en Python, así que los equipos que trabajan con el riesgo como código pueden validar, versionar y reproducir sus cifras igual que hacen con cualquier otra configuración.

Acerca de CRML
Qué es CRML
CRML es un lenguaje para escribir modelos de ciberriesgo, no para calcularlos. Esa distinción importa. El formato describe escenarios, entradas, supuestos de control y salidas esperadas, mientras que las matemáticas reales se quedan en el motor que elijas, ya sea un montaje Monte Carlo estilo FAIR, un enfoque bayesiano o QBER, o una plataforma interna. Como un modelo de riesgo declarativo es solo texto, puede vivir en Git, pasar por revisión y volver a ejecutarse meses después con el mismo resultado.
Esa es la idea del riesgo como código. Cuando los supuestos de cumplimiento y seguridad se convierten en artefactos versionados, auditores y analistas pueden ver qué se modeló, qué parámetros se usaron y qué datos alimentaron el resultado. Muy lejos de una presentación que nadie puede reproducir.
Entonces, ¿para quién es esto? Sobre todo para equipos que ya tratan la configuración como código. Un modelo de riesgo declarativo solo compensa si lo vas a mantener en control de versiones. Si no, déjalo pasar.
La mayor limitación ahora mismo es la madurez. El proyecto se etiqueta a sí mismo como borrador en pleno desarrollo, así que el formato y las herramientas pueden cambiar entre versiones, y quien construya sobre él debería esperar cambios. Eso tiene un coste real. Aun así, el alcance es estrecho y la idea central se sostiene.
Primeros pasos
- Instala Python 3 y luego añade los paquetes desde PyPI con
pip install crml-langypip install crml-engine. - Escribe un documento de escenario en YAML o JSON que describa tu modelo de riesgo, tus asignaciones de telemetría y tus requisitos de salida.
- Valídalo contra el esquema JSON incluido, por ejemplo cargando el archivo con el helper
validatedecrml-lang. - Empaqueta un portafolio si varios escenarios comparten packs comunes, y produce un único artefacto autocontenido.
- Entrega el plan a tu motor de cuantificación o usa el paso de pipeline determinista de
crml-enginepara ejecutarlo.
Información del producto
Un vistazo rápido a los precios, las plataformas compatibles y el rendimiento de CRML.
Ideal para
Los usuarios, tareas y casos de uso en los que esta herramienta encaja mejor.
Usuarios
- Analistas de ciberriesgo y seguridad que necesitan modelos que sobrevivan a una revisión
- Equipos de cumplimiento y auditoría que deben mostrar cómo se produjo una cifra
- Gestores de riesgo con mentalidad de ingeniería que ya usan Python
Tareas
- Documentar un escenario de riesgo para que dos analistas obtengan el mismo resultado
- Comparar el riesgo entre unidades de negocio o proveedores
- Mapear marcos de amenazas y controles como ATT&CK, CIS o NIST
- Justificar un gasto en seguridad modelando el riesgo con y sin un control
Casos de uso
- Sacar los modelos de riesgo de hojas de cálculo y presentaciones hacia el control de versiones, donde los cambios se revisan como código.
- Ejecutar el mismo modelo en distintos motores de cuantificación sin reescribirlo cada vez.
- Producir evidencia lista para auditoría bajo demanda, ya que la descripción de lo modelado vive junto al propio modelo.
Funciones clave
Descripciones de modelo agnósticas del motor
CRML no te impone un método de cuantificación. Describes el modelo en YAML o JSON, y un montaje Monte Carlo FAIR, un motor bayesiano o QBER, o tu propia plataforma leen el mismo archivo. Eso significa que cambiar de motor deja de ser un proyecto de reescritura. Gran diferencia. Es el dolor práctico que nació para eliminar.
Flujo de trabajo de riesgo como código
Todo el objetivo es convertir los supuestos de riesgo en artefactos versionados y revisables. Como los modelos son texto plano, encajan en Git, en pull requests y en CI, así que un analista ve exactamente qué cambió y por qué. Para equipos que ya viven en la revisión de código, este es el hogar natural del trabajo de riesgo. Se acabaron las cifras misteriosas.
Validación de esquema y modelos tipados
El paquete crml-lang incluye modelos Pydantic, un esquema JSON incorporado y un validador estructurado. Obtienes un aprobado o un suspenso claro antes de que nada se ejecute, lo que detecta parámetros mal formados pronto en vez de después de una simulación desperdiciada. Los informes de validación te dicen qué se rompió, no solo que algo se rompió.
Empaquetado de portafolios
Cuando varios escenarios comparten packs referenciados, bundle_portfolio los funde en un único artefacto autocontenido. El empaquetado puede leer desde disco o directamente desde modelos en memoria, así que también funciona en un pipeline sin sistema de archivos. El resultado es un solo objeto que puedes archivar o enviar a otro equipo.
Pipeline de motor determinista
El paquete complementario crml-engine incluye un paso de planificación que convierte un portafolio en un plan de pipeline determinista. Mantiene separada la fase de "qué ejecutar" de la de "ejecutarlo", lo que hace que la salida sea reproducible y más fácil de depurar cuando las cifras no cuadran.
Flexibilidad de marcos y catálogos
Los marcos de amenazas y controles como ATT&CK, CIS, NIST, ISO y SCF, más catálogos internos, se pueden describir sin atarte a ninguno de ellos. Como esos marcos cambian con el tiempo, mantener la asignación en un formato versionado evita que las actualizaciones rompan tu modelo en silencio.
Ventajas y desventajas
Ventajas
- Código abierto bajo licencia MIT, así que no hay coste de licencia y el esquema se puede inspeccionar.
- El diseño agnóstico del motor hace que tu modelo no esté atado a la herramienta de cuantificación de un solo proveedor.
- Los modelos en YAML y JSON basados en texto encajan limpiamente en Git, revisión y automatización.
- La validación de esquema incluida y los modelos Python tipados detectan errores antes de que corra una simulación.
- La versión actual se instala desde PyPI como `crml-lang` y `crml-engine` para Python 3.
Desventajas
- El proyecto se llama a sí mismo un borrador en pleno desarrollo, así que el formato y los paquetes pueden cambiar entre versiones.
- Es una especificación y una librería, no un producto terminado, así que escribirás código y YAML en lugar de navegar por una interfaz.
- No hay servicio en la nube ni panel gráfico independiente, lo que lo descarta para equipos que quieren una app lista para usar.
Preguntas frecuentes
Te da una forma estándar de escribir modelos de ciberriesgo, sus entradas y sus salidas esperadas. El lenguaje se encarga de la descripción y la validación, mientras que un motor aparte hace la cuantificación real.
Contenido relacionado
Explora herramientas, habilidades y artículos relacionados con CRML.
Alternativas a CRML
Base Code
Base44 (Wix) · Programación · ProductividadBase Code es un entorno de desarrollo en la nube compartido de Base44. El equipo describe cambios sobre un repositorio de GitHub en el chat, los ve en una vista previa y los envía como pull requests.
Google EmbeddingGemma 2
Google DeepMind · Escritura · Imagen · ProgramaciónGoogle EmbeddingGemma 2 es un modelo abierto de 740 millones de parámetros que convierte texto, código, imágenes, audio y fotogramas de vídeo en vectores de un mismo espacio de 768 dimensiones, y funciona en móviles y portátiles.
GitGlow
GitGlow · Programación · ProductividadGitGlow es un cliente Git de escritorio que reúne tu código y los cambios de tus agentes de IA en una sola revisión, para que sepas qué va a salir de tu máquina antes de publicarlo.
