FlawOpen

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

● CVE-2026-105751 · CVSS v4 6.9 · Sedang
Riset Keamanan · FlawOpen

CVE-2026-105751: Pengungkapan berkas ODF Docling

Backend ODF Docling dapat memperlakukan referensi gambar dalam dokumen sebagai path lokal dan membacanya di luar arsip. Perbarui ke 2.120.3; perbaikannya memakai komponen bersama untuk mengendalikan pemuatan resource.

Vektor CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N
💡 Penjelasan Sederhana (ELI5)

Pustakawan mencari foto di dalam album. Jika tidak ada, pembaca yang cacat membuka lemari arsip menggunakan path pada label album tanpa memeriksa aturan perpustakaan yang melarang pengambilan berkas lokal. Perbaikan membuat pembaca memakai meja resource terlindungi yang sama dengan format dokumen lain.

Konsep Kunci & Istilah

OpenDocument Format (ODF)
Keluarga format dokumen perkantoran yang mencakup dokumen teks .odt. Docling membaca referensi gambar dari XML dokumen.
draw:image
Elemen XML ODF yang mendeskripsikan gambar. Nilai xlink:href-nya menunjuk ke resource.
xlink:href
Referensi resource pada elemen gambar ODF. Nilai ini berasal dari dokumen dan bukan keputusan otorisasi filesystem.
ImageResourceLoader
Pemuat gambar bersama Docling. Komponen ini menerapkan opsi pengambilan lokal/jarak jauh, penanganan path, dan pemeriksaan keamanan URL jarak jauh.
enable_local_fetch
Opsi yang mengontrol apakah backend yang mendukungnya boleh mengambil gambar lokal. Backend yang melewati pemuat bersama juga melewati kontrol ini.

Pemetaan kerangka kerja

  • Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-22

Analisis Akar Masalah (Root Cause)

Pada versi Docling yang terdampak, _image_ref_from_odf_image() lebih dulu mencari resource draw:image di dalam arsip ODF. Jika pencarian tidak menghasilkan bytes, fallback langsung mengubah xlink:href yang dikendalikan dokumen menjadi Path dan memanggil read_bytes() bila path tersebut ada. Ini melewati ImageResourceLoader bersama sehingga pemrosesan ODF tidak menerapkan enable_local_fetch, enable_remote_fetch, ataupun aturan resolusi resource umum. Filter jenis gambar juga menerima akhiran kosong sehingga path tanpa ekstensi dapat lolos. Pembacaan file dapat terjadi sebelum decoding gambar; pengungkapan pada dokumen hasilnya terbukti ketika bytes dapat didekode sebagai gambar. Advisory vendor menjelaskan pembacaan berkas lokal arbitrer dan pengungkapan konten gambar pada format keluaran Docling; pengungkapan terakhir terbatas pada data yang dapat didekode sebagai gambar. CVE ini berkaitan dengan dokumen yang diberikan untuk dikonversi oleh proses yang dapat membaca berkas lokal; ini tidak membuktikan bahwa setiap deployment Docling dapat dijangkau dari jaringan. Perbaikan mengirim referensi eksternal ke ImageResourceLoader.load_image_data() tanpa base path lokal, meneruskan pemuat sepanjang pemrosesan ODF, dan menghapus akhiran kosong dari ekstensi gambar yang diterima. Pemuat bersama menolak pengambilan lokal secara default dan mensyaratkan base path yang dibatasi bila opsi lokal diaktifkan. CNA GitHub memberi skor CVSS 4.0 6,9 Moderate (UI:A); jangan menyebutnya eksploitasi jarak jauh tanpa autentikasi tanpa layanan dan jalur konversi tambahan yang dapat dijangkau.

Alur Serangan Langkah demi Langkah

Langkah 1

Dokumen masuk ke jalur konversi ODF

Input yang relevan adalah berkas OpenDocument yang diproses Docling 2.107.0 sampai 2.120.2. Masalah berada pada backend gambar ODF, bukan seluruh format Docling atau semua integrasi HTML/RAG.

Langkah 2

Referensi gambar berasal dari XML dokumen

Elemen ODF draw:image menyediakan xlink:href. Docling lebih dulu mencari resource di dalam arsip.

Langkah 3

Bagian yang tidak ada di arsip jatuh ke path host

Saat pencarian di dalam arsip gagal, helper yang rentan menggunakan referensi yang sama sebagai Path dan membacanya langsung. Fallback tidak memeriksa opsi pengambilan lokal bersama dan tidak membatasi path ke arsip.

Langkah 4

Docling memproses bytes sebagai resource gambar

Pembacaan filesystem terjadi sebelum decoding gambar. Jika isinya gambar yang didukung, bytes dapat disertakan dalam DoclingDocument dan ekspor HTML, Markdown, atau JSON.

Langkah 5

Pemuat yang diperbaiki memulihkan batas resource

Docling 2.120.3 mengarahkan referensi ODF eksternal melalui ImageResourceLoader, tidak memberikan base path lokal, dan menolak referensi tanpa ekstensi. Biarkan pengambilan lokal nonaktif saat mengonversi dokumen yang tidak tepercaya.

Kode Sumber: Rentan vs Aman

Ini adalah kutipan terfokus dari kode upstream, bukan patch mandiri. Perbaikan membuat ImageResourceLoader dengan opsi enable_local_fetch dan enable_remote_fetch milik backend, meneruskannya ke pemrosesan ODF, lalu memuat referensi eksternal melalui pemuat tersebut. Dengan base_path=None, path lokal ditolak meskipun pengambilan lokal diaktifkan secara eksplisit karena pemuat tidak dapat menetapkan direktori yang dibatasi. Patch juga menolak akhiran gambar kosong. Perbarui ke 2.120.3 atau yang lebih baru, jangan hanya menyalin kutipan ini.

Cuplikan sumber: docling/backend/opendocument_backend.py — cuplikan kode sumber terpilih

IMPLEMENTASI RENTAN
# Resource yang tidak ada di arsip akan dibaca dari path yang diberikan dokumen.
if image_data is None and image_url:
    image_path = Path(image_url)
    if image_path.is_file():
        image_data = image_path.read_bytes()
PERBAIKAN AMAN & KUAT
# Jalur yang diperbaiki: gunakan pemuat bersama dengan opsi backend.
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)

Daftar Periksa Penguatan Sistem Rekayasa

Sumber