
POC per CVE-2026-24688
Questo repository include il codice proof of concept per attivare CVE-2026-24688.
Vulnerabilità critica di Denial of Service nella logica di parsing dell'outline (segnalibri) di pypdf. Quando elabora un PDF con riferimenti circolari nell'outline, il parser entra in un ciclo infinito che alloca continuamente memoria, consumando centinaia di MB al secondo, sulla mia macchina (TM), e porta al crash completo del sistema.
Questo è un DoS a livello di sistema, non solo un blocco dell'applicazione.
malicious_circular_outline.pdf - PDF exploit con outline circolare (754 byte)create_malicious_pdf.py - Script per generare il PDF exploitsimple_read_pdf.py - Semplice script di test per riprodurre la vulnerabilitàtest_pypdf.sh - Script di test automatizzato (installa pypdf ed esegue il test)README.md - Questo fileATTENZIONE: Questi test potrebbero mandare in crash il sistema se non si tiene d'occhio il consumo di memoria e non si annulla in 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 principale: Nessun insieme di nodi visitati, nessun limite di iterazione, allocazione continua di memoria
Test nel mondo reale:
Caratteristiche dell'attacco:
Corretto nella versione 6.6.2