Bug 2531414 (CVE-2026-18495) - CVE-2026-18495 libtiff: libtiff: heap-buffer overflow via numeric truncation in the JPEG raw passthrough
Summary: CVE-2026-18495 libtiff: libtiff: heap-buffer overflow via numeric truncation ...
Keywords:
Status: NEW
Alias: CVE-2026-18495
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-10 12:33 UTC by OSIDB Bzimport
Modified: 2026-09-11 15:54 UTC (History)
12 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-09-10 12:33:02 UTC
An AddressSanitizer (ASan)-confirmed heap-buffer overflow exists in the tiff2pdf
utility of libtiff (tested on version 4.5.0). The vulnerability is triggered
during the processing of crafted BigTIFF files, leading to a massive
out-of-bounds memory copy that causes a crash and presents a severe memory
corruption risk.

Technical Details

The root cause is an integer truncation flaw located in the JPEG raw passthrough
path within tools/tiff2pdf.c, specifically in the t2p_readwrite_pdf_image()
function.When parsing BigTIFF files, StripByteCounts values are correctly read
as 64-bit unsigned integers (uint64_t). However, the variable used to track the
maximum strip length—max_striplength—is declared as a 32-bit unsigned integer
(uint32_t). If an attacker provides a crafted BigTIFF file with a
StripByteCounts value exceeding the 32-bit limit, the value is truncated upon
assignment to max_striplength.This truncation results in an undersized heap
allocation. Subsequently, TIFFReadRawStrip(..., -1) attempts to copy the full
64-bit strip byte count into this inadequate buffer, resulting in a heap-based
buffer overflow that can exceed 4GB.

Affected VersionsVulnerable:

libtiff versions 3.9.0 through 4.7.0.

Fixed: libtiff version 4.7.1.

Upstream Status and RemediationUpstream developers have addressed this issue in
version 4.7.1 by changing the data type of max_striplength from uint32_t to
uint64_t.

Note for Downstream Maintainers: The upstream libtiff project policy focuses on
maintaining the current source tree and issuing new releases rather than
backporting patches to legacy versions.

Commit: https://gitlab.com/libtiff/libtiff/-/commit/67fd283d276f09db54dc39b9ef7b979d4b45c4b1Merge
Request (!729): https://gitlab.com/libtiff/libtiff/-/merge_requests/729


Note You need to log in before you can comment on or make changes to this bug.