HIGHCVSS v4 8.7Vulnerability

CVE-2026-128066

``` ============================================================================ ANT-2026-D7STJUWL [medium] CWE-770 dos Memory DoS in TIFF and EXIF IFD parsing via overlapping tag data Location: src/PIL/TiffImagePlugin.py:927 in ImageFileDirectory_v2.load() Commit: a707c6b21c313880d0771e54965d142dd42358b6 ============================================================================ ``` A small, crafted image file can make Pillow use thousands of times its own size in memory while the file is only being opened, which lets anyone who can submit an image crash or stall the process handling it. A 144 KB TIFF makes `Image.open()` return normally while holding 1.6 GiB of memory. The largest such standard TIFF, about 786 KB, asks for roughly 48 GiB, which in practice gets the worker killed by the operating system. The file declares a 1×1 image, so the decompression-bomb check never triggers and no warning is raised. There is no memory corruption; the impact is denial of service. The bug is in `ImageFileDirectory_v2.load()` in `src/PIL/TiffImagePlugin.py` (around line 927). For every directory entry whose value is stored elsewhere in the file, it reads that value into a new `bytes` object with `ImageFile._safe_read(fp, count * unit_size)` and keeps it in `_tagdata`. `_safe_read()` only checks that the bytes exist. Nothing limits the total read across entries, and nothing stops every entry from pointing at the same bytes. An attacker can therefore give each of N distinct private tags an offset and count that covers the whole file, at a cost of 12 bytes per entry. Memory grows as N × file size, which is quadratic in the file size, and BigTIFF removes the 65,535-entry ceiling. The same loop parses EXIF data, so the problem reaches beyond TIFF: * A 66 KB JPEG APP1 segment costs about 340 MiB inside `Image.open()` itself, via `_read_dpi_from_exif()`. * A 96 KB PNG `eXIf` chunk costs 754 MiB on `getexif()` or `ImageOps.exif_transpose()`. * WebP EXIF and MPO reach the sam

Properties

Severity
medium
Summary
Pillow: Memory DoS in TIFF and EXIF IFD parsing via overlapping tag data
Nvd fetched at
2026-11-14T00:40:25.638091+00:00
Epss score
0.00377
Cvss severity
HIGH
Cvss score
8.7
Retrieved at
2026-11-14T00:51:03+00:00
Ghsa published
2026-11-12T23:35:39Z
Source url
https://github.com/advisories/GHSA-wqgw-9xfh-qf2g
Ghsa updated
2026-11-12T23:35:40Z
Ghsa id
GHSA-wqgw-9xfh-qf2g
Last source
FIRST EPSS
Score
8.7
Cvss version
4.0
Cve id
CVE-2026-128066
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/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
First seen by Signal
2026-11-13T00:03:27+00:00
Name
CVE-2026-128066
Is ghsa only
false
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/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

Related Entities (3)

AFFECTS (1)

→[Software]pip/Pillow

VULNERABLE_TO (1)

←[Software]pip/Pillow

Related research

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-128066 (CVSS v4 8.7) — Ninja Signal Threat Intelligence | Ninja Signal