GitHub Advisoryadvisory · PyPI
GHSA-gg2r-wvfm-q9rx Pillow: MSP RLE decoder expands a tiny file into unbounded memory
HIGH
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)
- CVE-2026-112892 Pillow is a Python imaging library. vulnerability
Weakness · CWE (1)
- CWE-409 Improper Handling of Highly Compressed Data (Data Amplification) weakness
References
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-gg2r-wvfm-q9rx web
- https://nvd.nist.gov/vuln/detail/CVE-2026-112892 advisory
- https://github.com/python-pillow/Pillow/commit/5dcb630b9798efd91929cb873d677aeee6ed0bb3 web
- https://github.com/python-pillow/Pillow package
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0 web