Vulnerability DatabaseCVE-2026-119206

CVE-2026-119206: 
Python vulnerability analysis and mitigation

Overview

CVE-2026-119206 is an algorithmic complexity (denial-of-service) vulnerability in pypdf, a free and open-source pure-Python PDF library. Prior to version 6.21.3, pypdf can take excessive time to retrieve page labels from a crafted PDF containing a flat page-label number tree with many ranges, due to an O(pages × label_ranges) scanning pattern in the page_labels property. All pypdf versions before 6.21.3 are affected. The vulnerability was disclosed on October 29, 2026, and carries a CVSS v4.0 base score of 7.1 (High) (GitHub Advisory, Feedly).

Technical details

The root cause is an uncontrolled resource consumption flaw (CWE-400) in the page_labels property of pypdf's _page_labels.py module. The property calls index2label for every page, and each call scans the /Nums array from the beginning, causing total work to grow proportionally to the product of the page count and the number of label ranges. For example, a 5,000-page document with 2,500 label ranges took approximately 1.32 seconds to process before the fix, compared to 9 milliseconds after. An attacker can exploit this by crafting a PDF with a large flat /Nums array and many label ranges, then submitting it to any application that accesses the page_labels property (GitHub Advisory, GitHub PR #4251).

Impact

Successful exploitation causes excessive CPU consumption and long runtimes in any application that processes the page_labels property on attacker-supplied PDFs, effectively rendering the affected service unresponsive or severely degraded (denial of service). There is no confidentiality or integrity impact — only availability is affected. Applications that automatically process uploaded or received PDF files without sanitization are at greatest risk (GitHub Advisory, Feedly).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported as of the disclosure date. The EPSS score is 0.0, indicating very low current exploitation probability, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires user interaction in the sense that a passive user or automated pipeline must process the crafted PDF, but no authentication or special privileges are required from the attacker's side (Feedly).

Exploitation steps

  1. Craft a malicious PDF: Create a PDF file with a /PageLabels dictionary containing a flat /Nums array with a large number of label ranges (e.g., thousands of key-value pairs) and a high page count, maximizing the O(pages × ranges) processing cost.
  2. Identify a target: Find an application or service that uses pypdf (versions < 6.21.3) and accesses the page_labels property on user-supplied PDFs — such as document converters, PDF metadata extractors, or web upload endpoints.
  3. Submit the crafted PDF: Upload or send the malicious PDF to the target application through any available input channel (file upload form, API endpoint, email attachment processor, etc.).
  4. Trigger denial of service: When the application calls reader.page_labels, the quadratic scanning loop consumes excessive CPU time, causing the process to hang or become unresponsive, potentially exhausting server resources if multiple requests are sent concurrently (GitHub Advisory, GitHub PR #4251).

Indicators of compromise

  • Process: Python processes consuming abnormally high CPU for extended periods while processing PDF files; worker threads or processes stuck in pypdf's _page_labels.py code.
  • Logs: Application logs showing unusually long response times or timeouts specifically when processing PDF files; repeated processing of the same or similar PDF files from the same source.
  • File System: Presence of crafted PDF files with abnormally large /PageLabels /Nums arrays (detectable via PDF inspection tools); PDFs with page counts and label range counts in the thousands.
  • Network: High volume of PDF upload requests from a single source IP, particularly if each request causes elevated CPU usage on the server (GitHub Advisory).

Mitigation and workarounds

Upgrade pypdf to version 6.21.3 or later, which fixes the issue by walking the flat /Nums array once for all pages instead of rescanning from the beginning for each page (GitHub Release). For users who cannot upgrade immediately, the changes from PR #4251 can be applied manually as a workaround (GitHub PR #4251). Additionally, consider implementing file size and processing time limits for PDF inputs in applications that process user-supplied files.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

pypdf2

Affected

sid

pypdf

Affected

trixie

pypdf

Affected

Ubuntu

Unknown

devel

pypdf

Unknown

noble

pypdf

Unknown

noble (esm-apps)

pypdf

Unknown

resolute

pypdf

Unknown

resolute (esm-apps)

pypdf

Unknown

Source: This report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-wrc3-8c98-283wHIGH8.6
  • Python logoPython
  • boi-tech-rag-xml-document-loader
NoYesOct 30, 2026
GHSA-q749-wr8p-6pc9HIGH8.5
  • Python logoPython
  • boi-tech-ai-agent-telemetry-logger
NoYesOct 30, 2026
GHSA-vr42-692h-pmm6HIGH8.2
  • Python logoPython
  • boi-tech-ai-chat-markdown-renderer
NoYesOct 30, 2026
GHSA-q77q-crp2-mmjcHIGH7.5
  • Python logoPython
  • boi-tech-llm-output-regex-parser
NoYesOct 30, 2026
GHSA-9pg5-8c7x-5hfxMEDIUM6.9
  • Python logoPython
  • joserfc
NoYesOct 30, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management