Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft HEIF with nested iden/auxl duplicate Alpha planes
-
DeliveryDeliver file to libheif decoder (upload or open)
-
Exploittransfer_channel_from_image_as attaches duplicate Alpha plane
-
Executionscale_nearest_neighbor writes past undersized plane
-
PersistHeap out-of-bounds write / memory corruption
-
ImpactCrash or potential code execution
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the target to decode an attacker-crafted HEIF/HEIC file whose structure uses nested iden/auxl items to reference DUPLICATE Alpha planes for the same channel - this is the specific trigger that makes transfer_channel_from_image_as() append a second, invisible Alpha plane later over-written by scale_nearest_neighbor(). Reachable in any application or service that decodes untrusted HEIF input via libheif < 1.23.2. Limiting factors: the CVSS UI:N holds only for automated/server-side decode pipelines (e.g., image upload/thumbnail services); interactive viewers effectively require the victim to open the file (UI:R). Fixed in libheif v1.23.2, so exposure is bounded to unpatched versions. |
| Impact | Signals are strong but not fully aligned. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8) treats this as remote, unauthenticated, no-interaction full-impact code execution. That UI:N is only realistic for automated server-side image pipelines (upload thumbnailers, indexers, gallery/CDN transcoders) where libheif decodes attacker-supplied HEIF files with no human in the loop; for the common case of a user opening an image in a viewer, this is effectively UI:R, which would drop the honest score to ~8.8. The root cause is a genuine CWE-787 heap out-of-bounds WRITE (confirmed by the commit diff: a duplicate Alpha plane is silently appended, becomes invisible to find_storage_for_channel()/size queries, but is still walked and written by scale_nearest_neighbor()), so C:H/I:H/A:H is a plausible ceiling - though memory-corruption bugs of this shape are realistically a crash/DoS first and reliable RCE second. No EPSS score, no CISA KEV entry, and no public weaponized exploit are present in the provided data - so this is 'no public exploit identified at time of analysis,' NOT active exploitation, despite the 9.8. A regression unit test (tests/duplicate_alpha_channel.cc) ships with the fix and demonstrates the triggering condition, which lowers the bar for researchers to reproduce it but is not an in-the-wild exploit. Net: treat as a real, high-priority patch item because libheif is broadly embedded and the bug is remotely reachable via file input, but do not over-weight the 9.8 - the no-interaction assumption and the write-primitive-to-RCE gap are the key uncertainties. |
| Exploit ScenarioDerived | An attacker crafts a malicious HEIF/HEIC file whose nested iden/auxl item structure references duplicate Alpha planes, then delivers it to a target that decodes it with libheif < 1.23.2 (e.g., uploads it to a web service that auto-generates thumbnails, or gets a victim to open it in a HEIF-enabled viewer). During decode, transfer_channel_from_image_as() attaches a second, mis-sized Alpha plane that scale_nearest_neighbor() then writes past, corrupting the heap. No public exploit code was identified, but the fix ships with a regression test that reproduces the duplicate-plane condition. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Sep 18, 2026
Heap-based buffer overflow in libheif before 1.23.2 allows remote attackers to corrupt memory and potentially achieve code execution when a crafted HEIF/HEIC image is decoded. The flaw is reached through nested iden/auxl item references that cause a duplicate Alpha plane to be attached to an image on top of an existing, differently-sized plane; the second plane is invisible to size queries but is still written to by scale_nearest_neighbor(), producing an out-of-bounds heap write (CWE-787). The independent assessment rates this as UI:R (interactive viewers require the victim to open the file), while purely automated decode pipelines such as upload/thumbnail services are effectively UI:N; there is confirmed vendor patching (v1.23.2) but no public exploit identified at time of analysis.
Earlier versions of this analysis (1)
Heap buffer overflow in libavif's scale_nearest_neighbor() function can be triggered by a crafted AVIF image containing nested iden/auxl items that introduce duplicate Alpha planes. An attacker who delivers a malicious AVIF file to an application or service that decodes it - browsers, image editors, server-side media pipelines - can cause heap memory corruption, leading to denial of service or potentially arbitrary code execution. No public exploit code or CISA KEV listing has been identified at time of analysis, but the vulnerability class (heap overflow in a media parser) carries inherent code-execution potential.
RemediationAI
Apply the vendor-released patch by upgrading libheif to version 1.23.2 or later (release: https://github.com/strukturag/libheif/releases/tag/v1.23.2), which contains the fixing commit f4fb8bde4704ebb46e46ff9fb94407c9774153b2; distributions should take their libheif/security update from the vendor (the issue was reported by vendor:ubuntu, so a corresponding Ubuntu advisory and package update should be tracked). Because libheif is typically a shared dependency, patching the library package is usually sufficient - but statically linked or vendored copies inside other applications (media converters, image processors, mobile/desktop image viewers) must be rebuilt individually, and the full advisory is available at https://github.com/strukturag/libheif/security/advisories/GHSA-g89c-p67h-r497. Where patching must be deferred, the most effective compensating control is to prevent untrusted HEIF/HEIC input from reaching the libheif decoder at all: restrict accepted upload formats to non-HEIF types (side effect: loss of HEIC support for legitimate users) or reject/decode HEIF only in an isolated, low-privilege, memory-capped worker process or sandbox so that a heap-corruption primitive cannot be escalated (side effect: added latency and operational complexity, and sandbox escapes remain a residual risk). Enabling aggressive OS-level mitigations (ASLR, hardened allocators, heap canaries) raises exploitation difficulty but does not fix the overflow; no configuration flag in libheif disables the vulnerable nested iden/auxl Alpha-transfer path, so there is no simple 'switch off feature X' workaround. Note that patching libheif does not by itself fix applications that bundle their own forked copy, so inventory all consumers of the library.
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/HEIC decoding library, and it models decoded images as HeifPixelImage objects holding a storage list (m_storage) of per-channel planes (Y, Cb, Cr, Alpha, etc.). The bug lives at the intersection of two design assumptions: (1) transfer_channel_from_image_as() was written to attach a channel from a source image to a destination without ever checking whether the destination already had a plane for that channel - an in-code TODO acknowledged this gap; and (2) size and type accessors such as find_storage_for_channel(), get_bits_per_pixel(), get_channel_memory(), get_width() and get_height() only ever return the *first* matching plane, so any subsequently appended plane for the same channel is effectively invisible to those queries even though routines that iterate m_storage directly will still traverse and write to it. An attacker supplies a HEIF file whose item graph uses nested iden (identity) and auxl (auxiliary) references to make the decoder attach Alpha twice, with the second plane carrying a different bit depth (the upstream regression test uses 8-bit then 10-bit) and/or a size that does not match the color planes. scale_nearest_neighbor() then indexes the Alpha plane using the extent of the color channels rather than the Alpha plane's own reported extent, reading and writing past the smaller allocation - a classic CWE-787 heap out-of-bounds write. The upstream fix closes both holes: it makes transfer_channel_from_image_as() return an Error and reject a duplicate destination channel, and hardens overlay() to reject Alpha planes whose width/height do not match the other color planes. Because the input is a structured binary document format, exploitation requires no authentication other than the ability to get the file decoded.
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:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Remotely delivered crafted file, no auth or privileges needed; UI:R because a user or pipeline must decode the file; heap OOB write yields high C/I/A ceiling within the decoding process.
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (vendor:ubuntu).
CVSS VectorVendor: vendor:ubuntu
Lifecycle Timeline
2DescriptionCVE.org
[GHSA-g89c-p67h-r497: Heap buffer overflow in scale_nearest_neighbor() via duplicate Alpha planes from nested iden/auxl items]
Technical POC Analysis
Heap-based out-of-bounds write, CWE-787, in HeifPixelImage::scalenearestneighbor() in pixelimage.cc.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical heap memory-corruption flaw in libheif, the widely embedded HEIF/HEIC image decoding library used across browsers, mobile platforms, and cloud image-processing pipelines, can allow a crafted image to corrupt memory and potentially execute attacker-controlled code. Any product or service that ingests untrusted images - upload endpoints, thumbnail and media transcoding services, and end-user photo viewers - is exposed, and because libheif is normally bundled as a dependency rather than installed directly, many affected assets will not surface in routine inventories. Leadership should treat this as a supply-chain exposure with potential for full host compromise on unpatched decoding infrastructure.
Apply vendor patch.
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
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
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 buffer overflow write in libheif (versions ≤ 1.21.2) lets a crafted HEIF/AVIF file write 64 bytes of attacker-contr
Arbitrary code execution in libheif 1.19.0 through 1.21.2 via a crafted HEIF file with uncompressed, tiled, component-in
Same weakness CWE-787 – Out-of-bounds Write
View allSame technique Buffer Overflow
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
| SUSE Linux Enterprise Desktop 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP4 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Not-Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Not-Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Not-Affected |
| SUSE Manager Proxy 4.3 | Not-Affected |
| SUSE Manager Retail Branch Server 4.3 | Not-Affected |
| SUSE Manager Server 4.3 | Not-Affected |
| openSUSE Leap 15.4 | Not-Affected |
| openSUSE Leap 15.5 | Not-Affected |
| openSUSE Leap 15.6 | Not-Affected |
EUVD-2026-83019
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB