CVE-2026-59197: python-pillow Pillow heap out-of-bounds write in RankFilter

CVE-2026-59197 · Severity: high · CVSS 8.2 · Published 2026-07-14

Pillow, a widely used Python library for image processing, contains a flaw in how it handles certain image filters like Median or Max filters. An attacker could provide a specially crafted, very large filter size that causes the library to crash or potentially corrupt memory. This could lead to service outages or allow an attacker to gain a foothold in systems that process user-uploaded images.

Technologies: pillow (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-59197 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-59197 being exploited in the wild.
How severe is CVE-2026-59197?
High severity, with a CVSS score of 8.2, published 14 July 2026.
Which products and versions are affected?
pillow (PyPI) < 12.3.0, ECOSYSTEM:introduced=0,fixed=12.3.0.
Is there a fix for CVE-2026-59197?
Yes. pillow (PyPI): upgrade to 12.3.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-59197 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-59197?
Check whether you run pillow (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • pillow (PyPI): upgrade to 12.3.0 or later
    pip install "pillow>=12.3.0"

Technical details

A heap out-of-bounds write exists in Pillow's native C extension, specifically within the `ImagingExpand` function in `Filter.c`. The vulnerability is triggered when `ImageFilter.RankFilter` (or its subclasses like `MedianFilter`) is called with a very large filter size (e.g., `2^32 - 1`). The `filter()` method calls `image.expand()` before validating the filter size. In `ImagingExpand`, unchecked signed integer arithmetic causes an overflow when calculating output dimensions, leading to a small buffer allocation followed by a large sequential write loop. Attackers can influence the data written out-of-bounds via the source image pixels. The issue is fixed in version 12.3.0 by validating filter sizes before expansion and hardening `ImagingExpand` against overflows.

Affected products

  • python-pillow Pillow < 12.3.0

Identifiers

  • CVE-2026-59197
  • GHSA-xj96-63gp-2gmr
  • PYSEC-2026-3454

Timeline

  • 2026-07-07: patched: Fix released in version 12.3.0
  • 2026-07-14: advisory: NVD published CVE-2026-59197
  • 2026-07-20: disclosed: GitHub Advisory GHSA-xj96-63gp-2gmr published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.