Ad · Leaderboard 728×90

CVE-2026-112404

8.8High

Published 19 Oct 2026 · NVD status: Received · AI triage by gemini-3.8-flash

8.8High
Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None
Impact
High impact on availability
Weakness
CWE-126

Impact

Remote attackers can crash your service or leak heap memory into rendered image outputs by supplying a crafted TIFF file without authentication.

Root cause

The TIFF tile and RGBA decoding paths fail to verify that the required input row fits within the buffer provided by libtiff when handling duplicated PhotometricInterpretation or BitsPerSample tags, causing an out-of-bounds heap read.

Affected systems

Pillow 8.1.0 through versions prior to 13.0.0

CVSS v4.0 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

Fix & remediation

Upgrade Pillow to version 13.0.0 or higher. If upgrading must wait, reject or avoid decoding untrusted TIFF images using tile or RGBA paths.

shell
$ pip install --upgrade 'Pillow>=13.0.0'

AI-suggested. Run it in staging first and check it against the vendor advisory. Why?

Ad · In-content banner

NVD description

Pillow is a Python imaging library. From 8.1.0 until 13.0.0, Pillow's TIFF tile and RGBA decode paths can read beyond row data produced by libtiff. In _decodeTile and the RGBA unpacker path, when Pillow and libtiff interpret duplicated PhotometricInterpretation or BitsPerSample tags differently, Pillow does not verify that the required input row fits inside the row libtiff produced, while the strip path has this validation. Loading pixels from such a crafted TIFF can expose adjacent heap data in output pixels or crash the process. This issue is fixed in version 13.0.0.

References

Source: nvd.nist.gov/vuln/detail/CVE-2026-112404

Ad · Sticky 320×50 / 728×90