FlawOpen

flawopen.com/Teardowns/cve-2026-105751-docling-odf-file-disclosure

● CVE-2026-105751 · CVSS v4 6.9 · Mittel
Sicherheitsforschung · FlawOpen

CVE-2026-105751: Docling-ODF-Dateioffenlegung

Das ODF-Backend von Docling konnte einen Bildverweis aus einem Dokument als lokalen Pfad behandeln und außerhalb des Archivs lesen. Aktualisieren Sie auf 2.120.3; der Fix verwendet die gemeinsam genutzte Komponente zur Ressourcensteuerung.

CVSS-VektorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N
💡 Einfache Erklärung (ELI5)

Eine Bibliothekarin sucht ein Bild in einem Sammelalbum. Fehlt es dort, öffnet der fehlerhafte Leser den Aktenschrank unter dem Pfad auf dem Albumetikett, ohne die Bibliotheksregel gegen lokale Abrufe zu prüfen. Der Fix führt den Leser über dieselbe geschützte Ressourcenausgabe wie bei anderen Dokumentformaten.

Kernkonzepte & Begriffe

OpenDocument Format (ODF)
Formatfamilie für Office-Dokumente, darunter .odt-Textdateien. Docling liest Bildverweise aus dem XML des Dokuments.
draw:image
ODF-XML-Element für ein Bild. Der Wert xlink:href bezeichnet die Ressource.
xlink:href
Ressourcenverweis in einem ODF-Bildelement. Er stammt aus dem Dokument und darf keine Dateisystemberechtigung festlegen.
ImageResourceLoader
Gemeinsam genutzter Docling-Bildlader. Er setzt lokale und entfernte Abrufoptionen, Pfadauflösung und Sicherheitsprüfungen entfernter URLs um.
enable_local_fetch
Option dafür, ob unterstützte Backends lokale Bildressourcen laden dürfen. Umgeht ein Backend den gemeinsamen Loader, umgeht es auch diese Kontrolle.

Framework-Zuordnungen

  • CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-22

Ursachenanalyse

In betroffenen Docling-Versionen suchte _image_ref_from_odf_image() zuerst die draw:image-Ressource im ODF-Archiv. Liefert diese Suche keine Bytes, wandelte der Fallback das vom Dokument gesteuerte xlink:href direkt in Path um und rief bei vorhandenem Pfad read_bytes() auf. Dadurch wurde ImageResourceLoader umgangen: Die ODF-Verarbeitung setzte weder enable_local_fetch noch enable_remote_fetch oder die gemeinsamen Regeln zur Ressourcenauflösung durch. Der Bildtypfilter akzeptierte außerdem einen leeren Suffix und damit Pfade ohne Erweiterung. Der Dateizugriff kann vor der Bilddekodierung stattfinden; die Offenlegung im resultierenden Dokument ist belegt, wenn sich die Bytes als Bild dekodieren lassen. Der Herstellerhinweis beschreibt beliebiges lokales Lesen und die Offenlegung decodierbarer Bilddaten in Doclings Ausgabeformaten. Das CVE betrifft ein bereitgestelltes Dokument, das von einem Prozess mit lokalem Dateizugriff konvertiert wird; es belegt nicht, dass jede Docling-Installation aus dem Netzwerk erreichbar ist. Der Fix leitet externe Verweise ohne lokalen Basispfad an ImageResourceLoader.load_image_data() weiter, reicht den Loader durch die ODF-Verarbeitung und entfernt den leeren Suffix aus den zulässigen Bildendungen. Der gemeinsame Loader verweigert lokale Abrufe standardmäßig und verlangt bei aktivierten lokalen Abrufen einen eingegrenzten Basispfad. Die GitHub-CNA bewertet den Fehler mit CVSS 4.0 6,9 (Mittel, UI:A); bezeichnen Sie ihn ohne einen zusätzlich erreichbaren Dienst und Konvertierungspfad nicht als unauthentifizierte Remote-Ausnutzung.

Schritt-für-Schritt Angriffsablauf

Schritt 1

Ein Dokument gelangt in den ODF-Konvertierungspfad

Die relevante Eingabe ist eine OpenDocument-Datei, die Docling 2.107.0 bis 2.120.2 verarbeitet. Der Fehler liegt im ODF-Bild-Backend, nicht in jedem Docling-Format oder jeder HTML-/RAG-Integration.

Schritt 2

Der Bildverweis stammt aus dem Dokument-XML

Das ODF-Element draw:image liefert ein xlink:href. Docling sucht die Ressource zuerst im Archiv.

Schritt 3

Ein fehlender Archivbestandteil fällt auf einen Hostpfad zurück

Scheitert die Suche im Archiv, verwendete der fehlerhafte Helper denselben Verweis als Path und las ihn direkt. Der Fallback prüfte weder die gemeinsame Option für lokale Abrufe noch begrenzte er den Pfad auf das Archiv.

Schritt 4

Docling verarbeitet die Bytes als Bildressource

Der Dateizugriff erfolgt vor der Dekodierung. Ist der Inhalt ein unterstütztes Bild, können die Bytes in das DoclingDocument und die HTML-, Markdown- oder JSON-Ausgabe eingebettet werden.

Schritt 5

Der korrigierte Loader stellt die Ressourcengrenze wieder her

Docling 2.120.3 leitet externe ODF-Verweise durch ImageResourceLoader, übergibt keinen lokalen Basispfad und schließt Verweise ohne Erweiterung aus. Lassen Sie lokale Abrufe bei nicht vertrauenswürdigen Dokumenten deaktiviert.

Quellcode: Verwundbar vs. Sicher

Dies sind gezielte Ausschnitte aus dem Upstream-Code, kein eigenständiger Patch. Der Fix erzeugt ImageResourceLoader mit den Backend-Optionen enable_local_fetch und enable_remote_fetch, reicht ihn an die ODF-Verarbeitung weiter und lässt externe Verweise durch diesen Loader laufen. Bei base_path=None werden lokale Pfade auch dann abgelehnt, wenn lokale Abrufe ausdrücklich aktiviert sind, weil der Loader kein eingegrenztes Verzeichnis bestimmen kann. Zusätzlich lehnt der Patch leere Bildsuffixe ab. Aktualisieren Sie auf 2.120.3 oder neuer, statt nur diesen Ausschnitt zu übernehmen.

Quelltextauszug: docling/backend/opendocument_backend.py — gezielter Quellcodeausschnitt

VERWUNDBARE IMPLEMENTIERUNG
# Eine fehlende Archivressource fiel auf den vom Dokument angegebenen Pfad zurück.
if image_data is None and image_url:
    image_path = Path(image_url)
    if image_path.is_file():
        image_data = image_path.read_bytes()
GEHÄRTETER SICHERHEITS-PATCH
# Korrigierter Pfad: gemeinsamen Loader mit den Backend-Optionen verwenden.
if image_data is None and image_url and image_loader is not None:
    image_data = image_loader.load_image_data(image_url, base_path=None)

Checkliste für Engineering & Systemsicherheit

Quellen