
ステータス: ドラフト。このプロジェクトは活発に開発中であり、予告なく変更される可能性があります。 インプット、問題報告、コントリビューションを歓迎します。 ⚠️ 警告 このコードベースは現在
crml-dev-1.3ブランチで開発されています。最新の作業中コードと正本については、次を参照してください: https://github.com/Faux16/crml/tree/crml-dev-1.3
バージョン: 1.2
メンテナー: Zeron Research Labs および CyberSec Consulting LLC
サポート:
CRMLは、オープンで宣言的な、エンジン非依存かつコントロール/アタックフレームワーク非依存のサイバーリスクモデリング言語です。サイバーリスクモデル、テレメトリマッピング、シミュレーションパイプライン、依存関係、出力要件を記述するためのYAML/JSON形式を提供し、特定の定量化手法、シミュレーションエンジン、セキュリティコントロール/脅威カタログに強制することはありません。
CRMLは**RaC(Risk as Code)**を可能にします。リスクとコンプライアンスの前提はバージョン管理され、レビュー可能な成果物となり、チームやツールをまたいで一貫して検証・実行できます。
サイバーセキュリティ、コンプライアンス、リスク管理の専門家は、しばしば同じ実際的な問題に直面します:
CRMLは、サイバーリスクモデルとその入出力の記述を標準化することでこれに対処し、異なるエンジンや組織が同じモデルを明確な検証とトレーサビリティのもとで交換・実行できるようにします。
定性的手法(赤/黄/緑、「高/中/低」、成熟度スコア)は、コミュニケーションや優先順位付けには有用ですが、以下の場合には機能しなくなる傾向があります:
次の進化は定量化されたリスク管理です。サイバーリスクを、明示的な前提とデータに基づき、再現可能な方法で計算される推定可能な結果の分布として扱います。しかし、定量化アプローチがスケールするのは、モデルが標準化されている場合だけです。つまり、ツールやチームをまたいで検証、レビュー、再利用、実行ができるようにする必要があります。
CRMLの目標は、この標準となることです。モデルをポータブルに、前提を明示的に、結果を再現可能にします。
IaCがインフラにとって当たり前であるように、CRMLがリスク業務にとって当たり前となる近い未来を想像してみてください:
その世界では、サイバーリスクは方法論の多様性を保ちながら、チームをまたいで再現可能、比較可能、自動化可能になります。
一般的なアーキテクチャを参照: wiki/Concepts/Architecture.md
一般的な組織では、CRMLを検知コードやインフラコードと一緒に管理するかもしれません:
risk/models/ — CRML形式のシナリオとポートフォリオrisk/catalogs/ — バージョン管理されたコントロール+攻撃カタログ(内部または外部)risk/mappings/ — 所有者と変更履歴を持つテレメトリ/コントロール/脅威マッピングcrml-lang validate を実行し、夜間ジョブが crml simulate を実行してダッシュボードを公開しますコード例(例示):
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
このリポジトリには、2つのPythonパッケージとWeb UIが含まれています:
crml-lang: 言語/仕様モデル+スキーマ検証+YAML IOcrml-engine: リファレンスランタイム+crml CLI(crml-langに依存)web/: CRML Studio — 検証とシミュレーションのためのブラウザUI(Next.js)CLIが必要な場合:
pip install crml-engine
言語ライブラリのみが必要な場合:
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
読み込みと検証:
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)
シミュレーションの実行:
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/ — 言語/仕様パッケージcrml_engine/ — リファレンスエンジンパッケージweb/ — Web UI(Next.js)examples/ — CRML YAMLモデルとFX設定の例wiki/ — ドキュメントソース(MkDocs)CRML Studioはweb/内にあります。
ローカルで実行する場合:
pip install crml-engine
cd web
npm install
npm run dev
http://localhost:3000 を開いてください。


wiki/ にあるドキュメントを参照してください(wiki/Home.mdから始めてください)。
OSCAL相互運用性とマッピングルール: wiki/Guides/OSCAL.md
SCF統合とマッピングガイド: wiki/Guides/SCF.md
現在のドキュメントタイプ:
scenario: を持つ crml_scenario: "1.0"portfolio: を持つ crml_portfolio: "1.0"MITライセンス — LICENSEを参照してください。