
Open-Source-deklarative Sprache für die Modellierung von Cyber-Risiken. Erstellen Sie Bayessche Risikomodelle wie QBER, FAIR-Monte-Carlo-Engines und Plattformen zur unternehmensweiten Risikoquantifizierung. Auf PyPI verfügbar.
Status: Entwurf. Dieses Projekt befindet sich in intensiver Entwicklung und kann sich ohne Vorankündigung ändern. Wir freuen uns über Input, Issues und Beiträge. ⚠️ WARNUNG Diese Codebasis wird derzeit auf dem Branch
crml-dev-1.3entwickelt. Für den neuesten Arbeitsstand und die Quelle der Wahrheit siehe: https://github.com/Faux16/crml/tree/crml-dev-1.3
Version: 1.2
Gepflegt von: Zeron Research Labs und CyberSec Consulting LLC
Unterstützt durch:
CRML ist eine offene, deklarative, engine-agnostische und Control-/Attack-Framework-agnostische Cyber Risk Modeling Language. Sie bietet ein YAML/JSON-Format zur Beschreibung von Cyber-Risikomodellen, Telemetrie-Zuordnungen, Simulations-Pipelines, Abhängigkeiten und Ausgabeanforderungen – ohne Sie auf eine bestimmte Quantifizierungsmethode, Simulations-Engine oder einen bestimmten Security-Control-/Bedrohungskatalog festzulegen.
CRML ermöglicht RaC (Risk as Code): Risiko- und Compliance-Annahmen werden zu versionierten, überprüfbaren Artefakten, die über Teams und Tools hinweg konsistent validiert und ausgeführt werden können.
Fachleute für Cybersicherheit, Compliance und Risikomanagement stehen oft vor denselben praktischen Problemen:
CRML begegnet dem, indem es die Beschreibung von Cyber-Risikomodellen und deren Ein- und Ausgaben standardisiert, sodass verschiedene Engines und Organisationen dasselbe Modell mit klarer Validierung und Rückverfolgbarkeit austauschen und ausführen können.
Qualitative Methoden (Rot/Gelb/Grün, „hoch/mittel/niedrig“, Reifegrad-Scores) sind für Kommunikation und Priorisierung nützlich, stoßen jedoch an ihre Grenzen, wenn Sie:
Die nächste Evolutionsstufe ist quantifiziertes Risikomanagement: Cyber-Risiko wird als schätzbare Verteilung von Ergebnissen behandelt, die auf expliziten Annahmen und Daten basiert und mit wiederholbaren Methoden berechnet wird. Aber quantifizierte Ansätze skalieren nur, wenn Modelle standardisiert sind – damit sie über Tools und Teams hinweg validiert, überprüft, wiederverwendet und ausgeführt werden können.
Das Ziel von CRML ist es, dieser Standard zu sein: Es macht das Modell portabel, die Annahmen explizit und die Ergebnisse reproduzierbar.
Stellen Sie sich eine nahe Zukunft vor, in der CRML für die Risikoarbeit so selbstverständlich ist wie IaC für die Infrastruktur:
In dieser Welt wird Cyber-Risiko über Teams hinweg reproduzierbar, vergleichbar und automatisierbar – während weiterhin methodische Vielfalt möglich bleibt.
Siehe Allgemeine Architektur: wiki/Concepts/Architecture.md
Eine typische Organisation könnte CRML zusammen mit Erkennungs- und Infrastrukturcode führen:
risk/models/ – Szenarien und Portfolios in CRMLrisk/catalogs/ – versionierte Kontroll- und Angriffskataloge (intern oder extern)risk/mappings/ – Telemetrie-/Kontroll-/Bedrohungs-Zuordnungen mit Verantwortlichkeit und Änderungshistoriecrml-lang validate aus; ein nächtlicher Job führt crml simulate aus und veröffentlicht DashboardsBeispielausschnitt (illustrativ):
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
Dieses Repository enthält zwei Python-Pakete und eine Weboberfläche:
crml-lang: Sprach-/Spezifikationsmodelle + Schema-Validierung + YAML-IOcrml-engine: Referenzlaufzeit + crml-CLI (abhängig von crml-lang)web/: CRML Studio – Browser-UI für Validierung und Simulation (Next.js)Wenn Sie die CLI möchten:
pip install crml-engine
Wenn Sie nur die Sprachbibliothek möchten:
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
Laden und validieren:
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)
Simulation ausführen:
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/ – Sprach-/Spezifikationspaketcrml_engine/ – Referenz-Engine-Paketweb/ – Weboberfläche (Next.js)examples/ – Beispiel-CRML-YAML-Modelle und FX-Konfigurationwiki/ – Dokumentationsquelle (MkDocs)CRML Studio befindet sich in web/.
Lokal ausführen:
pip install crml-engine
cd web
npm install
npm run dev
Öffnen Sie http://localhost:3000


Siehe die Dokumentation unter wiki/ (beginnen Sie bei wiki/Home.md).
OSCAL-Interoperabilität und Zuordnungsregeln: wiki/Guides/OSCAL.md.
SCF-Integrations- und Zuordnungsleitfaden: wiki/Guides/SCF.md.
Aktuelle Dokumenttypen:
crml_scenario: "1.0" mit Top-Level scenario:crml_portfolio: "1.0" mit Top-Level portfolio:MIT-Lizenz – siehe LICENSE.