
POC für CVE-2026-24688
Dieses Repository enthält Proof-of-Concept-Code zum Auslösen von CVE-2026-24688.
Kritische Denial-of-Service-Schwachstelle in der Gliederungslogik (Lesezeichen) von pypdf. Beim Verarbeiten einer PDF mit zirkulären Gliederungsreferenzen gerät der Parser in eine Endlosschleife, die kontinuierlich Speicher allokiert, auf meinem Rechner (TM) hunderte MB pro Sekunde verbraucht und zum vollständigen Systemabsturz führt.
Hierbei handelt es sich um einen systemweiten DoS, nicht nur um ein Einfrieren der Anwendung.
malicious_circular_outline.pdf – Exploit-PDF mit zirkulärer Gliederung (754 Bytes)create_malicious_pdf.py – Skript zum Erzeugen der Exploit-PDFsimple_read_pdf.py – Einfaches Testskript zum Reproduzieren der Schwachstelletest_pypdf.sh – Automatisiertes Testskript (installiert pypdf und führt Test aus)README.md – Diese DateiWARNUNG: Diese Tests können Ihr System zum Absturz bringen, wenn Sie nicht die Speichernutzung im Auge behalten und rechtzeitig abbrechen.
# Führe das automatisierte Testskript aus (mit Timeout-Schutz)
chmod +x test_pypdf.sh
./test_pypdf.sh
# Dabei wird:
# 1. Die anfällige Version von pypdf installiert
# 2. Der Test mit einem 15-Sekunden-Timeout ausgeführt
# 3. Das Verhalten der Speichernutzung angezeigt
# Installiere pypdf (anfällige Version 6.6.0)
pip install "pypdf==6.6.0"
# Mit Timeout ausführen
timeout 10s python3 simple_read_pdf.py malicious_circular_outline.pdf
# Installiere pypdf (anfällige Version 6.6.0)
pip install "pypdf==6.6.0"
# Ohne Timeout ausführen
python3 simple_read_pdf.py malicious_circular_outline.pdf
Ort: pypdf/_doc_common.py - _get_outline()-Methode (Zeilen 858-873)
def _get_outline(self, node, outline=None):
while True: # ❌ KEINE Zyklenerkennung!
outline_obj = self._build_outline_item(node)
if outline_obj:
outline.append(outline_obj) # ❌ Heap-Allokation in der Schleife!
if "/Next" not in node:
break
node = node["/Next"] # ❌ Folgt zirkulären Referenzen
Grundursache: Kein Besuchs-Set, keine Iterationsbegrenzung, kontinuierliche Speicherallokation
Test unter realen Bedingungen:
Angriffscharakteristiken:
Behoben in Version 6.6.2
https://github.com/py-pdf/pypdf/security/advisories/GHSA-2q4j-m29v-hq73