UStackUStack
crml icon

crml

crml es un lenguaje declarativo open source para modelado de riesgo cibernético: define modelos, mapeos de telemetría, simulaciones y salidas con YAML/JSON.

crml

¿Qué es crml?

crml (CRML — Cyber Risk Modeling Language) es un lenguaje declarativo open source para modelado de riesgo cibernético. Permite describir modelos de riesgo, mapeos de telemetría, pipelines de simulación, dependencias y salidas requeridas usando formato YAML/JSON, sin requerir un método de cuantificación, motor de simulación o framework de controles/amenazas específico.

El proyecto está diseñado para soportar flujos de trabajo de “Risk as Code”, donde supuestos y definiciones de modelos pueden vivir en artefactos versionados y revisables (p. ej., en Git). Esto busca facilitar la validación, reproducción e intercambio de modelos de riesgo cibernético entre equipos y herramientas al estandarizar la representación de entradas, supuestos y salidas.

Características clave

  • Descripciones de modelos en YAML/JSON declarativo: Expresa modelos de riesgo y sus requisitos de ejecución en un formato portable en lugar de incrustar lógica en hojas de cálculo o herramientas puntuales.
  • Especificación de simulación agnóstica al motor: Define pipelines de simulación y dependencias para que diferentes motores de simulación consuman la misma definición de modelo (siempre que cumplan con CRML).
  • Mapeos agnósticos a frameworks de controles/ataques: Representa mapeos a controles y ataques sin atar el modelo a un framework o catálogo único, lo que ayuda cuando los frameworks evolucionan.
  • Modelado de efectividad de controles: Modela cómo los controles reducen el riesgo, incluyendo supuestos de “defense in depth”.
  • Parametrización basada en mediana para distribuciones lognormales: Especifica medianas directamente para distribuciones lognormales, alineado con la parametrización de distribuciones de riesgo en el enfoque CRML.
  • Validación estricta vía JSON Schema: Valida documentos de modelo antes de la simulación para detectar errores estructurales tempranamente.

Cómo usar crml

  1. Obtén el proyecto y documentación: Comienza desde el repositorio (el README y docs están incluidos en el contenido del repo) e instala el paquete disponible en PyPI.
  2. Escribe un documento CRML: Crea un documento YAML/JSON que describa los elementos del modelo que quieres ejecutar, como mapeos de telemetría, dependencias, estructura del pipeline de simulación y requisitos de salida.
  3. Valida el documento: Usa la validación basada en esquemas del proyecto para verificar errores antes de ejecutar simulaciones.
  4. Ejecuta con un motor compatible: Ejecuta el modelo usando un pipeline de simulación compatible con CRML. Como CRML está diseñado para ser agnóstico al motor, el mismo documento CRML se puede reutilizar en diferentes motores compatibles.

Casos de uso

  • Hacer modelos de riesgo revisables en Git: Convierte supuestos de modelos basados en hojas de cálculo o presentaciones en documentos CRML versionados para que los cambios sean visibles en diffs y auditables.
  • Estandarizar intercambio de modelos entre equipos: Comparte un único modelo de riesgo definido en CRML entre analistas y herramientas para que las mismas entradas/supuestos/salidas se interpreten consistentemente.
  • Comparación de riesgo cuantificado con supuestos explícitos: Ejecuta escenarios como “con vs. sin una inversión” o “a lo largo de períodos de tiempo” manteniendo supuestos explícitos y ligados a definiciones de modelo validadas.
  • Mapeo de riesgo cibernético a flujos de riesgo empresarial más amplios: Usa la representación estandarizada de entradas/salidas de CRML para soportar trazabilidad cuando métricas cibernéticas alimentan procesos de riesgo empresarial y planificación financiera.
  • Evolucionar mapeos cuando cambian los frameworks: Cuando frameworks de controles o amenazas (p. ej., ATT&CK, NIST, ISO o catálogos internos) se actualizan, actualiza los mapeos CRML en lugar de reescribir lógica de modelado específica del motor.

Preguntas frecuentes

  • ¿Está crml listo para producción? El repositorio indica que el estado del proyecto es Draft y que está en desarrollo intensivo, pudiendo cambiar sin aviso. También señala que la rama de desarrollo activa es crml-dev-1.3.

  • ¿Qué formato usa crml para definir modelos? CRML usa formato YAML/JSON para describir modelos de riesgo, mapeos de telemetría, pipelines de simulación, dependencias y requisitos de salida.

  • ¿Impone crml un método específico de cuantificación de riesgo? No. Está diseñado para ser agnóstico a la implementación y agnóstico al motor, por lo que puedes describir modelos sin forzar un método de cuantificación o motor de simulación específico.

  • ¿Cómo reduce crml los errores de modelado? Soporta validación estricta usando JSON Schema para detectar errores en los documentos de modelo antes de la simulación.

  • ¿Dónde se distribuye el proyecto? Los metadatos del repositorio indican que está disponible en PyPI.

Alternativas

  • Modelado de riesgo cibernético basado en hojas de cálculo o diapositivas: Común para trabajos cualitativos o semicuantitativos, pero estos formatos son más difíciles de validar y reproducir de manera consistente en comparación con un enfoque declarativo validado por esquema.
  • Implementaciones de modelado de riesgo cibernético específicas de un motor: Herramientas que incorporan suposiciones y lógica de simulación directamente en formatos de modelo propietarios pueden estar más integradas, pero a menudo requieren reescrituras al cambiar de motores cuantitativos o actualizar mapeos.
  • Formatos de configuración declarativa de propósito general (por ejemplo, archivos de configuración de modelos): Puedes usar formatos genéricos para externalizar parámetros, pero típicamente no proporcionan la estructura específica de riesgo cibernético de CRML para mapeo de telemetría, tuberías de simulación y salidas estandarizadas.
  • Otras aproximaciones de modelado “Risk as Code”: Las aproximaciones que versionan suposiciones y parámetros pueden mejorar la revisabilidad, pero pueden no estar diseñadas específicamente para modelado de riesgo cibernético en contextos de controles/ataques y motores.
crml | UStack