CVE-2026-59198

Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images

Published Jul 14, 2026 CVSS 3.1 · 6.5 Medium EPSS < 1% KEV · Not listed
Description
Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.

Analysis

AI-generated

Technical impact

Pillow’s TGA RLE encoder incorrectly reads past the end of its packed row buffer when saving a mode 1 image with RLE compression. The over‑read copies adjacent process heap bytes into the generated TGA file, exposing potentially sensitive data that the process holds in memory. This over‑read is a classic out‑of‑bounds read (CWE-125) and can compromise the confidentiality of image files produced by the library. The vulnerability does not corrupt memory or allow code execution; it simply leaks data that is reachable via the generated image.

Affected Systems

Python-Pillow users should be aware that all releases from 5.2.0 through the last patch-before-12.3.0 are vulnerable. The issue is fixed in Pillow 12.3.0; any installation of Pillow older than that should be upgraded to 12.3.0 the over‑read path.

Risk and Exploitability

The CVSS score of 6.5 indicates a medium impact; the EPSS score of less than 1% suggests that exploitation is currently rare or uncertain, and the vulnerability is not listed in CISA's KEV catalog. Based on the description, it is inferred that the attack vector is local: an application with write access to the file system can produce a malicious image that leaks internal heap contents to any user who can read the file. No elevated privileges or network exposure are required, so the risk is limited to the local or shared storage environment in which the image is eventually accessed.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Pillow to version 12.3.0 or later, which removes the out‑bounds read in the TGA RLE encoder.
  • If an immediate upgrade is not possible, avoid generating mode 1 TGA images using RLE compression; switch to a different image mode or file format for output.
  • In environments where mode 1 TGA output is required, consider using an alternative imaging library that does not contain this flaw.

Generated by OpenCVE AI on July 31, 2026 at 09:58 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-fj7v-r99m-22gq Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images
Ubuntu USN Ubuntu USN USN-8690-1 Pillow vulnerability
History
Type Values Removed Values Added
Metrics ssvc

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

Type Values Removed Values Added
First Time appeared Python-pillow
Python-pillow pillow
Vendors & Products Python-pillow
Python-pillow pillow
Type Values Removed Values Added
Description Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.
Title Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images
Weaknesses CWE-125
References
Metrics cvssV3_1

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

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 14, 2026, 7:55 PM
Reserved
Jul 2, 2026, 7:53 PM
Status
Analyzed
Published
Jul 14, 2026, 4:17 PM
Modified
Oct 24, 2026, 9:10 PM
Severity
Moderate
Public date
Jul 14, 2026, 4:07 PM