Description
Pillow is a Python imaging library. Prior to 13.0.0, MpoImageFile.seek() and DcxImageFile.seek() reparse later MPO or DCX frames and replace self._size without rerunning Image._decompression_bomb_check(). A crafted multi-frame image can use a tiny first frame to pass Image.open() and then declare an over-limit later frame. Normal frame iteration through seek(), load(), or ImageSequence.Iterator can decode that frame and commit hundreds of megabytes or more, causing memory-exhaustion denial of service. This issue is fixed in version 13.0.0.
Published: 2026-10-21
Score: 6.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

Impact

The Pillow library enabled processing of MPO and DCX image formats. Prior to version 13.0.0, the seek methods re‑parsed subsequent frames and replaced the internal size value without re‑executing the library’s decompression‑bomb check. An attacker can craft a multi‑frame image with a small first frame that passes the initial open, then include a later frame whose declared size exceeds the safe‑limit. Iterating over that frame can consume hundreds of megabytes of memory, leading to a denial of service. This weakness is classified as an uncontrolled resource consumption vulnerability (CWE‑400) and improper frame size handling (CWE‑409).

Affected Systems

Users employing the python-pillow Pillow library with any release older than 13.0.0 are potentially exposed. The deficiency exists in the MpoImageFile.seek and DcxImageFile.seek methods used to read MPO (multi-picture object) and DCX (digital camera eXtended) files. The fix is delivered in Pillow version 13.0.0 and later.

Risk and Exploitability

The CVSS score of 6.5 indicates moderate severity, and the vulnerability is not listed in the CISA KEV catalog. Because the EPSS score is unavailable, the likelihood of exploitation remains unknown. The vulnerability permits an attacker to supply a maliciously crafted MPO or DCX image that contains a small initial frame followed by a frame whose declared size exceeds the decompression‑bomb check. When Pillow processes the larger frame via seek(), load(), or ImageSequence.Iterator, it may allocate hundreds of megabytes, leading to a memory‑exhaustion denial of service. The impact is loss of availability for any application using Pillow to handle untrusted images.

Generated by OpenCVE AI on October 22, 2026 at 06:40 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Pillow library to version 13.0.0 or newer to apply the fixed seek behavior.
  • Avoid using MpoImageFile.seek or DcxImageFile.seek on untrusted or user‑supplied images; instead validate frame sizes or use a sandboxed image processing routine.
  • Implement resource limits and monitor memory usage when handling images to detect and mitigate unexpected spikes.

Generated by OpenCVE AI on October 22, 2026 at 06:40 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-p8hx-v2p6-rp84 Pillow: Decompression-bomb protection bypass via multi-frame seek() in MPO and DCX (MpoImageFile.seek / DcxImageFile.seek)
History

Fri, 30 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Tue, 27 Oct 2026 14:30: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

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

Type Values Removed Values Added
References
Metrics threat_severity

None

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, MpoImageFile.seek() and DcxImageFile.seek() reparse later MPO or DCX frames and replace self._size without rerunning Image._decompression_bomb_check(). A crafted multi-frame image can use a tiny first frame to pass Image.open() and then declare an over-limit later frame. Normal frame iteration through seek(), load(), or ImageSequence.Iterator can decode that frame and commit hundreds of megabytes or more, causing memory-exhaustion denial of service. This issue is fixed in version 13.0.0.
Title Pillow: Decompression-bomb protection bypass via multi-frame seek() in MPO and DCX (MpoImageFile.seek / DcxImageFile.seek)
Weaknesses CWE-400
CWE-409
References
Metrics 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'}


Subscriptions

Python Pillow
Python-pillow Pillow
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T16:08:33.388Z

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

Link: CVE-2026-96636

cve-icon Vulnrichment

Updated: 2026-10-30T16:08:09.467Z

cve-icon NVD

Status : Modified

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

Modified: 2026-10-30T17:17:32.103

Link: CVE-2026-96636

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-96636 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T06:45:17Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-409

    Improper Handling of Highly Compressed Data (Data Amplification)