GitHub Advisoryadvisory · PyPI

GHSA-gg2r-wvfm-q9rx Pillow: MSP RLE decoder expands a tiny file into unbounded memory

HIGH Published 2026-10-21 Modified 2026-10-21 Official page ↗
Aliases
CVE-2026-112892
Ecosystem
PyPI
Packages
pillow
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Weaknesses
CWE-409
Reviewed
2026-10-21

Affected packages

• PyPI pillow: >= 4.1.0, < 13.0.0 → fixed in 13.0.0

Description

Summary The MSP RLE decoder expands run-length data into an in-memory buffer with no cap tied to the declared image size. A small file that passes the pixel-count check can force hundreds of megabytes or more of allocation when the application loads pixels. Details The MSP decoder writes each run into an unbounded `io.BytesIO` and can expand roughly 85x per run: • `src/PIL/MspImagePlugin.py:144-146` Impact Memory-exhaustion denial of service from a tiny crafted image in any application that loads pixels. The expansion is decoupled from the declared pixel count, so `MAX_IMAGE_PIXELS` does not bound it.

Related

Alias · CVE (1)

Weakness · CWE (1)

  • CWE-409 Improper Handling of Highly Compressed Data (Data Amplification) weakness

References