Pillow: Out-of-bounds read in tiled TIFF decoder
Summary
Pillow, the Python imaging library, can read past the end of a heap buffer when decoding tiled TIFF images. The flaw lies in the four-byte pixel copy routine, because libtiff can return a tile buffer that is smaller than the required row stride. An attacker who supplies a crafted tiled TIFF to an application that loads it can crash the process or copy adjacent heap data into the decoded image. Exposure is highest where a web application, upload portal or document converter processes user-supplied TIFF files with Pillow.
Affected
- Pillow 8.2.0 up to and including 12.3.0 (CVE record: >= 8.2.0, < 13.0.0)
Fixed in
- Pillow 13.0.0
Workaround
- Unknown. No vendor-documented interim mitigation.
- Until patched, reject or sandbox TIFF uploads from untrusted users and restrict which processes decode them.
Exploitation
- CISA SSVC: exploitation status 'poc', automatable: yes, technical impact: partial.
- A proof of concept is described in the GitHub advisory. Whether it is publicly available was not verified.
- No evidence of exploitation in the wild was found; no KEV listing was confirmed.
Our recommendation
- Identify all systems and Python projects that use Pillow, including transitive dependencies in requirements and lockfiles.
- Prioritise internet-facing services that decode user-supplied images or TIFF files.
- Upgrade to Pillow 13.0.0. Note that 13.0.0 drops support for Python 3.10, so a Python upgrade may be required.
- Until the upgrade, restrict TIFF uploads from untrusted users and run decoding in a sandboxed process.
- Monitor application logs for crashes of Pillow-based processes.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-462x-pgg6-55fp github.com
- Pillow 13.0.0 release github.com
- Fix commit 76869efdbbf2ad7dccd7536520fb61b7a00ab61e github.com
- Pillow 13.0.0 release notes github.com
- OSV: BIT-pillow-2026-112395 osv.dev
- GitLab Advisory Database: CVE-2026-112395 advisories.gitlab.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, 15:41.
Original description (NVD)
Pillow is a Python imaging library. From 8.2.0 until 13.0.0, Pillow's tiled-TIFF decoder can read past the tile buffer while copying four-byte pixels. In _decodeTile, libtiff can return a tile allocation smaller than the required row stride multiplied by the tile length, and Pillow's stride-and-copy loop walks beyond that allocation. An attacker can supply a crafted tiled TIFF to an application that loads it. This can expose adjacent heap data in pixels or crash the process. This issue is fixed in version 13.0.0.
NVD references (4)
- https://github.com/python-pillow/Pillow/commit/76869efdbbf2ad7dccd7536520fb61b7a00ab61e
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-462x-pgg6-55fp
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-462x-pgg6-55fp
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.
