Cloudanix VulnDB

CVE-2026-96644

High · 8.1

CVSS

8.1

EPSS

0.4%

Published

Oct 21, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in a popular Python picture library on Windows lets specially made image files cause the program to read memory it shouldn't, which can make the program crash or leak information.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Low
Impact
Data Exposure
Component
Library
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

On Windows, unchecked 32-bit WMF/EMF dimensions in WmfImagePlugin.py are passed to drawwmf in display.c; the DIB allocation uses 16-bit-truncated bcWidth/bcHeight while pixel copy uses full dimensions, enabling out-of-bounds heap read.

Why it matters to the business

Applications processing untrusted images on Windows may crash or leak memory; low but non-zero exploitability on widely used Python imaging code increases operational risk for image-handling services.

How an attack unfolds

An attacker crafts a wide but short WMF/EMF metafile that bypasses the pixel-count decompression check, supplies it to a vulnerable Pillow installation on Windows, and triggers the native handler to read beyond the allocated DIB buffer.

How to fix it

Upgrade Pillow to version 13.0.0 or later on all Windows deployments; avoid processing untrusted WMF/EMF files until patched.

How to confirm the fix worked

Confirm Pillow version >= 13.0.0 is installed; test rendering of known-bad metafiles to verify no crash or memory disclosure occurs.

Typical attack path

  1. Craft a malicious WMF or EMF file with mismatched 32-bit and truncated 16-bit dimensions
  2. Deliver the file to a target application using Pillow < 13.0.0 on Windows for image processing
  3. Trigger rendering path through WmfImagePlugin.py into drawwmf
  4. Induce out-of-bounds read to crash the process or disclose heap memory

How to detect it

Review application logs for unexpected crashes or errors during WMF/EMF image rendering; inspect Python process memory dumps or heap artifacts after processing suspicious image files.

What your security team should do

  • Prioritize upgrade of Pillow to 13.0.0 on Windows systems within the next patch cycle
  • Restrict or sandbox image processing of WMF/EMF formats from untrusted sources
  • Monitor EPSS trend and any future exploit publications given recent publication

The record

Pillow is a Python imaging library. Prior to 13.0.0 on Windows, src/PIL/WmfImagePlugin.py passes unchecked 32-bit WMF or EMF dimensions to the native drawwmf handler in src/display.c. The handler sizes a DIB allocation from 16-bit-truncated bcWidth and bcHeight fields but copies pixel data using the original full dimensions. A crafted wide, short metafile can pass the pixel-count decompression-bomb check and make the Windows-only renderer read beyond the heap buffer, potentially disclosing memory or crashing the process. This issue is fixed in version 13.0.0.

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities