Crml Code について
CRMLは、移植可能なサイバーリスクモデルをYAMLまたはJSONで記述する宣言型言語です。モデルの検証、レビュー、異なるシミュレーションエンジンでの実行を必要とするセキュリティ、コンプライアンス、リスク担当者向けで、現在はドラフトとして開発中です。
主な機能
- 01YAML・JSONによるモデル記述
- 02スキーマベースの検証
- 03参照シミュレーションランタイムとCLI
- 04コントロール有効性と多層防御のモデル化
- 05通貨対応と損失データによる較正
- 06ブラウザ版CRML Studio
活用シーン
- 01サイバーリスクの前提を版管理・レビュー
- 02シミュレーション前のモデル検証
- 03異なる定量化エンジン間でのモデル再利用
- 04コントロール投資案の比較
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CRML — サイバーリスクモデリング言語
ステータス: ドラフト。このプロジェクトは活発に開発中であり、予告なく変更される場合があります。 ご意見、課題の報告、貢献を歓迎します。 ⚠️ WARNING このコードベースは現在、
crml-dev-1.3ブランチで開発中です。最新の開発状況と正となる情報については、こちらをご覧ください:https://github.com/Faux16/crml/tree/crml-dev-1.3
バージョン: 1.2
メンテナンス担当: Zeron Research Labs and CyberSec Consulting LLC
支援:
- コミュニティの貢献者と早期導入者
CRMLは、オープンな宣言型の、エンジンに依存しない、コントロール/攻撃フレームワークに依存しないサイバーリスクモデリング言語です。 特定の定量化手法、シミュレーションエンジン、セキュリティコントロール/脅威カタログに縛られることなく、サイバーリスクモデル、テレメトリのマッピング、シミュレーションパイプライン、依存関係、出力要件を記述するためのYAML/JSON形式を提供します。
CRMLは**RaC(リスク・アズ・コード)**を可能にします。リスクおよびコンプライアンスに関する前提条件を、チームやツールをまたいで一貫して検証・実行できる、バージョン管理されたレビュー可能な成果物にします。
問題の概要(CRMLが解決する課題)
サイバーセキュリティ、コンプライアンス、リスク管理の専門家は、しばしば次のような実務上の課題に直面します。
- リスクモデルがスプレッドシート、スライド資料、またはプロプライエタリツールに閉じ込められており、レビュー、監査、再現、自動化が困難です。
- コントロールの有効性や「多層防御」に関する前提条件の記録に一貫性がなく、分析担当者や四半期ごとに結果が異なります。
- 脅威およびコントロールのフレームワーク(ATT&CK、CIS、NIST、ISO、SCF、社内カタログなど)は時間とともに変化し、一貫した機械可読形式を提供していません。マッピングは壊れやすく、バージョン管理されることもほとんどありません。
- 定量化エンジン(FAIR形式のモンテカルロ、Bayesian/QBER、保険数理モデル、社内プラットフォームなど)によって仕様が異なり、書き換えや再解釈に多大なコストがかかります。
- 監査に対応できる証拠が分散しています。「何を、どのパラメーターとデータを使ってモデル化し、どのような出力を得たのか」を証明することが困難です。
CRMLは、サイバーリスクモデルとその入出力の「記述」を標準化し、明確な検証とトレーサビリティを確保しながら、異なるエンジンや組織間で同じモデルを交換・実行できるようにします。
定性的な評価だけでは不十分な理由
定性的な手法(赤/黄/緑、「高/中/低」、成熟度スコア)は、伝達や優先順位付けには役立ちますが、次のような場面では不十分になりがちです。
- 投資ありの場合となしの場合の予想リスクを比較して、セキュリティ支出(または新しいセキュリティ製品)の妥当性を示す
- 事業部門、ベンダー、期間をまたいでリスクを一貫して比較する
- コントロールによる測定可能なリスク低減を示す(単に「セキュリティ態勢が改善した」とするのではなく)
- サイバーリスクを企業リスク、保険、財務計画と結び付ける
- 「この数値をどのように算出したか」を示す、再現可能で監査に対応できる証拠を作成する
次の進化は定量化されたリスク管理です。明示的な前提条件とデータに基づき、サイバーリスクを推定可能な結果の分布として扱い、再現可能な手法で算出します。 ただし、定量化のアプローチを大規模に適用するには、モデルを標準化する必要があります。そうすることで、さまざまなツールやチームでモデルを検証、レビュー、再利用、実行できるようになります。
CRMLの目標は、この標準となることです。モデルを移植可能にし、前提条件を明示的にし、結果を再現可能にします。
主な機能
- コントロールの有効性のモデリング — 多層防御を含め、コントロールによるリスク低減を定量化します
- 中央値に基づくパラメーター設定 — 対数正規分布の中央値を直接指定できます
- 複数通貨への対応 — 自動換算により、複数の通貨をまたいでモデル化できます
- 自動キャリブレーション — 損失データから分布を調整します
- 厳格な検証 — JSON Schema 検証により、シミュレーション前にエラーを検出します
- 実装に依存しない設計 — 準拠するシミュレーションエンジンであれば、どれでも利用できます
- 人が読みやすい YAML — 読みやすく、レビューや監査が簡単です
ビジョン(CRMLが標準となる世界)
近い将来、CRMLがリスク管理において、IaCがインフラストラクチャにおいて当たり前になっているような世界を想像してみてください。
- セキュリティアーキテクトは、CRMLドキュメントを更新して新しいコントロールプログラムを提案し、その変更は明確な差分とともにGitでピアレビューされます。
- GRCチームと監査チームは、すべての指標を検証済みのバージョン管理されたモデル(入力、前提条件、マッピング、出力)までたどれます。
- さまざまな定量化エンジン(ベンダープラットフォーム、社内FAIRモンテカルロ、ベイズQBER、保険数理モデル)が、すべて同じCRMLドキュメントを利用します。
- フレームワークの変更には、モデルのロジックを書き換えるのではなく、カタログやマッピング(こちらもバージョン管理されます)を更新して対応します。
- 組織は、スプレッドシートやスクリーンショットを送ることなく、パートナー、保険会社、規制当局とモデルを共有できます。
- サイバーセキュリティ当局は、年次の脅威ランドスケープレポートをCRMLで公開できます。ナラティブ形式のPDFよりも豊かなニュアンス(前提条件、分布、依存関係、コントロールのベースライン、マッピングなど)を表現できるうえ、業界からより標準化された機械可読形式のデータ提出を受けられるようになります。
その世界では、手法の多様性を維持しながら、チーム間でサイバーリスクを再現可能、比較可能、自動化可能なものにできます。
全般的なアーキテクチャをご覧ください:wiki/Concepts/Architecture.md
簡単な例(「標準化されたCRML」のイメージ)
一般的な組織では、検知やインフラストラクチャのコードとともにCRMLを管理するでしょう。
risk/models/— CRML形式のシナリオとポートフォリオrisk/catalogs/— バージョン管理されたコントロールと攻撃のカタログ(内部または外部)risk/mappings/— 所有者と変更履歴を含む、テレメトリー/コントロール/脅威のマッピング- CIでは、すべてのPRで
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入出力crml-engine:参照ランタイムとcrmlCLI(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]"
クイックスタート(CLI)
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
クイックスタート(Python)
読み込みと検証:
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
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。
現在のドキュメントタイプ:
- シナリオドキュメント:
crml_scenario: "1.0"とトップレベルのscenario: - ポートフォリオドキュメント:
crml_portfolio: "1.0"とトップレベルのportfolio:
ライセンス
MIT License — LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。