Description
Pillow is a Python imaging library. Prior to 13.0.0, SpiderImageFile.seek() in src/PIL/SpiderImagePlugin.py reparses a later SPIDER stack frame and replaces self._size without rerunning Image._decompression_bomb_check(). A tiny file can use a safe first frame to pass Image.open() and then declare very large dimensions in a later mode F frame. Loading that frame allocates approximately four bytes per attacker-declared pixel and can consume multiple gigabytes of memory. 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 (Memory Exhaustion)
Action: Patch
AI Analysis

Impact

Pillow’s SpiderImageFile.seek() function can reinterpret a later frame in a SPIDER image and set the reported size without re‑executing the decompression‑bomb check. A malicious image can first pass validation with a small safe frame, then declare an enormous width and height in a later frame. When that oversized frame is decoded, Pillow allocates roughly four bytes for each declared pixel, allowing an attacker to consume multiple gigabytes of memory and trigger a memory‑exhaustion DoS. The underlying weakness is reflected in CWE-400 and CWE-409.

Affected Systems

All Python Pillow installations prior to version 13.0.0 are affected. This includes every Pillow release distributed before the 13.0.0 tag; no specific sub‑versions are listed in the advisory beyond the overall cutoff.

Risk and Exploitability

The CVSS score of 7.1 indicates a high impact. The exploit probability (EPSS) is not available, and the vulnerability is not in CISA’s KEV catalog. Exploitation requires the attacker to supply a crafted image file to any application that imports or uses Pillow to open or process files. The attack vector is therefore likely remote in contexts where untrusted images are handled, such as web applications or email clients that use Pillow. Once the malicious frame is processed, the program will consume a large amount of memory and eventually fail, causing a service outage.

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

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update Pillow to version 13.0.0 or later, which removes the decompression‑bomb bypass in SpiderImagePlugin.seek()
  • Restrict or filter the size of images processed by Pillow, rejecting any with dimensions that exceed a safe threshold
  • Deploy monitoring or rate‑limiting on image processing workflows to detect and prevent sudden memory spikes or prolonged processing times

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

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g842-9rc4-69pw Pillow: Decompression bomb check bypass in SpiderImagePlugin.seek() leads to unbounded allocation DoS
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

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
References
Metrics threat_severity

None

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'}

threat_severity

Moderate


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:15:00 +0000

Type Values Removed Values Added
Description Pillow is a Python imaging library. Prior to 13.0.0, SpiderImageFile.seek() in src/PIL/SpiderImagePlugin.py reparses a later SPIDER stack frame and replaces self._size without rerunning Image._decompression_bomb_check(). A tiny file can use a safe first frame to pass Image.open() and then declare very large dimensions in a later mode F frame. Loading that frame allocates approximately four bytes per attacker-declared pixel and can consume multiple gigabytes of memory. This issue is fixed in version 13.0.0.
Title Pillow: Decompression bomb check bypass in SpiderImagePlugin.seek() leads to unbounded allocation DoS
Weaknesses CWE-400
CWE-409
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:18:59.858Z

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

Link: CVE-2026-96637

cve-icon Vulnrichment

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

cve-icon NVD

Status : Analyzed

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

Modified: 2026-10-27T14:24:56.513

Link: CVE-2026-96637

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-21T21:01:20Z

Links: CVE-2026-96637 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T06:00:14Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-409

    Improper Handling of Highly Compressed Data (Data Amplification)