Pillow 13.0.0 fixes critical image-handling flaws, including EPS code execution
CVE-2026-112900 affects Pillow 2.6.0 through 12.3.0 when Ghostscript is installed; none of the flaws is known to be under attack.
Heap overflow in Pillow compressed TIFF save without fileno
Pillow versions from 2.0.0 until 13.0.0 mishandle compressed TIFF writes in _tiffWriteProc when the target has no usable fileno(), such as BytesIO. An attacker-controlled out-of-line TIFF tag or retained ICC profile can overflow the heap after libtiff seeks forward, crashing the process and possibly executing code. Separately, unwritten alignment gaps in compressed TIFF output larger than 64 KiB can leak stale heap bytes. Paths and targets with real file descriptors are unaffected.
What to do: Upgrade to Pillow 13.0.0. File paths and other targets with real file descriptors are not affected.
| Product | Affected | Fixed in |
|---|---|---|
| Pillow | 2.0.0 until 13.0.0 | 13.0.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Pillow is a Python imaging library. From 2.0.0 until 13.0.0, Pillow has a heap buffer overflow and stale-heap disclosure in _tiffWriteProc when saving compressed TIFF data through libtiff to a target without a usable fileno(), such as BytesIO. The callback sizes its allocation from the prior buffer size instead of the current write position, allowing an attacker-controlled out-of-line TIFF tag or retained ICC profile to be copied beyond the allocation after libtiff seeks forward. This overflow can crash the process and may allow code execution. Independently, unwritten alignment gaps in compressed TIFF output larger than 64 KiB can disclose stale heap bytes without a crafted tag. File paths and targets with real file descriptors are unaffected. This issue is fixed in version 13.0.0.
CVE-2026-112900 affects Pillow 2.6.0 through 12.3.0 when Ghostscript is installed; none of the flaws is known to be under attack.
Today 2.1K readers · 11K views · 8.7K reads · all time 157K views