
Proof-of-Concept-Exploit für CVE-2025-50420, der unendliche Rekursion in Popplers pdfseparate über manipulierte /Annots-Wörterbücher demonstriert und einen Denial-of-Service verursacht. Enthält AFL-Fuzzing-Setup und GDB-Absturzanalyse.
Vor Poppler Version 25.07.0 enthält das Dienstprogramm pdfseparate eine Schwachstelle in der PDFDoc-Verarbeitungslogik: manipulierte „/Annots“-Wörterbücher, die auf sich selbst oder gegenseitig referenzieren, führen zu einer Endlosrekursion in „PDFDoc::markAnnotations --> PDFDoc::markPageObjects --> PDFDoc::markObject --> PDFDoc::markDictionary“, da die Schleifenerkennung Wörterbuchzeigeradressen verwendet, die sich bei jedem fetch() unterscheiden. Ein entfernter Angreifer kann durch Verarbeiten einer bösartigen PDF eine Denial-of-Service-Situation (Hängen oder Absturz der Anwendung) verursachen.
Hier erstelle ich eine bösartige PDF (poppler-pdfseparate-poc), bei der „/Annots“ auf ein selbstreferenzierendes oder gegenseitig referenzierendes Wörterbuch aufgelöst wird, wodurch die Rekursion markAnnotations --> markPageObjects --> markObject --> markDictionary von Poppler die Schleife nie erkennt und so den Aufrufstapel erschöpft (Endlosrekursion). Für die Ausnutzung ist nur das Öffnen oder Verarbeiten der PDF erforderlich (z. B. über pdfseparate).
Der Reproduktionsvorgang ist wie folgt:```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/.