flawopen.com/Teardowns/cve-2026-105751-docling-odf-file-disclosure
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 CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:L/SI:N/SA:NPustakawan 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
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.
Referensi gambar berasal dari XML dokumen
Elemen ODF draw:image menyediakan xlink:href. Docling lebih dulu mencari resource di dalam arsip.
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.
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.
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
# 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()
# 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
- ✓Perbarui docling ke 2.120.3 atau yang lebih baru dan verifikasi versi paket runtime yang terpasang, termasuk pada layanan pemrosesan dokumen transitif.
- ✓Inventarisasi pipeline yang menerima berkas .odt, .ods, atau .odp yang tidak tepercaya dan tentukan berkas OS apa saja yang dapat dibaca proses konversi.
- ✓Biarkan enable_local_fetch nonaktif untuk dokumen tidak tepercaya; pada versi rentan, opsi ini tidak melindungi jalur ODF yang melewati pemuat bersama.
- ✓Jalankan konversi dengan identitas berhak minimum, akses filesystem minimal hanya-baca, dan tanpa memasang rahasia pada proses parser.
- ✓Gunakan ImageResourceLoader bersama pada backend khusus, bukan membuka path dari dokumen secara langsung; wajibkan direktori dasar tepercaya sebelum mengizinkan resource lokal.
- ✓Tambahkan tes regresi dengan berkas canary sementara untuk gambar di dalam arsip, referensi yang hilang, referensi tanpa ekstensi, path absolut, serta konfigurasi pengambilan lokal aktif/nonaktif.
- ✓Pastikan keluaran hanya memuat aset dokumen yang diharapkan; konversi yang berhasil tidak membuktikan bahwa berkas lain tidak dibuka.
- ✓Jika layanan terdampak pernah memproses ODF tidak tepercaya, tinjau log dan artefak keluaran untuk data gambar yang tidak diharapkan; batasi pemeriksaan ke berkas yang dapat dibaca akun layanan.