
Prova de conceito para CVE-2026-24688
Este repositório inclui código de prova de conceito para acionar a CVE-2026-24688.
Vulnerabilidade crítica de negação de serviço na lógica de análise do contorno (marcadores) do pypdf. Ao processar um PDF com referências circulares de contorno, o analisador entra em um loop infinito que aloca memória continuamente, consumindo centenas de MBs de memória por segundo, na minha máquina (TM), e leva a uma falha completa do sistema.
Esta é uma DoS a nível de sistema, não apenas um travamento de aplicação.
malicious_circular_outline.pdf - PDF de exploit com contorno circular (754 bytes)create_malicious_pdf.py - Script para gerar o PDF de exploitsimple_read_pdf.py - Script de teste simples para reproduzir a vulnerabilidadetest_pypdf.sh - Script de teste automatizado (instala o pypdf e executa o teste)README.md - Este arquivoAVISO: Esses testes podem travar o seu sistema se você não ficar de olho no consumo de memória e cancelá-los a tempo.
# Run the automated test script (with timeout protection)
chmod +x test_pypdf.sh
./test_pypdf.sh
# This will:
# 1. Install the vulnerable version of pypdf
# 2. Run test with 15-second timeout
# 3. Show memory consumption behavior
# Install pypdf (vulnerable version 6.6.0)
pip install "pypdf==6.6.0"
# Run with timeout
timeout 10s python3 simple_read_pdf.py malicious_circular_outline.pdf
# Install pypdf (vulnerable version 6.6.0)
pip install "pypdf==6.6.0"
# Run without timeout
python3 simple_read_pdf.py malicious_circular_outline.pdf
def _get_outline(self, node, outline=None):
while True: # ❌ NO cycle detection!
outline_obj = self._build_outline_item(node)
if outline_obj:
outline.append(outline_obj) # ❌ Heap allocation in loop!
if "/Next" not in node:
break
node = node["/Next"] # ❌ Follows circular references
Causa Raiz: Sem conjunto de visitados, sem limite de iteração, alocação contínua de memória
Teste em Condições Reais:
Características do Ataque:
Corrigido na versão 6.6.2