Skip to main content

Pillow CVE-2026-114501

| EUVDEUVD-2026-107575 MEDIUM
Sensitive Information in Resource Not Removed Before Reuse (CWE-226)
2026-10-21 GitHub_M
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Access multi-tenant Pillow Arrow endpoint
  2. Delivery
    Request Arrow export of small/cropped image
  3. Exploit
    Library exports from blocks[0].ptr ignoring alignment padding
  4. Execution
    Buffer returns stale heap/other users' pixels
  5. Impact
    Disclose cross-tenant memory

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V14 - Data Protection Sensitive info in resource not removed before reuse
Exploitation Conditions

Exploitation requires a specific non-default deployment: the application must configure a non-default PILLOW_ALIGNMENT (so aligned_linesize adds row padding or an aligned offset before the first row) AND export images to the Arrow format via the __arrow_c_array__ / Arrow C interface. The leak is most pronounced for small or cropped images where per-row padding is significant, and for the information to cross trust boundaries the deployment must be multi-user (one user's export must be able to reach another user). Limiting factors: default Pillow configurations do not set custom alignment and are not affected; single-user or non-Arrow workflows cannot leak cross-tenant data; affects only versions 11.2.1 through 12.x, fixed in 13.0.0. The AT:P metric reflects that these configuration prerequisites are outside the attacker's control.

Impact

This is a genuine but narrowly-scoped information-disclosure flaw (CWE-226) that should be treated as a moderate, not top, priority. The only severity signal provided is a vendor/GitHub CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N, score 6.3): network vector, no privileges or user interaction, but with AT:P (a present attack requirement) and only Low confidentiality impact and no integrity/availability impact. The AT:P flag is the key nuance - exploitation is conditional on the application enabling PILLOW_ALIGNMENT and exporting images to Arrow, so this is not a straightforward remote attack despite AV:N. There is no EPSS score, no CISA KEV listing, and no public exploit referenced in the data, so exploitation status is 'no public exploit identified at time of analysis'. No SSVC decision data was supplied. The disclosed content is uninitialized padding or stale heap from previously freed images, which can leak another user's pixels or process memory - meaningful in multi-tenant image-processing services but useless against single-user deployments. Net: a real, fix-worthy bug for multi-user services that use Pillow's Arrow export with custom alignment, but low urgency for the large majority of Pillow users who never touch alignment or Arrow export.

Exploit ScenarioDerived

A multi-tenant image service built on Pillow is configured with a non-default PILLOW_ALIGNMENT and exposes image data to clients via the Arrow C array interface. When one user requests an Arrow export of a small or cropped image, the buffer sent back includes padding bytes or stale heap left over from a previously freed image belonging to another user, leaking their pixels or other process memory. No public proof-of-concept was referenced, though the fixing PR (#10172) includes regression tests that demonstrate the non-contiguous/aligned conditions.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Pillow 11.2.1 through 12.x can disclose uninitialized padding, bytes preceding the first row, or stale heap contents when an application sets a non-default PILLOW_ALIGNMENT and exports images through the Arrow C interface (__arrow_c_array__/__arrow_c_schema__). The flaw is limited to deployments that both customize alignment and use Arrow export, with meaningful cross-user exposure requiring a multi-user context where one user's exported buffer can reach another user; default Pillow configurations are not affected. No public exploit code or CISA KEV entry was identified at time of analysis, and the vendor released Pillow 13.0.0 as the fix.

RemediationAI

Upgrade to Pillow 13.0.0, the vendor-released fixed version; see the release at https://github.com/python-pillow/Pillow/releases/tag/13.0.0, advisory https://github.com/python-pillow/Pillow/security/advisories/GHSA-654x-cwwv-5j9c, fix PR https://github.com/python-pillow/Pillow/pull/10172, and commit https://github.com/python-pillow/Pillow/commit/19f64946eb247b973dd4560be7dea3bf979d2e6a. If immediate upgrade is not possible, remove non-default PILLOW_ALIGNMENT settings and disable or block Arrow export paths (__arrow_c_array__/__arrow_c_schema__) for untrusted or multi-tenant images; reverting alignment to the default gives up any alignment-related performance or ABI benefit, while blocking Arrow export breaks Arrow interoperability. Deployments that cannot drop alignment should isolate Arrow export to a single-user process or copy and scrub exported buffers before sharing, but those are compensating controls with residual risk and do not replace upgrading to 13.0.0.

Affected VersionsENISA

Pillow 11.2.1, < 13.0.0

Affected Packages

euvd pillow fix: 13.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Pillow stores pixel data in C-level image blocks and exposes an Arrow C data interface via __arrow_c_array__/__arrow_c_schema__. The vulnerable export path assumes rows are tightly contiguous and starts the Arrow buffer at im->blocks[0].ptr; when PILLOW_ALIGNMENT causes aligned_linesize to include per-row padding or an aligned offset before the first row, the computed buffer can span padding, pre-row bytes, or freed-image heap contents instead of only the intended pixels. This is CWE-226 (Sensitive Information in Resource Not Removed Before Reuse): stale or uninitialized memory is exposed when the image resource is reused for Arrow export. The independent assessment's CVSS 3.1 vector AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N reflects that exploitation needs the non-default alignment setting plus Arrow export, and cross-tenant impact needs a multi-user deployment; the CPE cpe:2.3:a:python-pillow:pillow:*:*:*:*:*:*:*:* identifies Pillow as the affected package, with the vendor advisory narrowing affected versions to 11.2.1 through 12.x.

Know when Pillow gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

AC:H because exploitation depends on non-default alignment plus Arrow export and on heap/timing to recover stale data; C:L only, with no integrity or availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 23:48 EUVD
CVE Published
Oct 21, 2026 - 21:17 cve.org
MEDIUM 6.3

DescriptionCVE.org

Pillow is a Python imaging library. From 11.2.1 until 13.0.0, Arrow export assumes that an image's rows are tightly contiguous and exports from im->blocks[0].ptr even when PILLOW_ALIGNMENT makes aligned_linesize include row padding or an aligned offset before the first row. The resulting Arrow buffer can include uninitialized padding, bytes preceding the first row, or stale heap contents from previously freed images. Applications that configure alignment and export images to Arrow can therefore disclose one user's pixels or other process memory to another user. This issue is fixed in version 13.0.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
High
Pillow is among the most widely installed Python imaging libraries
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
High

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Pillow

View all
CVE-2022-30595 CRITICAL POC
9.8 May 25

libImaging/TgaRleDecode.c in Pillow 9.1.0 has a heap buffer overflow in the processing of invalid TGA image files. Rated

CVE-2026-59204 HIGH POC
8.7 Jul 14

Denial of service in Python Pillow (versions 8.2.0 through 12.2.0) allows remote attackers to exhaust memory during JPEG

CVE-2026-54058 HIGH POC
8.3 Jul 14

Out-of-bounds memory disclosure in Python Pillow before 12.3.0 lets an attacker who supplies a crafted McIdas AREA image

CVE-2026-59197 HIGH POC
8.2 Jul 14

Heap out-of-bounds write in Python Pillow prior to 12.3.0 lets an attacker who controls the rank-filter size parameter c

CVE-2026-59200 HIGH POC
7.5 Jul 14

Uncontrolled memory consumption in Python Pillow (PIL) versions 5.1.0 through 12.2.x allows a remote attacker to cause d

CVE-2021-23437 HIGH POC
7.5 Sep 03

The package pillow 5.2.0 and before 8.3.2 are vulnerable to Regular Expression Denial of Service (ReDoS) via the getrgb

CVE-2025-48379 HIGH POC
7.1 Jul 01

Pillow is a Python imaging library. In versions 11.2.0 to before 11.3.0, there is a heap buffer overflow when writing a

CVE-2016-4009 CRITICAL
9.8 Apr 13

Integer overflow in the ImagingResampleHorizontal function in libImaging/Resample.c in Pillow before 3.1.1 allows remote

CVE-2014-3007 CRITICAL
10.0 Apr 27

Python Image Library (PIL) 1.1.7 and earlier and Pillow 2.3 might allow remote attackers to execute arbitrary commands v

CVE-2026-96639 CRITICAL
9.8 Oct 21

Pillow versions 11.0.0 through 12.x (fixed in 13.0.0) can reuse a stale native ImagingCore buffer when a multi-frame ima

CVE-2021-34552 CRITICAL
9.8 Jul 13

Pillow through 8.2.0 and PIL (aka Python Imaging Library) through 1.1.7 allow an attacker to pass controlled parameters

CVE-2021-25289 CRITICAL
9.8 Mar 19

An issue was discovered in Pillow before 8.1.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely explo

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy