
Repliziert mithilfe der afl-Fuzzer-Instrumentierung! Shoutout an antonio-morales.
CVE-2019-13288 ist eine Schwachstelle in Xpdf Version 4.01.01, genauer gesagt in der Funktion Parser::getObj() in Parser.cc. Dieser Fehler kann bei der Verarbeitung einer speziell präparierten PDF-Datei zu unendlicher Rekursion führen, was einen Denial of Service (DoS)-Zustand zur Folge hat. Die Schwachstelle ähnelt CVE-2018-16646 und unterstreicht die Bedeutung einer robusten Eingabevalidierung in rekursiven Funktionen.
CVE-ID: CVE-2019-13288
Betroffene Software: Xpdf 4.01.01
Schwachstellentyp: Unkontrollierte Rekursion (CWE-674)
Auswirkung: Denial of Service (DoS)
CVSS v3.0-Basiswert: 5.5 (Mittel)
Parser::getObj()Die Funktion Parser::getObj() ist für das Parsen von Objekten in einer PDF-Datei verantwortlich. In Xpdf 4.01.01 fehlen dieser Funktion ausreichende Prüfungen, um eine unendliche Rekursion zu verhindern. Ein Angreifer kann eine PDF-Datei mit einer bösartigen Objektstruktur erstellen, die dazu führt, dass getObj() sich ohne Terminierung rekursiv selbst aufruft, was zu Stack-Erschöpfung und zum Absturz der Anwendung führt.
Ein Angreifer erstellt eine bösartige PDF-Datei mit einer spezifischen Objektstruktur, die darauf ausgelegt ist, eine unendliche Rekursion in der Funktion Parser::getObj() auszulösen. Wenn diese Datei von Xpdf oder einer Anwendung verarbeitet wird, die dessen Bibliothek verwendet, gerät die Anwendung in eine endlose rekursive Schleife, verbraucht Systemressourcen und stürzt schließlich ab.
Eine Proof-of-Concept-Datei (PoC) als PDF, die diese Schwachstelle demonstriert, ist weiter unten in diesem Repository verfügbar.
Eine Schritt-für-Schritt-Anleitung, wie es reproduziert wurde, findest du unten:
Hinweis: Dieser PoC dient ausschließlich Bildungs- und Forschungszwecken. Die unbefugte Verwendung gegen Systeme ohne ausdrückliche Genehmigung ist unethisch und möglicherweise illegal. Sei nicht böse!
Diese Analyse wurde durch die Methoden aus Antonio Morales' Fuzzing101-Leitfaden inspiriert. Die Schwachstelle wurde ursprünglich durch Fuzzing-Techniken identifiziert, was die Wirksamkeit solcher Ansätze bei der Aufdeckung verborgener Softwarefehler unterstreicht.
Diese Informationen dienen ausschließlich Bildungs- und Forschungszwecken. Der Autor ist nicht verantwortlich für jeglichen Missbrauch der hierin enthaltenen Informationen. Stelle stets sicher, dass du die entsprechende Genehmigung hast, bevor du Schwachstellen an einem System testest oder ausnutzt.