CVE-2026-112403
Pillow: Heap buffer overflow in ImagingJpegDecode
JpegImageFile.draft() — which Image.thumbnail() calls automatically — requests 1/2, 1/4 or 1/8 scaled JPEG output and shrinks self._size and the tile extents to match, so _setimage() allocates a single-row decode buffer of ceil(W/s) samples. ImagingJpegDecode() sets cinfo.scale_num/scale_denom, calls jpeg_start_decompress(), and then reads scanlines into that buffer without ever comparing cinfo.
- python-pillow Pillow
- Critical
- CVSS 9.2
- EPSS 0.32%
- Fixed version listed
What to do
Fixed version listed
Affected products
| Product | Affected | Fixed in |
|---|---|---|
| python-pillow Pillow | < 13.0.0 | None listed |
Affected packages
| Package | Affected | Fixed in | Advisory |
|---|---|---|---|
| Pillow (PyPI) | <= 12.3.0 | 13.0.0 | GHSA-8g5g-8vmr-9782 |
Advisories and fixes
- Public exploit github.com
Scores and signals
- Exploitation
- No known exploitation
- Severity
- Critical, CVSS 9.2 (v4.0, scored by GitHub)
- EPSS
- 0.32% chance of exploitation in the next 30 days (EPSS from FIRST, as of Oct 23, 2026)
- CISA's SSVC decision points
- Exploitation: proof of concept. Automatable: no. Technical impact: total. As of Oct 22, 2026.
- Weakness
- CWE-122: Heap-based Buffer Overflow
- Vendor
- python-pillow, Pillow
Timeline
- GitHub published advisory GHSA-8g5g-8vmr-9782 (critical). Fixed in 13.0.0.