CVE-2022-24196 Overview
CVE-2022-24196 is a Denial of Service (DoS) vulnerability affecting iText v7, a popular Java library used for creating and manipulating PDF documents. The vulnerability exists in the readStreamBytesRaw component, which fails to properly handle resource allocation when processing maliciously crafted PDF files. An attacker can exploit this flaw by supplying a specially crafted PDF document that triggers excessive memory consumption, leading to an out-of-memory condition and application crash.
Critical Impact
Applications using vulnerable versions of iText v7 can be crashed through memory exhaustion when processing malicious PDF files, potentially disrupting document processing services and workflows that depend on PDF manipulation.
Affected Products
- iText v7.1.17
- iText versions prior to 7.1.18
- iText versions prior to 7.2.2
Discovery Timeline
- 2022-02-01 - CVE-2022-24196 published to NVD
- 2024-11-21 - Last updated in NVD database
Technical Details for CVE-2022-24196
Vulnerability Analysis
This vulnerability is classified under CWE-770 (Allocation of Resources Without Limits or Throttling). The core issue lies in how the iText library processes PDF stream data through the readStreamBytesRaw function. When parsing PDF documents, this component reads raw stream bytes without implementing adequate bounds checking or memory allocation limits.
The vulnerability allows remote attackers to cause a denial of service condition by crafting a PDF file that forces the library to attempt allocating an excessive amount of memory. This resource exhaustion attack is particularly dangerous in server-side applications that automatically process user-uploaded PDF documents, as a single malicious file can bring down the entire service.
The attack requires user interaction in the form of opening or processing the malicious PDF file, but once triggered, the application will exhaust available memory resources and crash.
Root Cause
The root cause of CVE-2022-24196 is improper resource management in the PDF stream parsing logic. The readStreamBytesRaw component does not enforce appropriate limits on memory allocation when reading stream data from PDF files. When presented with a crafted PDF containing malformed or excessively large stream declarations, the library attempts to allocate memory based on untrusted input values without validation, leading to memory exhaustion.
This represents a classic case of CWE-770, where the software allocates resources based on attacker-controlled input without implementing protective thresholds or limits.
Attack Vector
The attack is network-accessible and requires an attacker to deliver a maliciously crafted PDF file to a target system running vulnerable iText versions. Attack scenarios include:
The attacker crafts a PDF file with malformed stream definitions designed to trigger excessive memory allocation in the readStreamBytesRaw function. When the victim application processes this PDF—whether through user upload, email attachment processing, or automated document workflows—the vulnerable component attempts to allocate unreasonable amounts of memory based on values embedded in the malicious PDF structure.
Since the vulnerability requires user interaction (the PDF must be processed by the application), exploitation typically occurs through social engineering, file upload functionality, or automated document processing pipelines. For detailed technical information about the fix, refer to GitHub Pull Request #78.
Detection Methods for CVE-2022-24196
Indicators of Compromise
- Unexpected application crashes or out-of-memory errors during PDF processing operations
- Java heap space exhaustion logs coinciding with PDF file handling activities
- Abnormal memory consumption spikes when processing incoming PDF documents
- Application logs showing OutOfMemoryError exceptions in stack traces involving iText components
Detection Strategies
- Monitor Java Virtual Machine (JVM) memory metrics for sudden spikes during PDF processing operations
- Implement file integrity monitoring to identify potentially malicious PDF files before processing
- Configure application-level logging to capture detailed stack traces when memory errors occur in PDF handling components
- Deploy endpoint detection solutions to identify known malicious PDF patterns targeting iText vulnerabilities
Monitoring Recommendations
- Set up alerts for memory usage thresholds on systems running iText-based PDF processing
- Monitor for repeated crash events in document processing services that could indicate exploitation attempts
- Implement file scanning for uploaded PDFs to detect malformed stream structures
- Review application logs for readStreamBytesRaw related errors or exceptions
How to Mitigate CVE-2022-24196
Immediate Actions Required
- Upgrade iText to version 7.1.18 or 7.2.2 or later immediately
- Audit all applications using iText v7 to identify vulnerable deployments
- Implement input validation and file size limits for PDF uploads before processing
- Consider temporarily disabling PDF upload functionality if immediate patching is not possible
Patch Information
iText has released patched versions that address this vulnerability. Organizations should upgrade to iText version 7.1.18 or version 7.2.2 or later. The fix implements proper bounds checking and memory allocation limits in the stream processing components to prevent resource exhaustion attacks.
For patch details and release notes, see the GitHub Release v7.1.18 and the vendor advisory.
Workarounds
- Implement file size limits for PDF documents before they reach iText processing
- Configure JVM memory limits to prevent complete system exhaustion from a single process
- Deploy PDF files through a sandboxed preprocessing stage that can detect and reject malformed documents
- Use application-level timeouts for PDF processing operations to interrupt long-running memory allocation attempts
# Example JVM memory configuration to limit impact
# Set maximum heap size to prevent total system memory exhaustion
java -Xmx512m -Xms256m -jar your-pdf-application.jar
# Configure garbage collection logging to monitor memory issues
java -Xmx512m -Xlog:gc*:file=gc.log -jar your-pdf-application.jar
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


