
CVE-2026-24009 के लिए तकनीकी विवरण और PoC, जो docling-core में असुरक्षित YAML लोडिंग और व्यावहारिक शमन मार्गों को प्रदर्शित करता है।
इस रिपॉजिटरी में एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) और एक सरल स्कैनर शामिल है जो CVE-2026-24009 का प्रदर्शन करता है, जहां docling-core विशिष्ट निर्भरता स्थितियों के तहत हमलावर-नियंत्रित YAML लोड करते समय कोड निष्पादन सक्षम कर सकता है।
प्रभाव: 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 पर स्विच करता है)
को में अपग्रेड करें
PyYAMLDoclingDocument.load_from_yaml() एक YAML-सीरियलाइज़्ड DoclingDocument को डिसीरियलाइज़ करता है। कमजोर संस्करणों में, यह असुरक्षित लोडर (yaml.FullLoader) का उपयोग करके YAML लोड करता है जब PyYAML कमजोर होता है, जिससे दुर्भावनापूर्ण 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यह प्रदर्शित करता है कि निष्पादन YAML पार्सिंग के दौरान हुआ, DoclingDocument.model_validate(...) के विफल होने से पहले।
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 संस्करणों में मैप करने के लिए सहायक