
사이버 위험 모델링을 위한 오픈소스 선언형 언어입니다. QBER, FAIR Monte Carlo 엔진 및 엔터프라이즈 위험 정량화 플랫폼과 같은 베이지안 위험 모델을 구축할 수 있습니다. PyPI에서 사용 가능합니다.
상태: 초안. 이 프로젝트는 활발히 개발 중이며 예고 없이 변경될 수 있습니다. 의견, 이슈, 기여를 환영합니다. ⚠️ 경고 이 코드베이스는 현재
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의 목표는 이 표준이 되는 것입니다: 모델을 이식 가능하게 하고, 가정을 명시적으로 만들며, 결과를 재현 가능하게 합니다.
CRML이 인프라에서 IaC만큼 위험 작업에서 일반적인 미래를 상상해보세요:
그러한 세상에서 사이버 위험은 팀 간에 재현 가능하고, 비교 가능하며, 자동화 가능해지면서도 방법론적 다양성을 허용합니다.
일반 아키텍처 참조: 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
이 저장소는 두 개의 Python 패키지와 웹 UI를 제공합니다:
crml-lang: 언어/사양 모델 + 스키마 검증 + YAML 입출력crml-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/ — 웹 UI (Next.js)examples/ — 예제 CRML YAML 모델 및 FX 구성wiki/ — 문서 소스 (MkDocs)CRML Studio는 web/에 있습니다.
로컬에서 실행:
pip install crml-engine
cd web
npm install
npm run dev


문서는 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 참조.