Cloudanix VulnDB

CVE-2026-96636

Medium · 6.5

CVSS

6.5

EPSS

0.3%

Published

Oct 21, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in a popular Python image library lets attackers send specially made picture files that can crash or slow down programs by using up all available memory.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

MpoImageFile.seek() and DcxImageFile.seek() reparse later MPO or DCX frames and replace self._size without rerunning Image._decompression_bomb_check(), allowing a crafted multi-frame image to bypass the initial size check and allocate hundreds of megabytes or more during normal iteration via seek(), load(), or ImageSequence.Iterator.

Why it matters to the business

Attackers can trigger memory exhaustion in any application processing untrusted multi-frame MPO or DCX images, leading to denial of service, application crashes, or resource starvation with minimal attacker effort; the issue affects a widely used Python imaging library released four days ago with stable low exploit probability and no known ransomware use.

How an attack unfolds

An attacker crafts a multi-frame image where the first frame is tiny enough to pass Image.open() decompression checks but a subsequent frame declares dimensions that exceed limits; when the victim application iterates frames using seek(), load(), or standard iterators, the library decodes the oversized frame without re-checking, exhausting memory and causing denial of service.

How to fix it

Upgrade Pillow to version 13.0.0 or later in all environments; after upgrade, re-test any image-handling code paths that process MPO or DCX files to confirm the decompression bomb check now runs on every frame.

How to confirm the fix worked

Verify installed Pillow version is 13.0.0 or newer; attempt to open and iterate a test multi-frame image containing an oversized later frame and confirm memory usage remains bounded or an explicit decompression bomb error is raised.

Typical attack path

  1. Craft a multi-frame MPO or DCX image with a small first frame and an oversized later frame
  2. Deliver the image to a target application that uses Pillow to open and iterate frames
  3. Trigger frame iteration through seek(), load(), or ImageSequence.Iterator
  4. Observe memory exhaustion and denial of service on the target process

How to detect it

Review application logs and system metrics for sudden spikes in memory usage correlated with image-processing Python processes; search for any custom image-handling code that catches decompression-bomb exceptions and inspect recent changes around MPO or DCX handling.

What your security team should do

  • Immediately inventory all applications using Pillow and schedule upgrade to 13.0.0
  • Prioritize upgrade for any public-facing or untrusted-image processing services given the four-day-old disclosure
  • Add runtime memory and CPU limits around image-processing workers as a temporary control
  • Monitor EPSS and exploit maturity for any upward trend before relaxing other mitigations

The record

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.

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities