
प्रमाण-अवधारणा शोषण CVE-2025-50420 के लिए जो Poppler के pdfseparate में निर्मित /Annots शब्दकोशों के माध्यम से अनंत पुनरावृत्ति प्रदर्शित करता है, जिससे सेवा-निषेध होता है। इसमें AFL फजिंग सेटअप और GDB क्रैश विश्लेषण शामिल है।
Poppler संस्करण 25.07.0 से पहले के संस्करण में इसके pdfseparate उपयोगिता की PDFDoc प्रोसेसिंग लॉजिक में एक कमजोरी है: निर्मित "/Annots" शब्दकोश जो स्वयं या एक-दूसरे को संदर्भित करते हैं, "PDFDoc::markAnnotations --> PDFDoc::markPageObjects --> PDFDoc::markObject --> PDFDoc::markDictionary" में अनंत पुनरावृत्ति (infinite recursion) का कारण बनते हैं, क्योंकि लूप डिटेक्शन डिक्शनरी पॉइंटर पतों का उपयोग करता है जो प्रत्येक fetch() पर भिन्न होते हैं। एक दूरस्थ हमलावर एक दुर्भावनापूर्ण PDF को प्रोसेस करके सेवा से वंचित (एप्लिकेशन हैंग या क्रैश) कर सकता है।
यहाँ मैंने एक दुर्भावनापूर्ण PDF (poppler-pdfseparate-poc) तैयार की है जहाँ "/Annots" एक स्व-संदर्भित या पारस्परिक रूप से संदर्भित शब्दकोश को हल करता है, जिससे Poppler की markAnnotations --> markPageObjects --> markObject --> markDictionary पुनरावृत्ति कभी भी लूप का पता नहीं लगा पाती और इस प्रकार कॉल स्टैक समाप्त हो जाता है (अनंत पुनरावृत्ति)। शोषण के लिए केवल PDF को खोलना या प्रोसेस करना आवश्यक है (जैसे, pdfseparate के माध्यम से)।
पुनरुत्पादन प्रक्रिया इस प्रकार है:```bash afl_env(base) user@ubuntu:~/zgd/AFLProject/pdf_parsers/poppler-25.04.0/build/utils$ ./pdfseparate ./../../../../pdf_fuzz/p oppler-master/pdfseparate/analyze_crashes/only_custom/all_crashes/poppler-pdfseparate-poc /dev/null Segmentation fault (core dumped)
afl_env(base) user@ubuntu:/zgd/AFLProject/pdf_parsers/poppler-25.04.0/build/utils$ gdb ./pdfseparate core.2332378
GNU gdb (Ubuntu 12.1-0ubuntu122.04.2) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
https://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.