このリポジトリには、CVE-2026-24009 の概念実証(PoC)と簡単なスキャナーが含まれています。この脆弱性では、特定の依存関係条件下で攻撃者が制御するYAMLを読み込む際に、docling-core がコード実行を可能にする可能性があります。
影響: YAML解析中の潜在的なRCE 脆弱なチェーン(すべて必須):
docling-core >= 2.21.0 かつ < 2.48.4PyYAML < 5.4(CVE-2020-14343 に関連する上流の動作)DoclingDocument.load_from_yaml(...) を呼び出す修正: docling-core を >= 2.48.4 にアップグレード(yaml.SafeLoader に切り替え)
代替修正: PyYAML を にアップグレード
DoclingDocument.load_from_yaml() は、YAMLシリアライズされた DoclingDocument をデシリアライズします。脆弱なバージョンでは、PyYAML が脆弱な場合に安全でないローダー(yaml.FullLoader)を使用してYAMLを読み込むため、悪意のあるYAMLコンストラクタが解析中にコードを実行できる可能性があります(詳細は CVE-2020-14343 を参照)。
docling-core: 2.48.3(脆弱)PyYAML: 5.3.1(脆弱)python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "docling-core==2.48.3" "PyYAML==5.3.1"
以下を実行:
python check_loader.py
脆弱なバージョンでは、load_from_yaml() は以下を使用します:
data = yaml.load(f, Loader=yaml.FullLoader)
python repro_docling_load.py
期待される動作:
repro_docling_load.py が ValidationError を発生させる(想定内)/tmp/docling_cve_poc_markerこれは、DoclingDocument.model_validate(...) が失敗する前に、YAML解析中に実行が発生したことを示しています。
docling-core のアップグレード(推奨)python -m pip install --upgrade "docling-core==2.48.4"
python check_loader.py
python repro_docling_load.py
期待される結果:
check_loader.py が yaml.SafeLoader を表示PyYAML のアップグレードPyYAML を >= 5.4 にアップグレードすると、CVE-2020-14343 に関連する上流の動作が緩和されます。
アップグレードが不可能な場合は、安全でないローダーで信頼できないYAMLを読み込まないようにしてください。信頼できないYAMLをデシリアライズする際は、yaml.SafeLoader を強制してください。
docling 露出に関するメモ(依存関係マッピング)このCVEは docling-core にありますが、最も一般的な利用者は docling です。docling の広範な依存関係範囲は、それ自体では脆弱性を証明しません。重要なのは、解決された環境(ロックファイル / インストール済みパッケージ)と、YAMLインポートパスが使用されているかどうかです。
このリポジトリには collect_versions.py が含まれており、以下をマッピングします:
pyproject.toml から宣言された docling-core 制約uv.lock(または古いタグでは poetry.lock)から固定された docling-core バージョン抽出されたデータから、潜在的に脆弱な docling バージョン(制約が脆弱なバージョンを許可し、ロックが脆弱なバージョンを固定)は以下の通りです:
>= v2.27.0 かつ <= v2.57.0これは依存関係解決の指標であり、デフォルトの
doclingワークフローが信頼できない入力に対してload_from_yaml()に到達することを証明するものではありません。
repro_docling_load.py — 最小限のPoCランナーcheck_loader.py — load_from_yaml() が使用するYAMLローダーを表示scanner/ — シンプルな依存関係ベースのスキャナー(任意の直接シンクチェック)collect_versions.py — docling タグを固定された docling-core バージョンにマッピングするヘルパー