CVE-2026-40260 Overview
CVE-2026-40260 is a Denial of Service vulnerability affecting pypdf, a free and open-source pure-python PDF library. In versions prior to 6.10.0, manipulated XMP metadata entity declarations can exhaust system RAM. An attacker who exploits this vulnerability can craft a malicious PDF which leads to large memory usage when the XMP metadata is parsed by the library.
Critical Impact
Attackers can cause memory exhaustion and denial of service conditions by crafting malicious PDF files with manipulated XMP metadata entity declarations.
Affected Products
- pypdf versions prior to 6.10.0
- Applications using pypdf for PDF parsing with XMP metadata processing
- Python environments processing untrusted PDF files through pypdf
Discovery Timeline
- 2026-04-17 - CVE CVE-2026-40260 published to NVD
- 2026-04-22 - Last updated in NVD database
Technical Details for CVE-2026-40260
Vulnerability Analysis
This vulnerability is classified as CWE-776 (Improper Restriction of Recursive Entity References in DTDs), commonly known as an XML Entity Expansion attack or "Billion Laughs" attack variant. The pypdf library fails to properly restrict recursive entity references when parsing XMP (Extensible Metadata Platform) metadata embedded within PDF documents.
XMP metadata is an XML-based standard used to embed metadata within PDF files. When pypdf parses this metadata, it processes XML entity declarations without adequate limits on entity expansion. An attacker can craft a PDF containing XMP metadata with deeply nested or recursive entity declarations that, when expanded, consume exponential amounts of memory.
The vulnerability requires the victim application to parse XMP metadata from an attacker-controlled PDF file. This is a common operation in document processing workflows, making the attack surface relatively broad for applications that handle untrusted PDF uploads or process PDFs from external sources.
Root Cause
The root cause lies in pypdf's XMP metadata parsing implementation, which did not implement proper safeguards against recursive entity expansion in XML declarations. When processing XMP metadata, the XML parser would expand entity references without limiting the depth or total expansion size, allowing maliciously crafted entity declarations to trigger exponential memory allocation.
Attack Vector
The attack vector is network-based, requiring no privileges or user interaction beyond having the target application process a malicious PDF file. An attacker would craft a PDF document containing specially designed XMP metadata with recursive or nested entity declarations.
When the vulnerable pypdf library processes this PDF and attempts to parse the XMP metadata, the entity expansion occurs, causing rapid memory consumption. This can lead to application crashes, system instability, or denial of service conditions depending on the deployment environment and available system resources.
The vulnerability is exploited through XML entity expansion techniques within the XMP metadata section of a PDF. The malicious PDF would contain nested entity declarations that reference each other, causing exponential growth when parsed. For technical details on the vulnerability mechanism and fix implementation, see the GitHub Security Advisory and related pull request.
Detection Methods for CVE-2026-40260
Indicators of Compromise
- Unusual memory consumption spikes when processing PDF files
- Application crashes or out-of-memory errors during PDF parsing operations
- PDF files with abnormally large or complex XMP metadata sections
- Presence of recursive entity declarations in PDF metadata streams
Detection Strategies
- Monitor application memory usage patterns when processing PDF files for sudden, unexplained increases
- Implement file analysis to detect PDF documents with suspicious XMP metadata containing nested entity declarations
- Review application logs for memory allocation failures or out-of-memory exceptions during PDF operations
- Scan inbound PDF files for known malicious entity expansion patterns before processing
Monitoring Recommendations
- Configure memory usage alerts for services that process PDF files using pypdf
- Implement resource limits and timeouts for PDF parsing operations
- Log and analyze failed PDF processing attempts to identify potential attack patterns
- Monitor for unusual file sizes in XMP metadata streams within uploaded PDF documents
How to Mitigate CVE-2026-40260
Immediate Actions Required
- Upgrade pypdf to version 6.10.0 or later immediately
- Audit applications to identify all instances where pypdf is used for PDF processing
- Implement input validation to reject PDF files from untrusted sources until patching is complete
- Consider implementing memory limits for PDF processing operations as a defense-in-depth measure
Patch Information
The vulnerability has been fixed in pypdf version 6.10.0. The fix is available through the GitHub release and can be installed via pip. The specific fix was implemented in commit b15a374e5ca648d4878e57c3b2c0551e7f8cc7f8, which introduces proper restrictions on entity expansion during XMP metadata parsing.
Workarounds
- Avoid processing XMP metadata from untrusted PDF files until the patch can be applied
- Implement resource limits (memory and CPU) at the container or process level for PDF processing services
- Pre-filter PDF files to strip or sanitize XMP metadata before pypdf processing
- Use sandboxed environments for processing untrusted PDF documents
# Upgrade pypdf to the patched version
pip install --upgrade pypdf>=6.10.0
# Verify installed version
pip show pypdf | grep Version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

