
Replicated using afl fuzzer instrumentation! Shoutz to antonio-morales.
CVE-2019-13288 is a vulnerability identified in Xpdf version 4.01.01, specifically within the Parser::getObj() function in Parser.cc. This flaw can lead to infinite recursion when processing a specially crafted PDF file, resulting in a Denial of Service (DoS) condition. The vulnerability is akin to CVE-2018-16646 and underscores the importance of robust input validation in recursive functions.
CVE ID: CVE-2019-13288
Affected Software: Xpdf 4.01.01
Vulnerability Type: Uncontrolled Recursion (CWE-674)
Impact: Denial of Service (DoS)
CVSS v3.0 Base Score: 5.5 (Medium)
Parser::getObj()The Parser::getObj() function is responsible for parsing objects within a PDF file. In Xpdf 4.01.01, this function lacks adequate checks to prevent infinite recursion. An attacker can craft a PDF file with a malicious object structure that causes getObj() to call itself recursively without termination, leading to stack exhaustion and application crash.
An attacker crafts a malicious PDF file with a specific object structure designed to trigger infinite recursion in the Parser::getObj() function. When this file is processed by Xpdf or any application utilizing its library, the application enters an endless recursive loop, consuming system resources and eventually crashing.
A proof-of-concept (PoC) PDF file demonstrating this vulnerability is available below in this repo.
For step by step to see how it was replicated see below:
Note: This PoC is intended for educational and research purposes only. Unauthorized use against systems without explicit permission is unethical and may be illegal. Dont be bad!
This analysis was inspired by the methodologies presented in Antonio Morales' Fuzzing101 guide. The vulnerability was initially identified through fuzzing techniques, highlighting the effectiveness of such approaches in uncovering hidden software flaws.
This information is provided for educational and research purposes only. The author is not responsible for any misuse of the information contained herein. Always ensure you have proper authorization before testing or exploiting vulnerabilities on any system.