CVE-2026-96640
CVE-2026-96640 · Pillow PDF append accepts malformed shared page-tree DAG causing resource exhaustion
This page contains facts from public vulnerability sources. Check the original advisory before updating.
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.
CVSS 8.2 · High · EPSS 0.4% · Public exploit · Fix available
- Published
- Updated
Affected products and versions
pillow
- Versions
- >= 5.1.0, < 13.0.0: Affected
No fix published
pillow Debian:12
- Versions
- 10.0.0-1
- 10.1.0-1
- 10.2.0-1
- 10.3.0-1
- 10.3.0-2
- 10.4.0-1
- 10.4.0-1.1
- 11.1.0-1
- 11.1.0-2
- 11.1.0-3
- 11.1.0-4
- 11.1.0-5
- 11.2.1-1
- 11.3.0-1
- 12.0.0-1
- 12.1.0-1
- 12.1.1-1
- 12.1.1-2
- 12.2.0-1
- 12.3.0-1
- 13.0.0-1
- 9.4.0-1.1
- 9.4.0-1.1+deb12u1
- 9.5.0-1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Debian:13
- Versions
- 11.1.0-5
- 11.1.0-5+deb13u1
- 11.1.0-5+deb13u2
- 11.1.0-5+deb13u3
- 11.1.0-5+deb13u4
- 11.2.1-1
- 11.3.0-1
- 12.0.0-1
- 12.1.0-1
- 12.1.1-1
- 12.1.1-2
- 12.2.0-1
- 12.3.0-1
- 13.0.0-1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Debian:14
- Versions
- 11.1.0-5
- 11.2.1-1
- 11.3.0-1
- 12.0.0-1
- 12.1.0-1
- 12.1.1-1
- 12.1.1-2
- 12.2.0-1
- 12.3.0-1
- 13.0.0-1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow PyPI
- Versions
- 10.0.0
- 10.0.1
- 10.1.0
- 10.2.0
- 10.3.0
- 10.4.0
- 11.0.0
- 11.1.0
- 11.2.1
- 11.3.0
- 12.0.0
- 12.1.0
- 12.1.1
- 12.2.0
- 12.3.0
- 5.1.0
- 5.2.0
- 5.3.0
- 5.4.0
- 5.4.0.dev0
- 5.4.1
- 6.0.0
- 6.1.0
- 6.2.0
- 6.2.1
- 6.2.2
- 7.0.0
- 7.1.0
- 7.1.1
- 7.1.2
- 7.2.0
- 8.0.0
- 8.0.1
- 8.1.0
- 8.1.1
- 8.1.2
- 8.2.0
- 8.3.0
- 8.3.1
- 8.3.2
- 8.4.0
- 9.0.0
- 9.0.1
- 9.1.0
- 9.1.1
- 9.2.0
- 9.3.0
- 9.4.0
- 9.5.0
- Affected ranges
- ECOSYSTEM: ≥ 5.1.0, < 13.0.0
Update to 13.0.0
pillow Ubuntu:Pro:14.04:LTS
- Versions
- 2.2.1-1ubuntu2
- 2.2.1-2ubuntu1
- 2.2.1-3ubuntu2
- 2.2.1-3ubuntu3
- 2.2.1-3ubuntu4
- 2.2.1-3ubuntu6
- 2.3.0-1ubuntu1
- 2.3.0-1ubuntu2
- 2.3.0-1ubuntu3
- 2.3.0-1ubuntu3.2
- 2.3.0-1ubuntu3.3
- 2.3.0-1ubuntu3.4
- 2.3.0-1ubuntu3.4+esm1
- 2.3.0-1ubuntu3.4+esm2
- 2.3.0-1ubuntu3.4+esm3
- 2.3.0-1ubuntu3.4+esm4
- 2.3.0-1ubuntu3.4+esm5
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:Pro:16.04:LTS
- Versions
- 2.9.0-1
- 3.0.0-1
- 3.0.0-1build1
- 3.1.0-1
- 3.1.1-1
- 3.1.2-0ubuntu1
- 3.1.2-0ubuntu1.1
- 3.1.2-0ubuntu1.3
- 3.1.2-0ubuntu1.4
- 3.1.2-0ubuntu1.5
- 3.1.2-0ubuntu1.6
- 3.1.2-0ubuntu1.6+esm1
- 3.1.2-0ubuntu1.6+esm2
- 3.1.2-0ubuntu1.6+esm3
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:Pro:18.04:LTS
- Versions
- 4.1.1-3build2
- 4.3.0-2ubuntu1
- 5.0.0-1
- 5.1.0-1
- 5.1.0-1ubuntu0.2
- 5.1.0-1ubuntu0.3
- 5.1.0-1ubuntu0.4
- 5.1.0-1ubuntu0.5
- 5.1.0-1ubuntu0.6
- 5.1.0-1ubuntu0.7
- 5.1.0-1ubuntu0.8
- 5.1.0-1ubuntu0.8+esm1
- 5.1.0-1ubuntu0.8+esm2
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:Pro:20.04:LTS
- Versions
- 6.1.0-1
- 6.1.0-1build1
- 6.2.1-2
- 7.0.0-4
- 7.0.0-4build1
- 7.0.0-4ubuntu0.1
- 7.0.0-4ubuntu0.2
- 7.0.0-4ubuntu0.3
- 7.0.0-4ubuntu0.4
- 7.0.0-4ubuntu0.5
- 7.0.0-4ubuntu0.6
- 7.0.0-4ubuntu0.7
- 7.0.0-4ubuntu0.8
- 7.0.0-4ubuntu0.9
- 7.0.0-4ubuntu0.9+esm1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow-python2 Ubuntu:Pro:20.04:LTS
- Versions
- 6.2.1-3~build1
- 6.2.1-3
- 6.2.1-3ubuntu0.1~esm1
- 6.2.1-3ubuntu0.1~esm2
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:22.04:LTS
- Versions
- 8.1.2+dfsg-0.3
- 9.0.0-1
- 9.0.1-1
- 9.0.1-1build1
- 9.0.1-1ubuntu0.1
- 9.0.1-1ubuntu0.2
- 9.0.1-1ubuntu0.3
- 9.0.1-1ubuntu0.4
- 9.0.1-1ubuntu0.5
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:24.04:LTS
- Versions
- 10.0.0-1
- 10.1.0-1
- 10.2.0-1
- 10.2.0-1build1
- 10.2.0-1ubuntu1
- 10.2.0-1ubuntu1.2
- 10.2.0-1ubuntu1.3
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:26.10
- Versions
- 12.1.1-2ubuntu1
- 12.3.0-1ubuntu1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
pillow Ubuntu:26.04:LTS
- Versions
- 11.3.0-1ubuntu1
- 11.3.0-1ubuntu2
- 12.0.0-1ubuntu1
- 12.1.1-1ubuntu1
- 12.1.1-2ubuntu1
- 12.1.1-2ubuntu1.1
- 12.1.1-2ubuntu1.2
- 12.1.1-2ubuntu1.3
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
Original sources
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-mrfp-p49p-3hf2
- https://github.com/python-pillow/Pillow/pull/10093
- https://github.com/python-pillow/Pillow/commit/6f0e7ee1f9c2fe227906f8a4b926e6622b702bc7
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- https://nvd.nist.gov/vuln/detail/CVE-2026-96640