Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2018-14442 — PoC für Foxit Reader CVE-2018-14442 | Kitploit
Tools/GitHubGitHub/payatu/cve-2018-14442
Exploit-FrameworksSchwachstellenanalyseExploitationReverse EngineeringFuzzingBinary-Exploitation
GitHubpayatu/cve-2018-14442

CVE-2018-14442

PoC für Foxit Reader CVE-2018-14442

Repository anzeigen
5817vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Foxit Reader CPDF_Parser::m_pCryptoHandler Use After Free

  1. Hintergrund zum PDF-Format
  2. Verschlüsselungswörterbücher
  3. Details zur Schwachstelle
  4. ASLR- und DEP-Bypass
  5. Details zur Umgebung
  6. Auslöser
  7. Autor

Hintergrund zum PDF-Format

PDF ist ein Dateiformat zur Darstellung von Dokumenten. Eine PDF-Datei besteht aus mehreren Datenobjekten

  • Einfache primitive Objekte Integer, Number, Boolean, Null

  • Komplexe Objekte

    FormatName
    [.*]Array
    (.*)String
    <<.*>>Dictionary
    <.*>Hex String
    /.*Name
    stream.*endstreamStream

Diese Objekte definieren, wie ein PDF aussieht und was es enthält. Strukturen in einem PDF kommen in 2 Arten von Objekten vor - direkte und indirekte. Ein indirektes Objekt beginnt mit einer Objektnummer und einer Generationsnummer, gefolgt vom eigentlichen Objekt. Indirekte Objekte können in anderen Objekten direkt als n m R referenziert werden, wobei n und m die jeweilige Objekt- bzw. Generationsnummer sind. Wörterbuchobjekte sind die grundlegenden Bausteine des Dokuments. Es gibt einige allgemeine Wörterbuchobjekte, die benötigt werden, um eine Seite oder das Dokument selbst zu bilden. Am wichtigsten ist das Root-Wörterbuch, das Verknüpfungen zu allen anderen Pages, Metadata, Names usw. definiert, von denen jedes ein anderes Objekt sein kann. Streamobjekte enthalten die meisten Binärdaten, wie Schriftarten, Bilder oder komprimierte bzw. verschlüsselte Daten.

Verschlüsselungswörterbücher

Ein PDF-Dokument kann verschlüsselt werden, um seinen Inhalt vor unbefugtem Zugriff zu schützen. Die Verschlüsselung gilt für alle Zeichenketten und Streams in der PDF-Datei des Dokuments, mit einigen Ausnahmen wie dem Encrypt-Wörterbuch selbst. Die Verschlüsselung betrifft hauptsächlich Streamobjekte. Sie wird nicht auf andere Objekttypen wie Ganzzahlen und boolesche Werte angewendet, die in erster Linie dazu dienen, Informationen über die Struktur des Dokuments zu vermitteln, anstatt über dessen Inhalt. Verschlüsselungsbezogene Informationen sollen im Verschlüsselungswörterbuch des Dokuments gespeichert werden, das den Wert des Eintrags "Encrypt" im Trailer-Wörterbuch des Dokuments darstellt.

Details zur Schwachstelle

CPDF_Parser::StartParse setzt m_pCryptoHandler für indirekte Objekte einer PDF-Datei, die verschlüsselt sind. m_pCryptoHandler sollte auf null gesetzt werden, wenn CPDF_Parser::ReleaseEncryptHandler abgeschlossen ist. Stattdessen entfernt CPDF_Parser::ReleaseEncryptHandler den Verweis auf den CryptoHandler in CPDF_Parser nicht, sodass dieser verwaist zurückbleibt. Wenn der Parser später die Objekte parst, auf die im Root-Wörterbuch verwiesen wird, wird m_pCryptoHandler+8 aufgerufen, um die Daten zu entschlüsseln. Ein ähnlicher Fehler wurde in pdfium im Commit 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8 behoben. Siehe https://bugs.chromium.org/p/chromium/issues/detail?id=726503

ASLR- und DEP-Bypass

PDFs erlauben das Einbetten von JS in das Dokument, das automatisch ausgeführt werden kann, wenn es im OpenAction-Eintrag eines Wörterbuchs vom Typ Catalog eingetragen ist. Sobald wir JS-Ausführung haben, können wir Objekte im Prozessadressraum verteilen (Heap-Spraying), um eine vorhersagbare Adresse zu erreichen, an der wir unsere ROP-Kette schreiben. Wenn ein PDF-Dokument in Foxit Reader signiert wird, verwendet es plugins\jrsys\x86\jrsysMSCryptoDll.dll aus dem Installationsverzeichnis, um die signierten Informationen zu lesen. Dadurch wird jrsysCryptoDll.dll an der statischen Adresse 0x10000000 geladen. Diese DLL importiert VirtualAlloc, was die Ausführung des Payloads erleichtert. Der beigefügte Exploit nutzt Heap-Spraying, um ein vorhersagbares Speicherlayout zu erreichen, und verwendet eine ROP-Kette, um eine RWX-Seite zu allokieren, den Payload zu kopieren und auszuführen.

Details zur Umgebung

Dieser Exploit wurde mit Foxit Reader 9.0.1.1049 x86 unter MS Windows 7 Enterprise Build 7601 SP1 x86 getestet. Der Exploit erfordert, dass sich der Heap in einem bestimmten Zustand befindet. Falls der Exploit fehlschlägt, versuchen Sie es bitte erneut. Bitte beachten Sie die Videodemo. Diese Schwachstelle ist ebenfalls in Foxit PDF Reader und Converter für Android vorhanden.

Auslöser

bitcoins.pdf ist das präparierte PDF, das die Neuallokation des freigegebenen Speichers durchführt und den Kernfehler auslöst. Wenn Sie den Absturz im Debugger reproduzieren möchten, aktivieren Sie bitte Page Heaps für FoxitReader.exe und öffnen Sie bitcoins.pdf.

Demo

Demo-Video

Autor

Dieser Absturz wurde von Cloudfuzz gefunden - einer Fuzzing-Plattform, die bei Payatu entwickelt wurde. Die weitere Analyse und Ausnutzung wurden von Sudhakar durchgeführt.

Tool herunterladen