Skip to main content

Pillow CVE-2026-96638

| EUVDEUVD-2026-107559 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
6.5
CVSS 3.1 · Vendor
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Upload crafted RLE BMP to image handler
  2. Exploit
    Pillow BMP decoder expands run-length data
  3. Execution
    Memory allocation amplifies beyond host limits
  4. Impact
    Process OOM-crash denies service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the target application to decode an attacker-supplied, RLE-compressed BMP image (BI_RLE4/BI_RLE8) using Pillow prior to 13.0.0 - this is the exact precondition: the image-processing pipeline must accept untrusted BMP input and invoke the BMP decoder. Limiting factors that reduce real-world risk: impact is confined to availability (no code execution, no information disclosure); the attacker must have a path to deliver the image into the decode routine (e.g., an upload endpoint, avatar/thumbnail service, or document-processing job); and applications that restrict accepted formats, cap decode memory/image dimensions (e.g., via MAX_IMAGE_PIXELS or external resource limits), or run decoding in sandboxed/resource-capped workers blunt or contain the DoS.

Impact

No CVSS score or vector was provided by any source (NVD, vendor, or oss-security all list CVSS as N/A), so severity signals rest solely on the Pillow project's own qualitative bucket, which rates CVE-2026-96638 as Medium. There is no EPSS score, no CISA KEV listing, and no public proof-of-concept referenced - exploitation status is therefore 'no public exploit identified at time of analysis'. The vulnerability is a BMP RLE decoder memory-amplification denial of service: a tiny crafted file expands into unbounded memory during decode, which is an availability-only issue with no confidentiality or integrity impact. My independent assessment (AV:N/AC:L/PR:N/UI:N/A:H = 7.5) scores higher than the vendor's Medium bucket because any service that decodes untrusted BMPs can be crashed by a small input; the gap likely reflects that vendor triage weighs the bounded, recoverable nature of a single OOM event rather than raw network reachability. This is a real but second-tier priority: trivially triggerable where untrusted image decoding is exposed, yet it yields only resource exhaustion, not code execution or data theft. Note the conflict to resolve with the vendor: whether a single crafted file fully exhausts host memory (A:H) or merely degrades a worker (A:L) is not quantified in the sources.

Exploit ScenarioDerived

An attacker submits a small, specially crafted RLE-compressed BMP to any service that uses Pillow (<13.0.0) to decode, thumbnail, or transcode user-supplied images. During RLE decoding the run-length data amplifies into a far larger pixel buffer, exhausting available memory and crashing or hanging the worker process. No public proof-of-concept is referenced in the provided sources.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Memory-amplification denial of service in Pillow's BMP RLE decoder (BI_RLE4/BI_RLE8) allows unauthenticated remote attackers to exhaust memory by delivering a small crafted BMP to any image pipeline that processes untrusted files with Pillow before 13.0.0. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, so impact is limited to availability with no code execution or information disclosure; the Pillow project classifies this issue as Medium severity. No public exploit code was identified at time of analysis, and exploitation requires the application to actually route attacker-supplied BMP data into Pillow's decoder.

RemediationAI

Upgrade to Pillow 13.0.0, the vendor-released version containing the fix, per the 13.0.0 release notes at https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html and the oss-security advisory at https://seclists.org/oss-sec/2026/q4/295. If immediate upgrade is not possible, restrict the decoding pipeline to an explicit image-format allowlist that excludes BMP, or reject BMP files whose header declares BI_RLE4/BI_RLE8 compression before Pillow decodes them, accepting that legitimate RLE-BMP workflows will break. In addition, enforce hard per-process memory limits (for example cgroups or RLIMIT_AS) and decode timeouts around Pillow workers, and cap declared image dimensions before decoding; MAX_IMAGE_PIXELS alone does not necessarily bound RLE run handling, so pair it with a hard memory ceiling. Running image decoding in a sandboxed, resource-capped worker process contains the impact at the cost of additional infrastructure complexity and reduced throughput.

Affected VersionsENISA

Pillow 9.1.0, < 13.0.0

Affected Packages

pypi pillow fix: 13.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Pillow's BMP plugin supports run-length-encoded BMP variants (BI_RLE4 and BI_RLE8), in which pixel data is stored as compact run descriptors rather than a raw pixel array. The decoder expands those runs into decoded image data, and a very small RLE stream can force allocation or per-run bookkeeping disproportionate to the input file size, producing memory amplification and eventual denial of service. The root cause falls in the resource-consumption/allocation-handling class; no CWE or official CVSS was supplied in the source data, so the AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H vector reflects our independent assessment. This CVE is one entry in a broad Pillow 13.0.0 security release that also addresses JPEG, TIFF, PDF, WMF/EMF, GIF, and other decoder issues; CVE-2026-96638 specifically concerns the BMP RLE path (GHSA-24rc-8hj2-v98c).

Know when Pillow gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (CNA) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Crafted image is attacker-controlled input processed automatically, so AV:N/AC:L/PR:N/UI:N; memory amplification yields availability-only impact, hence C:N/I:N/A:H and scope unchanged.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (CNA).

CVSS VectorVendor

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

3
Patch available
Oct 21, 2026 - 22:03 EUVD
CVSS changed
Oct 21, 2026 - 21:23 NVD
6.5 (MEDIUM)
CVE Published
Oct 21, 2026 - 19:14 oss-security
HIGH

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 62 pypi packages depend on pillow (58 direct, 4 indirect)

Ecosystem-wide dependent count for version 9.1.0.

Executive ViewAI

Why It Matters

Pillow's BMP RLE decoder, widely embedded in image-upload and media-processing pipelines, can be forced to exhaust server memory with a small crafted file, and no vendor patch has been released. Any service running Pillow before 13.0.0 that accepts untrusted BMPs is exposed to unauthenticated availability attacks that could take image processing or dependent services offline, although there is no code execution or data disclosure. Leadership should care because ordinary user-supplied input can cause service disruption, and no public exploit identified at time of analysis does not remove the need for near-term containment.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include enforcing strict memory and CPU quotas on image-processing workers, rejecting or transcoding BMP files at ingress, capping upload sizes, sandboxing Pillow in isolated containers, applying rate limiting, and monitoring for abnormal memory growth in image pipelines.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
High
dominant Python imaging library embedded in countless web and backend apps
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Pillow

View all
CVE-2022-30595 CRITICAL POC
9.8 May 25

libImaging/TgaRleDecode.c in Pillow 9.1.0 has a heap buffer overflow in the processing of invalid TGA image files. Rated

CVE-2026-59204 HIGH POC
8.7 Jul 14

Denial of service in Python Pillow (versions 8.2.0 through 12.2.0) allows remote attackers to exhaust memory during JPEG

CVE-2026-54058 HIGH POC
8.3 Jul 14

Out-of-bounds memory disclosure in Python Pillow before 12.3.0 lets an attacker who supplies a crafted McIdas AREA image

CVE-2026-59197 HIGH POC
8.2 Jul 14

Heap out-of-bounds write in Python Pillow prior to 12.3.0 lets an attacker who controls the rank-filter size parameter c

CVE-2026-59205 HIGH POC
7.5 Jul 14

Denial-of-service and controlled heap corruption in Python's Pillow imaging library (all versions prior to 12.3.0) occur

CVE-2026-59203 HIGH POC
7.5 Jul 14

Denial of service in Python Pillow 12.0.0 through 12.2.0 lets a remote attacker hang an application by supplying a craft

CVE-2026-59199 HIGH POC
7.5 Jul 14

Denial of service (and potential memory corruption) in Python Pillow before 12.3.0 arises when public image coordinate A

CVE-2026-55379 HIGH POC
7.5 Jul 06

Uncontrolled memory allocation in Python Pillow before 12.3.0 lets a crafted BDF font file exhaust available memory and

CVE-2026-59200 HIGH POC
7.5 Jul 14

Uncontrolled memory consumption in Python Pillow (PIL) versions 5.1.0 through 12.2.x allows a remote attacker to cause d

CVE-2026-55380 HIGH POC
7.5 Jul 06

Denial-of-service via memory exhaustion in Python Pillow before 12.3.0 allows a crafted GD-format (.gd) image to trigger

CVE-2026-54060 HIGH POC
7.5 Jul 06

Uncontrolled memory allocation in Python Pillow before 12.3.0 allows a maliciously crafted font file to trigger excessiv

CVE-2026-54059 HIGH POC
7.5 Jul 06

Uncontrolled memory allocation in the Python Pillow imaging library (all versions prior to 12.3.0) allows a crafted PCF

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy