What’s Vulnerable › Vulnerabilities
CVE-2026-96640: Pillow PDF append accepts malformed shared page-tree DAG causing resource exhaustion
- Severity: high (CVSS 7.5 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.5% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2026-10-21 · updated 2026-10-28
- Weakness: CWE-400
Description
Pillow is a Python imaging library. From 5.1.0 until 13.0.0, PdfParser.linearize_page_tree() in src/PIL/PdfParser.py treats a PDF /Pages graph as a tree without tracking duplicate indirect references. When Image.save(..., format="PDF", append=True) processes an attacker-controlled existing PDF whose /Kids arrays repeatedly reference the same child /Pages node, Pillow expands the shared subtree as distinct pages. A compact malformed PDF can therefore create exponentially many page references and consume disproportionate CPU before the append completes. This issue is fixed in version 13.0.0.
Affected products
- python-pillow Pillow: from 5.1.0 before 13.0.0 — fixed in 13.0.0
- Pypi Pillow: from 5.1.0 before 13.0.0; 10.0.0, 10.0.1, 10.1.0, 10.2.0, 10.3.0, 10.4.0 (+43) — fixed in 13.0.0
- python-pillow Pillow: from 5.1.0, < 13.0.0
How to fix
Upgrade to a fixed version: python-pillow Pillow 13.0.0; Pypi Pillow 13.0.0. Check the vendor advisory for mitigations.
References
- https://github.com/python-pillow/Pillow/commit/6f0e7ee1f9c2fe227906f8a4b926e6622b702bc7
- https://github.com/python-pillow/Pillow/pull/10093
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-mrfp-p49p-3hf2
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-mrfp-p49p-3hf2
Get alerted when CVE-2026-96640 or the next vulnerability affects your stack