UStackUStack
crml icon

crml

CRML (crml) é uma linguagem declarativa open-source para modelagem de risco cibernético, usando YAML/JSON para modelos, mapeamentos, simulações e saídas.

crml

O que é crml?

crml (CRML — Cyber Risk Modeling Language) é uma linguagem declarativa open-source para modelagem de risco cibernético. Ela permite descrever modelos de risco, mapeamentos de telemetria, pipelines de simulação, dependências e saídas necessárias usando formato YAML/JSON — sem exigir um método de quantificação específico, motor de simulação ou framework de controles/ameaças.

O projeto é projetado para suportar fluxos de trabalho “Risk as Code”, onde premissas e definições de modelo podem viver em artefatos versionados e revisáveis (ex.: no Git). Isso visa facilitar a validação, reprodução e troca de modelos de risco cibernético entre equipes e ferramentas, padronizando a representação de entradas, premissas e saídas.

Principais Recursos

  • Descrições de modelo declarativas em YAML/JSON: Expresse modelos de risco e seus requisitos de execução em um formato portátil, em vez de embutir lógica em planilhas ou ferramentas pontuais.
  • Especificação de simulação independente de motor: Defina pipelines de simulação e dependências para que diferentes motores de simulação consumam a mesma definição de modelo (contanto que sejam compatíveis com CRML).
  • Mapeamentos independentes de frameworks de controles/ataques: Represente mapeamentos para controles e ataques sem travar o modelo a um único framework ou catálogo, facilitando adaptações quando frameworks evoluem.
  • Modelagem de efetividade de controles: Modele como controles reduzem risco, incluindo premissas de “defense in depth”.
  • Parametrização baseada em mediana para distribuições lognormais: Especifique medianas diretamente para distribuições lognormais, alinhando com a parametrização de distribuições de risco na abordagem CRML.
  • Validação rigorosa via JSON Schema: Valide documentos de modelo antes da simulação para capturar erros estruturais precocemente.

Como Usar crml

  1. Obtenha o projeto e documentação: Comece pelo repositório (README e docs inclusos no conteúdo do repo) e instale o pacote disponível no PyPI.
  2. Escreva um documento CRML: Crie um documento YAML/JSON descrevendo os elementos do modelo que deseja executar — como mapeamentos de telemetria, dependências, estrutura de pipeline de simulação e requisitos de saída.
  3. Valide o documento: Use a validação baseada em schema do projeto para verificar erros antes de executar simulações.
  4. Execute com um motor compatível: Rode o modelo usando um pipeline de simulação compatível com CRML. Como o CRML é projetado para ser independente de motor, o mesmo documento CRML pode ser reutilizado em diferentes motores compatíveis.

Casos de Uso

  • Tornar modelos de risco revisáveis no Git: Converta premissas de modelos baseados em planilhas ou apresentações em documentos CRML versionados, para que mudanças sejam visíveis em diffs e possam ser auditadas.
  • Padronizar troca de modelos entre equipes: Compartilhe um único modelo de risco definido em CRML entre analistas e ferramentas, garantindo interpretação consistente de entradas/premissas/saídas.
  • Comparação de risco quantificado com premissas explícitas: Rode cenários como “com vs. sem investimento” ou “ao longo de períodos” mantendo premissas explícitas e vinculadas a definições de modelo validadas.
  • Mapeamento de risco cibernético para fluxos de risco empresarial: Use a representação padronizada de entrada/saída do CRML para suportar rastreabilidade quando métricas cibernéticas alimentam processos de risco e planejamento financeiro empresarial.
  • Evolução de mapeamentos com mudanças em frameworks: Quando frameworks de controles ou ameaças (ex.: ATT&CK, NIST, ISO ou catálogos internos) atualizarem, atualize os mapeamentos CRML em vez de reescrever lógica específica de motor.

FAQ

  • O crml está pronto para produção? O repositório indica que o status do projeto é Draft e que está em desenvolvimento intensivo, podendo mudar sem aviso. Também nota que o branch de desenvolvimento ativo é crml-dev-1.3.

  • Que formato o crml usa para definir modelos? O CRML usa formato YAML/JSON para descrever modelos de risco, mapeamentos de telemetria, pipelines de simulação, dependências e requisitos de saída.

  • O crml impõe um método específico de quantificação de risco? Não. Ele é projetado para ser implementation-agnostic e engine-agnostic, permitindo descrever modelos sem forçar um método de quantificação ou motor de simulação específico.

  • Como o crml reduz erros de modelagem? Ele suporta validação rigorosa usando JSON Schema para capturar erros nos documentos de modelo antes da simulação.

  • Onde o projeto é distribuído? Os metadados do repositório indicam que está disponível no PyPI.

Alternativas

  • Modelagem de risco cibernético baseada em planilhas ou slides: Comum para trabalhos qualitativos ou semi-quantitativos, mas esses formatos são mais difíceis de validar e reproduzir de forma consistente em comparação com uma abordagem declarativa e validada por esquema.
  • Implementações de modelagem de risco cibernético específicas de engine: Ferramentas que incorporam premissas e lógica de simulação diretamente em formatos de modelo proprietários podem ser mais integradas, mas frequentemente exigem reescritas ao trocar engines quantitativos ou atualizar mapeamentos.
  • Formatos declarativos de configuração de uso geral (por exemplo, arquivos de configuração de modelo): Você pode usar formatos genéricos para externalizar parâmetros, mas eles geralmente não fornecem a estrutura específica de risco cibernético do CRML para mapeamento de telemetria, pipelines de simulação e saídas padronizadas.
  • Outras abordagens de modelagem “Risk as Code”: Abordagens que versionam premissas e parâmetros podem melhorar a revisibilidade, mas podem não ser projetadas especificamente para modelagem de risco cibernético em contextos de controle/ataque e engines.