
Linguagem declarativa de código aberto para modelagem de risco cibernético. Construa modelos de risco bayesianos como QBER, mecanismos de Monte Carlo FAIR e plataformas empresariais de quantificação de risco. Disponível no PyPI.
Status: Rascunho. Este projeto está em desenvolvimento intenso e pode mudar sem aviso. Recebemos sugestões, issues e contribuições. ⚠️ AVISO Este código-fonte está atualmente sendo desenvolvido no branch
crml-dev-1.3. Para o trabalho em andamento mais recente e a fonte da verdade, consulte: https://github.com/Faux16/crml/tree/crml-dev-1.3
Versão: 1.2
Mantido por: Zeron Research Labs e CyberSec Consulting LLC
Apoiado por:
A CRML é uma Linguagem de Modelagem de Risco Cibernético aberta, declarativa, independente de motor e independente de frameworks de Controle/Ataque. Ela fornece um formato YAML/JSON para descrever modelos de risco cibernético, mapeamentos de telemetria, pipelines de simulação, dependências e requisitos de saída — sem forçar você a adotar um método de quantificação, um motor de simulação ou um catálogo de controles de segurança/ameaças específico.
A CRML viabiliza RaC (Risk as Code): premissas de risco e conformidade tornam-se artefatos versionados e revisáveis, que podem ser validados e executados de forma consistente entre equipes e ferramentas.
Profissionais de segurança cibernética, conformidade e gestão de riscos frequentemente enfrentam os mesmos problemas práticos:
A CRML resolve isso padronizando a descrição dos modelos de risco cibernético e suas entradas/saídas, de modo que diferentes motores e organizações possam trocar e executar o mesmo modelo com validação e rastreabilidade claras.
Métodos qualitativos (vermelho/âmbar/verde, “alto/médio/baixo”, pontuações de maturidade) são úteis para comunicação e priorização, mas tendem a falhar quando você precisa:
A próxima evolução é a gestão de risco quantificada: tratar o risco cibernético como uma distribuição estimável de resultados, fundamentada em premissas e dados explícitos, e calculada por métodos repetíveis. Mas abordagens quantificadas só escalam quando os modelos são padronizados — para que possam ser validados, revisados, reutilizados e executados entre ferramentas e equipes.
O objetivo da CRML é ser esse padrão: tornar o modelo portátil, as premissas explícitas e os resultados reproduzíveis.
Imagine um futuro próximo em que a CRML seja tão normal para o trabalho de risco quanto IaC é para infraestrutura:
Nesse mundo, o risco cibernético torna-se reproduzível, comparável e automatizável entre equipes — ao mesmo tempo em que permite diversidade metodológica.
Consulte a Arquitetura Geral: wiki/Concepts/Architecture.md
Uma organização típica pode manter a CRML junto ao código de detecção e infraestrutura:
risk/models/ — cenários e portfólios em CRMLrisk/catalogs/ — catálogos versionados de controles + ataques (internos ou externos)risk/mappings/ — mapeamentos de telemetria/controles/ameaças com responsáveis e histórico de alteraçõescrml-lang validate em cada PR; um job noturno executa crml simulate e publica dashboardsExemplo de trecho (ilustrativo):
crml_scenario: "1.0"
meta:
name: "ransomware-baseline"
description: "A simple ransomware risk model"
scenario:
frequency:
basis: per_organization_per_year
model: poisson
parameters:
lambda: 0.15
severity:
model: lognormal
parameters:
median: "250 000"
currency: USD
sigma: 1.2
# Optional, threat-centric controls (org posture typically belongs in portfolios/assessments)
controls:
- id: "org:iam.mfa"
effectiveness_against_threat: 0.35
Este repositório disponibiliza dois pacotes Python e uma interface web:
crml-lang: modelos da linguagem/especificação + validação de schema + entrada/saída YAMLcrml-engine: runtime de referência + CLI crml (depende de crml-lang)web/: CRML Studio — interface web para validação e simulação (Next.js)Se você quiser a CLI:
pip install crml-engine
Se você quiser apenas a biblioteca da linguagem:
pip install crml-lang
# or with SCF support:
pip install "crml-lang[scf]"
crml-lang validate examples/scenarios/qber-enterprise.yaml
crml simulate examples/scenarios/data-breach-simple.yaml --runs 10000
# Import SCF Catalog from Excel
crml-lang scf-import-catalog path/to/SCF_2025.xlsx scf-catalog.yaml
Carregar e validar:
from crml_lang import CRScenario, validate
scenario = CRScenario.load_from_yaml("examples/scenarios/data-breach-simple.yaml")
report = validate("examples/scenarios/data-breach-simple.yaml", source_kind="path")
print(report.ok)
Executar uma simulação:
from crml_engine.runtime import run_simulation
result = run_simulation("examples/scenarios/data-breach-simple.yaml", n_runs=10000)
print(result.metrics.eal)
crml_lang/ — pacote da linguagem/especificaçãocrml_engine/ — pacote do motor de referênciaweb/ — interface web (Next.js)examples/ — modelos CRML YAML de exemplo e configuração de FXwiki/ — fonte da documentação (MkDocs)CRML Studio fica em web/.
Execute localmente:
pip install crml-engine
cd web
npm install
npm run dev


Consulte a documentação em wiki/ (comece em wiki/Home.md).
Regras de interoperabilidade e mapeamento do OSCAL: wiki/Guides/OSCAL.md.
Guia de integração e mapeamento do SCF: wiki/Guides/SCF.md.
Tipos de documentos atuais:
crml_scenario: "1.0" com scenario: no nível superiorcrml_portfolio: "1.0" com portfolio: no nível superiorLicença MIT — consulte LICENSE.