---
title: "CVE-2026-112403: Pillow: Heap buffer overflow in ImagingJpegDecode"
url: https://erroneo.us/security/cve/CVE-2026-112403/
description: "CVE-2026-112403 (Pillow (PyPI)): Pillow is a Python imaging library. Prior to 13.0.0, Pillow's JPEG decoder can write a full-width scanline into a buffer…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-10-19
date_modified: 2026-10-21
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-112403"
kev: false
cvss: 9.2
epss: 0.00321
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-112403: Pillow: Heap buffer overflow in ImagingJpegDecode

**Signal:** Critical and remotely reachable. No known exploitation yet, but it is network-reachable without credentials. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- No confirmed exploitation. It is not in CISA’s KEV catalog. That can change quickly after a public write-up; re-check if you are affected.
- EPSS 0.3% , percentile 24: FIRST’s model estimates a 0.3% chance of exploitation activity in the next 30 days, higher than 24% of all scored CVEs (low). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes Pillow (PyPI) <= 12.3.0, fixed in 13.0.0 . Check your lockfile, including transitive dependencies.
- Editorial verdict: Patch this week. Pillow 13.0.0: Critical Image-Parsing Memory Bugs Fixed — If your service opens images that users or the internet supply, move to Pillow 13.0.0 this week; the worst bugs are memory corruption reachable from a crafted file, and reproducers are in the published advisories.

## What it is

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.

## Affected packages

- PyPI `Pillow` <= 12.3.0 → fixed: 13.0.0

## Affected products (CVE record)

- python-pillow Pillow: < 13.0.0

## Severity

- GitHub_M CVSS 4.0: 9.2 `CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`
- GitHub CVSS 4.0: 9.2 `CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- FIRST EPSS (model of 2026-10-21): 0.32% probability of exploitation activity in the next 30 days; percentile 24.

## Sources

- [GitHub Advisory GHSA-8g5g-8vmr-9782](https://github.com/advisories/GHSA-8g5g-8vmr-9782)
- [CVE.org record CVE-2026-112403](https://www.cve.org/CVERecord?id=CVE-2026-112403)
- [NVD entry CVE-2026-112403](https://nvd.nist.gov/vuln/detail/CVE-2026-112403)
- [github.com](https://github.com/python-pillow/Pillow/security/advisories/GHSA-8g5g-8vmr-9782)
- [github.com](https://github.com/python-pillow/Pillow/commit/242a059aedc1935097d9aa1dc3f099750467ba75)
- [github.com](https://github.com/python-pillow/Pillow/releases/tag/13.0.0)

---
Source page: https://erroneo.us/security/cve/CVE-2026-112403/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
