Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply oversized RGB image dimensions to encoder API
-
DeliveryAllocate huge interleaved plane, overflow uint32_t stride
-
ExploitConversion loop computes invalid input pointer
-
ExecutionOut-of-bounds read beyond plane during RGB-to-YCbCr
-
ImpactEncoding process crashes (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the application to use libheif's ENCODE path - specifically constructing an image via heif_image_create() and heif_image_add_plane() with extremely large RGB dimensions, then invoking heif_context_encode_image() to perform RGB-to-YCbCr conversion in libheif/color-conversion/rgb2yuv.cc. The stride must be large enough to overflow a 32-bit integer, meaning a genuinely huge image plane must be allocated first. Exploitation is LIMITED to versions prior to 1.19.6, to deployments that expose encoding of caller/attacker-influenced image dimensions, and by the impact being a process crash only (no code execution or data disclosure). Pure decode/file-parsing workflows are not affected. |
| Impact | This is a genuinely low-priority issue, and the signals are consistent rather than conflicting. The vendor CVSS of 3.7 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L) reflects a pure availability impact (a crash of the encoding process) with high attack complexity. There is no EPSS score, no CISA KEV listing, and no public exploit code - exploitation status is 'no public exploit identified at time of analysis.' The most important nuance is that AV:N overstates real-world exposure: the overflow is triggered on the ENCODE path via image dimensions supplied programmatically through heif_image_create()/heif_image_add_plane(), not by parsing an attacker-supplied HEIF/AVIF file. The wrapped uint32_t stride only occurs for 'extremely large RGB images,' which additionally requires allocating an enormous interleaved plane - a self-inflicted or degenerate-input condition more than a remote weaponizable bug. In short: a real but marginal robustness defect, not a security priority. No key data is missing; the source-code diff (uint32_t→size_t stride widening) directly corroborates the CWE-190 integer-overflow root cause. |
| Exploit ScenarioDerived | An application using libheif's encoder accepts caller-controlled image dimensions and constructs a very large RGB image via heif_image_create()/heif_image_add_plane(), then calls heif_context_encode_image(). During RGB-to-YCbCr conversion the uint32_t stride overflows, producing an invalid input pointer that reads beyond the allocated plane and crashes the process. No public PoC exists, and the extreme image-size requirement plus high complexity make practical exploitation unlikely beyond a targeted denial-of-service against a service that lets untrusted users dictate encode dimensions. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
An integer-overflow flaw in libheif's RGB-to-YCbCr conversion path (libheif/color-conversion/rgb2yuv.cc) can crash an application that encodes extremely large RGB images constructed via heif_image_create() and heif_image_add_plane() before calling heif_context_encode_image(); a 32-bit stride field wraps, so the conversion loop computes an invalid input pointer and reads past the end of the allocated interleaved plane. Affected deployments are those running libheif versions prior to 1.19.6 that expose the ENCODE path to caller- or attacker-influenced image dimensions - pure decode/parsing workflows are not affected. Impact is limited to process termination (no code execution, no data disclosure), and no public exploit code was identified at time of analysis.
RemediationAI
Vendor-released patch: 1.19.6 - upgrade to libheif 1.19.6 (https://github.com/strukturag/libheif/releases/tag/v1.19.6) using the guidance in advisory GHSA-2c3g-p585-8rpq; note that commit e29953da30eb11aa1762df0bff3b36be4b22fbe3 changes public API signatures from uint32_t* to size_t* for the plane and channel stride out-parameters, so dependent applications must be recompiled against the new headers rather than simply relinked with the updated shared library, or they may silently misread stride values and corrupt memory. Where immediate upgrading is not possible, the practical compensating control is to bound the problem at the application layer: clamp or reject RGB image dimensions, widths, and computed strides before calling heif_image_add_plane()/heif_context_encode_image(), capping total plane size well below the 4 GiB region where a 32-bit stride can wrap - the trade-off is that legitimate very-large-image encoding is refused or downscaled. Additionally, restrict the encode entry point to trusted callers (do not let low-privileged tenants or remote users control image dimensions in services that wrap libheif), and consider running encode jobs with per-process memory limits and a supervision model that tolerates an aborted worker, since the residual worst case is a crash of the encoding process rather than code execution or data leakage. No public exploit code was identified at time of analysis, and there is no CISA KEV listing for this CVE.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
libheif is the reference HEIF and AVIF image decoder/encoder library used by a wide range of applications and language bindings. The flaw is CWE-190 (Integer Overflow or Wraparound) rooted in the public API contract: the plane-accessor functions exposed through heif.h and heif_experimental.h (heif_image_get_plane, heif_image_get_plane_readonly, and the heif_image_get_channel_* variants) reported the image stride through a uint32_t* out_stride parameter. Inside Op_RGB24_32_to_YCbCr::convert_colorspace(), that narrow stride is multiplied by large y coordinates during RGB24/32-to-YCbCr conversion, so an extremely large plane created with heif_image_add_plane() produces a stride value that wraps, and the conversion loop then indexes beyond the allocated interleaved plane. The upstream fix (commit e29953da30eb11aa1762df0bff3b36be4b22fbe3, released as v1.19.6) widens the stride type from uint32_t to size_t throughout the API and adds an in-header TODO acknowledging that the stride parameter should be size_t to avoid this class of multiplication overflow. Note the patch changes public API signatures, so downstream consumers must be recompiled rather than only relinked. The corresponding CPE is cpe:2.3:a:strukturag:libheif:*:*:*:*:*:*:*:*, and the vendor's own GHSA-2c3g-p585-8rpq advisory classifies the issue as a denial-of-service in the encoder. The authoritative independent assessment rates this CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L - a local, low-privilege, high-complexity, availability-only issue - rather than the AV:N/PR:N framing in the mechanical description scoring, because exploitation requires the host application to already be driving the encode API with attacker- or caller-influenced huge RGB dimensions.
Know when Libheif gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
Dimensions are supplied through the local encoder API rather than a parsed file, so AV:L/PR:L; the huge-image precondition keeps AC:H, and impact is a crash only (A:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
libheif v1.17.5 was discovered to contain a segmentation violation via the function UncompressedImageCodec::get_luma_bit
libheif v1.17.5 was discovered to contain a segmentation violation via the function find_exif_tag at /libheif/exif.cc. R
libheif v1.17.5 was discovered to contain a segmentation violation via the component /libheif/exif.cc. Rated high severi
libheif v1.17.5 was discovered to contain a segmentation violation via the function UncompressedImageCodec::decode_uncom
libheif 1.4.0 has a use-after-free in heif::HeifContext::Image::set_alpha_channel in heif_context.h because heif_context
In Libheif 1.17.6, insufficient checks in ImageOverlay::parse() decoding a heif file containing an overlay image with fo
libheif <= 1.17.6 contains a memory leak in the function JpegEncoder::Encode. Rated high severity (CVSS 7.5), this vulne
Out-of-bounds read in libheif's HEIF/HEIC overlay processing can disclose limited memory contents and crash affected app
A Segmentation fault caused by a floating point exception exists in libheif 1.15.1 using crafted heif images via the hei
Buffer Overflow vulnerability in libheif 1.19.7 allows a local attacker to execute arbitrary code via the SAO (Sample Ad
Heap-based buffer overflow in libheif before 1.23.2 allows remote attackers to corrupt memory and potentially achieve co
Heap buffer overflow write in libheif (versions ≤ 1.21.2) lets a crafted HEIF/AVIF file write 64 bytes of attacker-contr
EUVD-2026-83025
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB