CVE-2026-84444: libheif uncompressed tiled image encoding allows out-of-bounds write
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.23.2, when WITHUNCOMPRESSEDCODEC is enabled, heifcontextaddimagetile() accepts an independently constructed tile whose component-plane dimensions do not match the tile geometry established by the prototype image. ImageItemuncompressed::addimagetile() passes that tile directly to uncencoder::encodetile(), which lacked the checkcomponentsizes() gate and sizes its output from the configured tile geometry while copying the tile's actual component-plane dimensions. An oversized component plane can therefore make uncencodercomponentinterleave::encodetile() copy attacker-controlled data beyond the heap output buffer. This issue is fixed in version 1.23.2.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
libheifto a version that resolves this vulnerability.Fixed in 1.23.2
Event History
Frequently Asked Questions
Which deployments are exposed?
Deployments using libheif versions earlier than 1.23.2 are affected only when the library is built with WITH_UNCOMPRESSED_CODEC enabled and use the uncompressed tiled image encoding path.
What does an attacker need to exploit this issue?
An attacker needs to cause the application to add an independently constructed image tile with component-plane dimensions larger than the geometry configured by the prototype image. No privileges or user interaction are required according to the provided severity vector.
What is the impact of a successful exploit?
Oversized component planes can cause attacker-controlled data to be copied beyond a heap output buffer during tile encoding. The provided vector rates integrity and availability impact as high, with no confidentiality impact.
How can this be remediated?
Upgrade libheif to version 1.23.2, which adds the missing component-size validation for this path. If upgrading is not immediately possible, avoid enabling WITH_UNCOMPRESSED_CODEC or avoid processing independently constructed tiles through uncompressed tiled encoding.