Description
Pillow is a Python imaging library. From 11.0.0 until 13.0.0, Exif.load() in src/PIL/Image.py repeatedly slices the remaining EXIF data while it begins with the six-byte Exif header. src/PIL/PngImagePlugin.py accepts an uncapped PNG eXIf chunk, so a file filled with repeated headers causes a new shrinking copy on every iteration and quadratic CPU work. The condition is reachable through Image.getexif(), Image._getexif(), and ImageOps.exif_transpose(), including common photo-upload rotation workflows. This issue is fixed in version 13.0.0.
Published: 2026-10-21
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via CPU Exhaustion
Action: Apply Patch
AI Analysis

Impact

Pillow’s EXIF parsing routine processes the PNG eXIf chunk in a way that causes a quadratic‑time copy operation for each repeated Exif header. A crafted PNG containing many header repeats forces the library to copy shrinking chunks repeatedly, resulting in excessive CPU usage and a denial of service. The vulnerability does not provide direct code execution or privilege escalation; its impact is limited to disrupting service availability.

Affected Systems

The flaw affects Python Pillow versions 11.0.0 through 12.x.x, inclusive. All products that depend on these releases for image processing, such as web applications that upload or manipulate PNG files, are potentially impacted.

Risk and Exploitability

The CVSS score of 7.1 reflects a high impact, while the EPSS score of 0.00333 (0.333%) indicates a very low likelihood of exploitation. The flaw is not listed in the CISA KEV catalog. Attackers can exploit the weakness by supplying a malicious PNG file—either via a local file upload, a remote web endpoint, or any automated image ingestion process that uses Pillow’s EXIF handling. The likely attack vector is through application‑level image upload workflows where end users submit pictures.

Generated by OpenCVE AI on October 22, 2026 at 15:59 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Pillow to version 13.0.0 or later, which contains the fix.
  • If upgrading is not immediately possible, apply the patch commit 806e38381c781f32bbd22f4cd026678acd40fd6c to your current Pillow installation.
  • Implement input validation to reject or truncate PNG eXIf chunks that exceed reasonable sizes before processing with Pillow to mitigate the CPU exhaustion risk.

Generated by OpenCVE AI on October 22, 2026 at 15:59 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g4qv-2jxx-769h Pillow: PNG eXIf chunk makes EXIF parsing run in quadratic time
History

Tue, 27 Oct 2026 14:45: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
Metrics cvssV3_1

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

cvssV3_1

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


Fri, 23 Oct 2026 22:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Thu, 22 Oct 2026 12:30:00 +0000

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

None

cvssV3_1

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

threat_severity

Important


Thu, 22 Oct 2026 04:45:00 +0000

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

Wed, 21 Oct 2026 21:00:00 +0000

Type Values Removed Values Added
Description Pillow is a Python imaging library. From 11.0.0 until 13.0.0, Exif.load() in src/PIL/Image.py repeatedly slices the remaining EXIF data while it begins with the six-byte Exif header. src/PIL/PngImagePlugin.py accepts an uncapped PNG eXIf chunk, so a file filled with repeated headers causes a new shrinking copy on every iteration and quadratic CPU work. The condition is reachable through Image.getexif(), Image._getexif(), and ImageOps.exif_transpose(), including common photo-upload rotation workflows. This issue is fixed in version 13.0.0.
Title Pillow: PNG eXIf chunk makes EXIF parsing run in quadratic time
Weaknesses CWE-407
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/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-23T21:19:12.901Z

Reserved: 2026-09-23T14:35:50.130Z

Link: CVE-2026-96643

cve-icon Vulnrichment

Updated: 2026-10-23T17:32:49.817Z

cve-icon NVD

Status : Analyzed

Published: 2026-10-21T21:20:32.797

Modified: 2026-10-27T14:26:51.563

Link: CVE-2026-96643

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-21T20:56:26Z

Links: CVE-2026-96643 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T16:00:11Z

Weaknesses
  • CWE-407

    Inefficient Algorithmic Complexity

  • CWE-606

    Unchecked Input for Loop Condition