CVE-2026-112400: Pillow: GIF seek keeps rejected size after DecompressionBombError, allowing DoS
Pillow is a Python imaging library. From 9.2.0 until 13.0.0, Pillow can retain a rejected GIF frame size after a decompression-bomb exception. In GifImageFile.seek, a crafted GIF can leave rejected dimensions stored after Image.DecompressionBombError; if an application catches that exception and continues processing the same image object, later seek or load operations allocate according to those dimensions and can exhaust memory, denying service. This issue is fixed in version 13.0.0.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Pillowto a version that resolves this vulnerability.Fixed in 13.0.0
Event History
Frequently Asked Questions
Which applications are realistically exposed to this denial-of-service issue?
Applications using Pillow versions 9.2.0 through before 13.0.0 that process attacker-controlled GIF files are exposed if they catch Image.DecompressionBombError and then continue using the same image object. The impact is memory exhaustion during later seek or load operations.
Does exploitation require authentication or user interaction?
No. The supplied CVSS vector indicates network-reachable exploitation with low attack complexity, no privileges, and no user interaction. An attacker needs to provide a crafted GIF to a vulnerable processing path.
What should applications do if they cannot immediately upgrade Pillow?
Do not continue processing the same GIF image object after catching Image.DecompressionBombError. Discard the object and fail the processing request, preventing later seek or load operations from allocating based on the rejected dimensions.
How can teams determine whether they are affected?
Check whether the deployed Pillow version is from 9.2.0 through before 13.0.0, and review GIF-processing error handling for code that catches Image.DecompressionBombError and reuses the image object. Pillow 13.0.0 contains the fix.