CVE-2026-25940 jsPDF PoC
Ein Proof-of-Concept für CVE-2026-25940, der demonstriert, wie speziell präparierte AcroForm-Optionsfeld-Darstellungen eingebettetes JavaScript in anfälligen PDF-Viewern (z. B. Foxit) auslösen können. Das Repository enthält einen Node-basierten Generator und eine Browser-Viewer-Umgebung, um verschiedene Parsing-Pfade zu testen.
⚠️ Nur in isolierten, nicht-produktiven Umgebungen verwenden. Die Beispiel-Payloads führen absichtlich JavaScript aus und können Netzwerkanfragen oder externe Programme aufrufen. Öffnen Sie das generierte PDF nicht mit unvertrauenswürdigen Viewern auf einem Host, der Ihnen wichtig ist.
Repository-Inhalt
- poc.js: Erzeugt ein bösartiges PDF mit mehreren Optionsfeld-Optionen und unterschiedlichen Darstellungs-Streams, um verschiedene Verhaltensweisen aufzuzeigen.
- viewer.html: Minimale Viewer-Umgebung, um den PoC im Browser zu erzeugen oder eine vorhandene Beispiel-Datei zu laden und sie sowohl nativ (iframe) als auch über PDF.js darzustellen.
- package.json: Deklariert die jsPDF-Abhängigkeit für den Node-PoC.
Voraussetzungen
Einrichtung
- Abhängigkeiten installieren:
npm install
- (Optional) Den Viewer lokal bereitstellen, um ein saubereres Laden der HTML/JS-Dateien zu ermöglichen:
npx http-server .
# dann http://localhost:8080/viewer.html öffnen
PoC-PDF über Node generieren
- Den Generator ausführen:
node poc.js
- Das Skript schreibt
test.pdf in das Projektverzeichnis. Öffnen Sie es mit Ihrem Ziel-PDF-Viewer, um das Verhalten zu beobachten. Halten Sie die Netzwerkverbindung blockiert, wenn Sie ausgehende Anfragen vermeiden möchten.
Browserbasierter Viewer-Workflow
- Öffnen Sie viewer.html direkt in einem Browser oder über einen lokalen Server.
- Klicken Sie auf PoC-PDF generieren, um das bösartige Dokument im Browser zu erstellen und es sowohl in den iframe (nativer/Browser-Handler) als auch in die PDF.js-Canvas zu laden.
- Alternativ wählen Sie Datei laden und wählen Sie ein PDF aus, das Sie mit dem Node-Skript generiert haben.
- Beobachten Sie die Konsolen-/Netzwerkaktivität als Nachweis für die JavaScript-Ausführung; einige Viewer unterdrücken möglicherweise Warnmeldungen, führen eingebettete Aktionen aber dennoch aus.
Hinweise
- Die Payloads sind auf das Foxit-Verhalten abgestimmt; andere Viewer können sie teilweise entschärfen oder blockieren.
- Wenn Sie die Payload anpassen, halten Sie die Größen ähnlich, um Änderungen an Objekt-Offsets zu vermeiden, auf die einige Exploit-Ketten angewiesen sind.
- Testen Sie immer in einer VM oder Sandbox mit eingeschränktem Netzwerkzugang.