CVE-2026-27026
Medium · 5.5CVSS
5.5
EPSS
0.2%
Published
Feb 20, 2026
CISA due date
—
Cloudanix analysis
A specially made PDF can cause software that processes documents to slow down or stop responding until the affected library is updated.
- Exploitation
- Requires User Interaction
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
In pypdf versions prior to 6.7.1, malformed PDF content using a /FlateDecode stream can trigger inefficient byte-by-byte decompression behavior, causing PDF parsing or extraction operations to run for an excessively long time. The flaw affects availability rather than confidentiality or integrity: a process that parses attacker-supplied PDFs may consume CPU time, tie up worker threads, delay queues, or hit application timeouts. The upstream fix is included in pypdf 6.7.1 and the related Git fix commit ad2a45d769d56038af8747195cae097bbdb68eee.
Why it matters to the business
Systems that accept or process untrusted PDFs may become slow or unavailable if a malicious or malformed PDF is submitted. This can disrupt document ingestion, upload workflows, background processing, customer-facing portals, case management, e-signature, archiving, or OCR/document-conversion pipelines. The vulnerability is not listed in CISA KEV, has low EPSS, and has no known mature public exploitation based on the provided data, so urgency is highest for internet-facing or automated PDF-processing services and lower for isolated internal tooling.
How an attack unfolds
An attacker creates a specially malformed PDF containing a problematic /FlateDecode stream. They then deliver it to a workflow that uses a vulnerable pypdf version, such as a file upload endpoint, email/document ingestion pipeline, document preview service, metadata extraction job, or batch processor. When the application parses the PDF, pypdf enters an inefficient decompression path and spends excessive time processing the stream. Repeated submissions or automated retries can amplify the impact by exhausting worker capacity, increasing queue depth, consuming CPU, and causing application timeouts or service degradation.
How to fix it
Upgrade pypdf to version 6.7.1 or later wherever it is used. For source-based deployments, ensure the code includes upstream fix commit ad2a45d769d56038af8747195cae097bbdb68eee. Rebuild and redeploy containers, serverless packages, virtual environments, and application bundles that vendor or pin pypdf. If immediate upgrade is not possible, reduce exposure by applying strict PDF processing timeouts, CPU limits, worker isolation, file size limits, queue rate limits, retry limits, and sandboxing for document parsing. Treat PDFs from external users, email, shared drives, and partner integrations as untrusted input.
How to confirm the fix worked
Confirm that all runtime environments use pypdf 6.7.1 or later, not only development lockfiles. Check package manifests, lockfiles, container images, virtual environments, and deployed artifacts using commands such as `python -c "import importlib.metadata; print(importlib.metadata.version('pypdf'))"`, `pip show pypdf`, `pip freeze | grep -i '^pypdf=='`, and software composition analysis tooling. Validate that applications processing PDFs enforce execution timeouts and resource limits. In staging, test representative malformed or corrupted PDFs and confirm that parsing fails fast, times out safely, or is isolated without degrading the service. Review SBOM and dependency scan results to ensure no transitive or vendored copy of pypdf remains below 6.7.1.
Typical attack path
- Identify an application or workflow that accepts PDF files and processes them with pypdf.
- Create or obtain a malformed PDF containing a /FlateDecode stream that triggers long decompression runtimes in vulnerable pypdf versions.
- Submit the PDF through an upload form, API, email ingestion channel, shared storage workflow, or batch processing path.
- Wait for the backend parser or worker to process the PDF and consume excessive CPU time or execution time.
- Repeat submissions or target high-volume workflows to increase queue backlog, worker exhaustion, and user-visible service disruption.
How to detect it
Review logs and telemetry from systems that accept or process PDFs, including web upload logs, API gateway logs, email ingestion logs, document-processing worker logs, job queue metrics, APM traces, container/runtime CPU metrics, and timeout/error logs. Look for unusually long PDF parsing durations, repeated worker timeouts, queue backlogs, high CPU in Python processes, repeated submissions of the same or similar PDF files, and errors or stack traces involving pypdf decompression filters. Investigate PDF samples associated with long-running jobs for malformed /FlateDecode streams. Correlate suspicious events by source IP, user account, upload route, file hash, object storage key, job ID, and worker hostname. There are no known public exploitation campaigns, named threat actors, or unique malware indicators from the provided data, so detection should focus on behavioral signs of denial-of-service against PDF-processing workflows.
- /FlateDecode
- pypdf
- PdfReader
- FlateDecode
- decode_stream_data
- zlib
- TimeoutError
- Worker timeout
- Task timed out
- PDF processing timeout
- document processing timeout
- maximum execution time exceeded
- CPU time limit exceeded
- pypdf<6.7.1
- pypdf==6.7.0
- pypdf==6.6.0
What your security team should do
- Inventory applications, workers, containers, and serverless functions that parse, inspect, transform, merge, split, or extract content from PDFs using pypdf.
- Prioritize upgrades for externally reachable upload services, automated email/document ingestion, public APIs, and high-volume document processing queues.
- Upgrade pypdf to 6.7.1 or later and redeploy all packaged artifacts that include the dependency.
- Add or verify parser-level safeguards: maximum processing time, file size limits, page/object count limits, worker CPU/memory limits, queue throttling, and retry caps.
- Monitor document-processing services for spikes in CPU, long-running PDF jobs, queue backlog, timeout errors, and repeated failures involving PDF decompression or /FlateDecode streams.
- Preserve suspicious PDF samples and associated request metadata for forensic review if unexplained PDF-processing slowdowns are observed.
- Because this is not KEV-listed and EPSS is low, treat as a routine but important availability fix unless the organization has exposed or business-critical PDF ingestion paths.
The record
pypdf is a free and open-source pure-python PDF library. Prior to 6.7.1, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires a malformed /FlateDecode stream, where the byte-by-byte decompression is used. This vulnerability is fixed in 6.7.1.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | pypdf | 0 | 6.7.1 |
| Chainguard | open-webui | 0 | 0.8.3-r1 |
| Wolfi | open-webui | 0 | 0.8.3-r1 |
| openSUSE:Leap 16.0 | python-PyPDF2 | 0 | 2.11.1-bp160.2.1 |
| openSUSE:Tumbleweed | python-PyPDF2 | 0 | 2.11.1-4.1 |
Related vulnerabilities
- CVE-2026-28804 pypdf is a free and open-source pure-python PDF library. Also affects pypdf
- GHSA-9m86-7pmv-2852 pypdf vulnerable to inefficient decoding of ASCIIHexDecode streams Also affects pypdf
- CVE-2026-28351 pypdf is a free and open-source pure-python PDF library. Also affects pypdf
- GHSA-x7hp-r3qg-r3cj pypdf: Manipulated FlateDecode XFA streams can exhaust RAM Also affects pypdf
- CVE-2026-27888 pypdf is a free and open-source pure-python PDF library. Also affects pypdf
- GHSA-2rw7-x74f-jg35 pypdf has a possible infinite loop when loading circular /Prev entries in cross-reference… Also affects pypdf
- CVE-2026-27628 pypdf is a free and open-source pure-python PDF library. Also affects pypdf
- CVE-2026-27025 pypdf is a free and open-source pure-python PDF library. Also affects pypdf