pypdf: Long runtimes and denial of service via malformed FlateDecode streams
Summary
pypdf, a pure-Python PDF library, can be forced into inefficient byte-by-byte decompression of a crafted PDF with a partially malformed /FlateDecode stream. The recovery counter does not advance for bytes that decode successfully, which leads to very long runtimes. An attacker who can submit PDF files to an application that parses them with pypdf can make it unavailable; no authentication or user interaction is required. This is a residual issue after an earlier fix for malformed FlateDecode recovery.
Affected
- pypdf versions before 6.18.1
Fixed in
- pypdf 6.18.1 (fix in commit d9d38cf and PR #4073)
Workaround
- If an upgrade is not possible yet, apply the changes from PR #4073 (vendor suggestion).
- Enforce a timeout on PDF processing jobs as a temporary stopgap (not verified by the vendor).
Exploitation
- No evidence of exploitation in the wild found.
- CISA SSVC: Exploitation none, Automatable no, Technical Impact partial.
- No public exploit code found in the sources reviewed.
Our recommendation
- Identify all applications, containers and locked dependency files that use pypdf.
- Upgrade pypdf to 6.18.1 or later, and rebuild and redeploy affected containers and applications.
- Prioritise internet-facing or upload-enabled services that parse untrusted PDFs.
- Check whether distribution packages still ship older versions, as they may lag behind.
- Monitor for high CPU usage or unresponsive PDF processing jobs.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-jw7q-gvrg-4vj3 github.com
- Fix commit d9d38cf github.com
- Pull request #4073 github.com
- pypdf release 6.18.1 github.com
- OSV GHSA-jw7q-gvrg-4vj3 osv.dev
- Ubuntu CVE-2026-102997 ubuntu.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 06:25.
Original description (NVD)
pypdf is a free and open-source pure-python PDF library. Prior to 6.18.1, a crafted PDF containing a partially malformed /FlateDecode stream with padded data can force pypdf/filters.py to use inefficient byte-by-byte decompression while the earlier recovery counter fails to advance for bytes that successfully decode, causing long runtimes and application unavailability. This is a residual issue after the malformed FlateDecode recovery fix. This issue is fixed in version 6.18.1.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
