Description
Pillow is a Python imaging library. From 9.1.0 until 13.0.0, Pillow can disclose uninitialized stack memory when Image.quantize() uses an empty palette. ImagingPaletteCacheUpdate() leaves a local cache array uninitialized when the palette has zero entries, and the conversion path emits those bytes as output pixel indices. An attacker who controls the palette image can obtain stack contents from a returned PNG or GIF. This can disclose addresses and stack-canary data without an out-of-bounds access, memory corruption, or process crash. This issue is fixed in version 13.0.0.
Published: 2026-10-19
Score: 6.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Information Disclosure
Action: Immediate Patch
AI Analysis

Impact

The vulnerability allows uninitialized stack data to be included in output PNG or GIF files generated by Pillow’s Image.quantize() when an empty palette is supplied. The leaked data can reveal stack addresses and canary values without causing memory corruption or a crash. This represents an information disclosure rather than an immediate denial of service or code execution flaw.

Affected Systems

Python-Pillow versions 9.1.0 through 12.x.x are affected. The issue exists in the Pillow library used in Python applications that invoke Image.quantize() with an empty palette. The fix was incorporated in Pillow 13.0.0.

Risk and Exploitability

The CVSS score of 6.9 denotes moderate severity. The EPSS score of 0.00291 indicates a very low but non‑zero probability of exploitation, corresponding to roughly 0.3% of vulnerability exploitation chances. The vulnerability is not listed in the CISA KEV catalog. Attackers can exploit it by supplying a crafted palette image to quantize(), making this a local or remote file‑processing risk depending on the configuration of the hosting service. The absence of out‑of‑bounds access limits the exploit to data disclosure.

Generated by OpenCVE AI on October 20, 2026 at 17:04 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Pillow to version 13.0.0 or later.
  • Restrict the source of palette images to trusted inputs or sanitize the palette before calling quantize().
  • Implement checks that the palette contains at least one entry before the quantize operation.

Generated by OpenCVE AI on October 20, 2026 at 17:04 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-rfgq-q3w2-pmv2 Pillow: Image.quantize() with empty palette leaks uninitialized stack memory
History

Wed, 28 Oct 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 27 Oct 2026 15:15:00 +0000

Type Values Removed Values Added
First Time appeared Python
Python pillow
CPEs cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*
Vendors & Products Python
Python pillow

Tue, 20 Oct 2026 12:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-908
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'}

threat_severity

Moderate


Tue, 20 Oct 2026 00:00:00 +0000

Type Values Removed Values Added
First Time appeared Python-pillow
Python-pillow pillow
Vendors & Products Python-pillow
Python-pillow pillow

Mon, 19 Oct 2026 22:15:00 +0000

Type Values Removed Values Added
Description Pillow is a Python imaging library. From 9.1.0 until 13.0.0, Pillow can disclose uninitialized stack memory when Image.quantize() uses an empty palette. ImagingPaletteCacheUpdate() leaves a local cache array uninitialized when the palette has zero entries, and the conversion path emits those bytes as output pixel indices. An attacker who controls the palette image can obtain stack contents from a returned PNG or GIF. This can disclose addresses and stack-canary data without an out-of-bounds access, memory corruption, or process crash. This issue is fixed in version 13.0.0.
Title Pillow: Image.quantize() with empty palette leaks uninitialized stack memory
Weaknesses CWE-457
References
Metrics cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Python Pillow
Python-pillow Pillow
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-28T15:15:44.187Z

Reserved: 2026-10-19T20:16:09.857Z

Link: CVE-2026-112898

cve-icon Vulnrichment

Updated: 2026-10-28T15:11:10.507Z

cve-icon NVD

Status : Modified

Published: 2026-10-19T22:17:10.030

Modified: 2026-10-28T16:17:02.557

Link: CVE-2026-112898

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-19T22:04:23Z

Links: CVE-2026-112898 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-20T17:15:14Z

Weaknesses
  • CWE-457

    Use of Uninitialized Variable

  • CWE-908

    Use of Uninitialized Resource