Ad · Leaderboard 728×90

CVE-2026-112897

8.7High

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

8.7High
Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None
Impact
High impact on confidentiality
Weakness
CWE-908

Impact

Remote attackers can read uninitialized heap memory by submitting crafted TIFF images to services that parse and return or re-encode them. They need only the ability to supply an image file to an affected endpoint.

Root cause

Pillow fails to zero out unwritten tail bytes in decode buffers after short decodes by libtiff, leaking residual heap data into the resulting pixel output.

Affected systems

Pillow 5.3.0 through 12.x (before 13.0.0)

CVSS v4.0 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/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 later. If upgrading immediately is not possible, block or reject untrusted TIFF uploads at your application ingress.

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 5.3.0 until 13.0.0, Pillow can return uninitialized memory as pixels when libtiff performs a short decode of JPEG-compressed or Group 4 fax TIFF data. The _decodeStrip and _decodeTile buffers can be larger than the bytes written by libtiff, but Pillow converts the expected rows without clearing the unwritten tail. The tile path is affected from 5.3.0 and the strip path from 6.0.0. An attacker can supply a crafted TIFF to an application that loads and returns or re-encodes its pixels. This can disclose stale heap contents without memory corruption or a process crash. This issue is fixed in version 13.0.0.

References

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

Ad · Sticky 320×50 / 728×90