
Exploit de prova de conceito para o CVE-2025-50420 demonstrando recursão infinita no pdfseparate do Poppler através de dicionários /Annots manipulados, causando negação de serviço. Inclui configuração de fuzzing com AFL e análise de crash com GDB.
Poppler antes da versão 25.07.0 contém uma vulnerabilidade na lógica de processamento PDFDoc de sua utilidade pdfseparate: dicionários "/Annots" manipulados que referenciam a si mesmos ou entre si levam a recursão infinita em "PDFDoc::markAnnotations --> PDFDoc::markPageObjects --> PDFDoc::markObject --> PDFDoc::markDictionary", porque a detecção de loop usa endereços de ponteiro do dicionário que diferem em cada fetch(). Um atacante remoto pode causar uma negação de serviço (travamento da aplicação ou falha) ao processar um PDF malicioso.
Aqui eu crio um PDF malicioso (poppler-pdfseparate-poc) onde "/Annots" resolve para um dicionário autorreferenciador ou mutuamente referenciador, fazendo com que a recursão markAnnotations --> markPageObjects --> markObject --> markDictionary do Poppler nunca detecte o loop e assim esgote a pilha de chamadas (recursão infinita). A exploração requer apenas abrir ou processar o PDF (por exemplo, via pdfseparate).
O processo de reprodução é o seguinte:```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/.