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 JPEG draft/thumbnail before 13.0.0
Pillow's JPEG decoder, before 13.0.0, can write a full-width scanline into a buffer sized for a requested draft scale. An attacker who can supply an 8-bit lossless SOF3 JPEG to an app that calls draft() or thumbnail() may corrupt heap memory, crash the process, or potentially run code, but only when Pillow is linked to libjpeg-turbo 3.x. libjpeg-turbo 2.x and IJG builds reject that input.
What to do: Upgrade Pillow to 13.0.0. Builds linked to libjpeg-turbo 2.x or IJG reject the SOF3 input that triggers this bug.
| Product | Affected | Fixed in |
|---|---|---|
| python-pillow Pillow | prior to 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. Prior to 13.0.0, Pillow's JPEG decoder can write a full-width scanline into a buffer sized for a requested draft scale. ImagingJpegDecode does not verify libjpeg's actual output width and component count after scaling is requested, and an 8-bit lossless SOF3 JPEG decoded by a build linked to libjpeg-turbo 3.x can ignore the requested downscaling geometry. An attacker can supply such a JPEG to an application that uses draft() or thumbnail() to request downscaling. This can corrupt heap memory, crash the process, or potentially allow code execution. Older libjpeg-turbo 2.x and IJG builds reject the SOF3 input. 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