
Technischer Bericht und PoC für CVE-2026-24009, der unsicheres YAML-Laden in docling-core demonstriert und praktische Minderungswege aufzeigt.
Dieses Repository enthält einen Proof-of-Concept (PoC) und einen einfachen Scanner, die CVE-2026-24009 demonstrieren, bei dem docling-core unter bestimmten Abhängigkeitsbedingungen die Codeausführung beim Laden von angreiferkontrolliertem YAML ermöglichen kann.
Auswirkung: potenzielle RCE während der YAML-Analyse Verwundbare Kette (alle erforderlich):
docling-core >= 2.21.0 und < 2.48.4PyYAML < 5.4 (Upstream-Verhalten im Zusammenhang mit CVE-2020-14343)DoclingDocument.load_from_yaml(...) mit nicht vertrauenswürdigem YAML aufFix: Upgrade von docling-core auf >= 2.48.4 (Wechsel zu yaml.SafeLoader)
Upgrade von auf
PyYAMLDoclingDocument.load_from_yaml() deserialisiert ein YAML-serialisiertes DoclingDocument. In verwundbaren Versionen wird YAML mit einem unsicheren Loader (yaml.FullLoader) geladen, wenn PyYAML verwundbar ist, wodurch bösartige YAML-Konstruktoren während der Analyse Code ausführen können (weitere Informationen finden Sie unter CVE-2020-14343).
docling-core: 2.48.3 (verwundbar)PyYAML: 5.3.1 (verwundbar)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"
Ausführen:
python check_loader.py
In verwundbaren Versionen verwendet load_from_yaml():
data = yaml.load(f, Loader=yaml.FullLoader)
python repro_docling_load.py
Erwartetes Verhalten:
repro_docling_load.py löst eine ValidationError aus (erwartet)/tmp/docling_cve_poc_markerDies demonstriert, dass die Ausführung während der YAML-Analyse erfolgte, bevor DoclingDocument.model_validate(...) fehlschlägt.
docling-core (empfohlen)python -m pip install --upgrade "docling-core==2.48.4"
python check_loader.py
python repro_docling_load.py
Erwartet:
check_loader.py zeigt yaml.SafeLoaderPyYAMLEin Upgrade von PyYAML auf >= 5.4 entschärft das Upstream-Verhalten im Zusammenhang mit CVE-2020-14343.
Wenn ein Upgrade nicht möglich ist, vermeiden Sie das Laden nicht vertrauenswürdigen YAMLs mit unsicheren Loadern. Erzwingen Sie yaml.SafeLoader beim Deserialisieren nicht vertrauenswürdigen YAMLs.
docling-Exposition (Abhängigkeitszuordnung)Während diese CVE in docling-core liegt, ist der häufigste Konsument docling. Ein breiter Abhängigkeitsbereich in docling beweist für sich genommen keine Verwundbarkeit; entscheidend ist die aufgelöste Umgebung (Lockfiles / installierte Pakete) und ob YAML-Importpfade verwendet werden.
Dieses Repository enthält collect_versions.py, das Folgendes zuordnet:
docling-core-Einschränkungen aus pyproject.tomldocling-core-Versionen aus uv.lock (oder poetry.lock in älteren Tags)Aus den extrahierten Daten sind die potenziell verwundbaren docling-Versionen (Einschränkung erlaubt verwundbar + Lock pinnt verwundbar):
>= v2.27.0 und <= v2.57.0Dies ist ein Indikator für die Abhängigkeitsauflösung, kein Beweis dafür, dass Standard-
docling-Workflowsload_from_yaml()mit nicht vertrauenswürdigen Eingaben erreichen.
repro_docling_load.py — minimaler PoC-Runnercheck_loader.py — gibt den von load_from_yaml() verwendeten YAML-Loader ausscanner/ — ein einfacher abhängigkeitsbasierter Scanner (optionaler direkter Sink-Check)collect_versions.py — Hilfsprogramm zum Zuordnen von docling-Tags zu gepinnten docling-core-Versionen