Description
Pillow is a Python imaging library. From 8.1.0 until 13.0.0, Pillow's TIFF tile and RGBA decode paths can read beyond row data produced by libtiff. In _decodeTile and the RGBA unpacker path, when Pillow and libtiff interpret duplicated PhotometricInterpretation or BitsPerSample tags differently, Pillow does not verify that the required input row fits inside the row libtiff produced, while the strip path has this validation. Loading pixels from such a crafted TIFF can expose adjacent heap data in output pixels or crash the process. This issue is fixed in version 13.0.0.
Published: 2026-10-19
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Out-of-Bounds Read leading to memory leakage and crashes
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises from an out-of-bounds read in Pillow's TIFF tile and RGBA decoder paths. When a TIFF file contains duplicated PhotometricInterpretation or BitsPerSample tags, the library fails to confirm that the input data fits within the bounds expected by libtiff, causing Pillow to copy adjacent heap data into the output pixel buffer. This leaks memory contents and may corrupt the image data or crash the process, presenting a classic buffer overread classified under CWE-126.

Affected Systems

Pillow, the widely used Python imaging library, is affected by versions 8.1.0 through 13.0.0 (inclusive). Version 13.0.0 contains the fix. Any Python application that imports Pillow 8.1.0–12.9.0 and processes TIFF images may be vulnerable.

Risk and Exploitability

With a CVSS score of 8.8 the vulnerability attains high severity. The exploit probability is not recorded in EPSS, and it is not listed in CISA’s KEV catalog. The likely attack vector is via a crafted TIFF file fed to an application that uses Pillow for image decoding—such as a web service that accepts user-supplied images or a desktop application that opens files. An attacker who controls the image stream can trigger an out-of-bounds read, potentially leaking sensitive heap data or crashing the process, which could be leveraged for further exploitation or denial-of-service.

Generated by OpenCVE AI on October 20, 2026 at 06:29 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade your Pillow installation to version 13.0.0 or later.
  • If an upgrade is not immediately possible, restrict the handling of TIFF files to trusted sources or remove TIFF support entirely until the library can be patched, and consider executing image decoding in a sandboxed environment to contain potential memory leaks or crashes.
  • Implement runtime checks in your application to validate image metadata before processing, helping detect anomalies early.

Generated by OpenCVE AI on October 20, 2026 at 06:29 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-c6hw-5grf-ff96 Pillow: OOB read in TiffDecode.c tile and RGBA paths leaks heap memory into pixels
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 00:30:00 +0000

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

None

cvssV3_1

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

threat_severity

Important


Mon, 19 Oct 2026 23: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 21:45:00 +0000

Type Values Removed Values Added
Description Pillow is a Python imaging library. From 8.1.0 until 13.0.0, Pillow's TIFF tile and RGBA decode paths can read beyond row data produced by libtiff. In _decodeTile and the RGBA unpacker path, when Pillow and libtiff interpret duplicated PhotometricInterpretation or BitsPerSample tags differently, Pillow does not verify that the required input row fits inside the row libtiff produced, while the strip path has this validation. Loading pixels from such a crafted TIFF can expose adjacent heap data in output pixels or crash the process. This issue is fixed in version 13.0.0.
Title Pillow: OOB read in TiffDecode.c tile and RGBA paths leaks heap memory into pixels
Weaknesses CWE-126
References
Metrics cvssV4_0

{'score': 8.8, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/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:18:51.938Z

Reserved: 2026-10-19T16:58:51.960Z

Link: CVE-2026-112404

cve-icon Vulnrichment

Updated: 2026-10-28T15:18:17.536Z

cve-icon NVD

Status : Modified

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

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

Link: CVE-2026-112404

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-19T21:27:56Z

Links: CVE-2026-112404 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-20T06:30:10Z

Weaknesses