Skip to main content

libheif EUVDEUVD-2026-83020

| CVE-2026-84444 HIGH
Out-of-bounds Write (CWE-787)
2026-09-18 GitHub_M
7.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach app using libheif tiled encode API
  2. Delivery
    Supply tile with oversized component planes
  3. Exploit
    add_image_tile bypasses size gate
  4. Execution
    encode_tile copies plane past output buffer
  5. Impact
    Heap out-of-bounds write / corruption

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 libheif built with WITH_UNCOMPRESSED_CODEC enabled AND an application that uses the tiled writing API (heif_context_add_image_tile → ImageItem_uncompressed::add_image_tile → unc_encoder::encode_tile) to ENCODE, not decode. The attacker must be able to supply an independently constructed tile image whose component-plane width/height exceed the prototype tile geometry; the pre-fix encode_tile path lacked the check_component_sizes()/compatibility gate, so the mismatch is what triggers the overflow. Limiting factors: this is an encoder-side flaw (most libheif deployments only decode), the uncompressed codec is a build-time option that is not always compiled in, and it needs an application design that feeds untrusted image tiles into the tiled encoder - hence CVSS AC:H. No authentication or user interaction is required by the library itself (PR:N/UI:N), but reachability depends entirely on the host application's use of this specific API.

Impact

The vendor CVSS of 7.4 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H) is defensible but the AC:H rating and the nature of the flaw materially cap real-world risk. Critically, this is an ENCODER-side heap out-of-bounds write, not the usual libheif decoder bug: it lives in unc_encoder::encode_tile()/unc_encoder_component_interleave::encode_tile() and is reached through the tiled-writing API heif_context_add_image_tile()/ImageItem_uncompressed::add_image_tile(). Exploitation therefore requires an application that (a) is built WITH_UNCOMPRESSED_CODEC and (b) drives libheif's tiled encoding path with attacker-influenced tile images whose component-plane dimensions differ from the prototype tile geometry - a far narrower and less common surface than simply decoding a malicious HEIF/AVIF. No EPSS score, KEV listing, or POC is provided in the input, and there is no SSVC decision data; the only public artifacts are the GitHub Security Advisory, the fix commit, and the v1.23.2 release. Exploitation status: no public exploit identified at time of analysis. The confidentiality impact is correctly N (this is a write primitive, not a leak), while I:H/A:H reflect heap corruption that can crash or potentially be steered. Net: a genuine memory-corruption bug in a widely-used library, but the encoder-only, build-flag-gated, high-complexity preconditions make it a moderate priority rather than a drop-everything issue for most consumers, who primarily use libheif to DECODE.

Exploit ScenarioDerived

An application that uses libheif (built with WITH_UNCOMPRESSED_CODEC) to author tiled uncompressed HEIF images accepts image tiles derived from untrusted input and adds them via heif_context_add_image_tile(). An attacker supplies a tile whose component-plane dimensions are larger than the prototype tile geometry; encode_tile() sizes the output buffer from the configured geometry but copies the tile's actual (oversized) plane, writing attacker-controlled data past the heap output buffer. No public exploit code is identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 18, 2026

Heap-based out-of-bounds write in libheif prior to 1.23.2 lets an attacker who can supply an independently constructed tile image to the uncompressed-codec tiled encoding path corrupt memory past the heap output buffer. The flaw is only reachable when the library is built with WITH_UNCOMPRESSED_CODEC enabled and the host application uses the tiled writing API (heif_context_add_image_tile), which makes the encoder encode rather than decode attacker-influenced data; because that path is an encoder-side, build-optional feature requiring a specific application design, the vendor's AC:H rating is appropriate. CVSS is 7.4 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H) with high integrity and availability impact but no confidentiality impact, and no public exploit code or active exploitation has been identified at time of analysis; a vendor fix is available in 1.23.2.

RemediationAI

Upgrade to libheif 1.23.2 or later (vendor release tag v1.23.2, advisory GHSA-j264-xvrp-5v7q), or backport the validating fix commit e65071f59a1ac08aa1eb0d07a831deaf6bb4d03b, which makes unc_encoder::encode_tile() reject any tile whose component layout does not match the prototype image's frozen configuration. If upgrading is not immediately possible, the most effective compensating control is to rebuild libheif without WITH_UNCOMPRESSED_CODEC, which removes the vulnerable encoder entirely - at the cost of losing uncompressed-HEIF encoding support; that feature is a build-time option and is not required for normal decoding workloads. Applications that must keep uncompressed tiled encoding should validate, before calling heif_context_add_image_tile(), that every supplied tile's component-plane width, height, bit depth, datatype and channel set exactly match the prototype image used to create the context, and should refuse tiles that fail this check - this is an application-layer re-implementation of the missing gate and depends entirely on the caller doing it correctly, so it is strictly weaker than the library patch. Note that decoder-side deployments are unaffected, and no vendor-released patch is required for them.

Affected VersionsENISA

libheif < 1.23.2

Affected Packages

euvd libheif fix: 1.23.2

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 a HEIF/AVIF decoder and encoder built around HeifPixelImage, which carries a list of ComponentDescription entries (component id, channel, component type, bit depth, datatype, has_data_plane) plus per-component planes. When WITH_UNCOMPRESSED_CODEC is compiled in, unc_encoder freezes its configuration from a prototype image (colorspace, chroma format, component descriptors, bytes per pixel) and uses that configuration to size its output when encoding tiles. The pre-fix tiled writing path, heif_context_add_image_tile() -> ImageItem_uncompressed::add_image_tile(), handed independently constructed tiles straight to unc_encoder::encode_tile(), which did not invoke the check_component_sizes() gate that the non-tiled encode() path used. Because unc_encoder_component_interleave::encode_tile() derived the output buffer size from the configured prototype tile geometry while copying the tile's actual component-plane dimensions, an oversized component plane produced a classical CWE-787 out-of-bounds write - attacker-controlled data copied beyond the heap allocation. The upstream fix (commit e65071f59a1ac08aa1eb0d07a831deaf6bb4d03b) adds check_image_compatibility() to unc_encoder, comparing the incoming image's colorspace, chroma format, component count, ids, channels, types, bit depths, datatypes and has_data_plane flags against the frozen prototype configuration, and wires it into both encode() and encode_tile() (introducing a non-virtual encode_tile() wrapper around encode_tile_impl() and reworking check_component_sizes() to iterate component descriptions so interleaved planes and cpat reference components are handled correctly).

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

Vendor (GitHub_M) PRIMARY 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
vuln.today AI 7.4 HIGH

Data-driven (AV:N) but AC:H because it needs WITH_UNCOMPRESSED_CODEC plus an app exposing the tiled-encode path to a crafted mismatched tile; heap OOB write gives I:H/A:H, no leak so C:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Sep 18, 2026 - 17:17 EUVD
CVE Published
Sep 18, 2026 - 15:56 cve.org
HIGH 7.4

DescriptionCVE.org

libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.23.2, when WITH_UNCOMPRESSED_CODEC is enabled, heif_context_add_image_tile() accepts an independently constructed tile whose component-plane dimensions do not match the tile geometry established by the prototype image. ImageItem_uncompressed::add_image_tile() passes that tile directly to unc_encoder::encode_tile(), which lacked the check_component_sizes() 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 unc_encoder_component_interleave::encode_tile() copy attacker-controlled data beyond the heap output buffer. This issue is fixed in version 1.23.2.

Technical POC Analysis

CWE-787 (out-of-bounds write).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

libheif, an image encoding library widely reused across photo, media, and document pipelines, carries a high-severity memory-corruption flaw (CVE-2026-84444) that is only reachable by applications built with the optional uncompressed-codec flag and using the tiled image-writing API. Where that configuration exists, a crafted tile image can corrupt heap memory and destabilize or crash the affected service, with potential loss of output integrity but no exposure of stored data. Leadership should care less about the flaw itself than about inventory: risk is entirely determined by how many internal services and shipped products are compiled with that specific build option, and there is no evidence of public exploit code or active exploitation at this time.

Business Impact: Medium
Compensating Controls

Apply vendor patch (upgrade to libheif 1.23.2, per advisory - validate against the vendor's patch-status field). If the fixed build cannot be deployed immediately: rebuild affected components without WITH_UNCOMPRESSED_CODEC, disable or block use of the tiled writing API (heif_context_add_image_tile), reject or restrict untrusted/independently constructed tile images from entering the encoding path, and monitor affected services for crashes or memory-corruption indicators.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
High
libheif is the standard HEIF/AVIF library across Linux desktop and imaging stacks
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Partial

Priority Score

37
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +37
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2023-49464 HIGH POC
8.8 Dec 07

libheif v1.17.5 was discovered to contain a segmentation violation via the function UncompressedImageCodec::get_luma_bit

CVE-2023-49463 HIGH POC
8.8 Dec 07

libheif v1.17.5 was discovered to contain a segmentation violation via the function find_exif_tag at /libheif/exif.cc. R

CVE-2023-49462 HIGH POC
8.8 Dec 07

libheif v1.17.5 was discovered to contain a segmentation violation via the component /libheif/exif.cc. Rated high severi

CVE-2023-49460 HIGH POC
8.8 Dec 07

libheif v1.17.5 was discovered to contain a segmentation violation via the function UncompressedImageCodec::decode_uncom

CVE-2019-11471 HIGH POC
8.8 Apr 23

libheif 1.4.0 has a use-after-free in heif::HeifContext::Image::set_alpha_channel in heif_context.h because heif_context

CVE-2024-41311 HIGH POC
8.1 Oct 15

In Libheif 1.17.6, insufficient checks in ImageOverlay::parse() decoding a heif file containing an overlay image with fo

CVE-2024-25269 HIGH POC
7.5 Mar 05

libheif <= 1.17.6 contains a memory leak in the function JpegEncoder::Encode. Rated high severity (CVSS 7.5), this vulne

CVE-2025-68431 HIGH POC
7.1

Out-of-bounds read in libheif's HEIF/HEIC overlay processing can disclose limited memory contents and crash affected app

CVE-2023-29659 MEDIUM POC
6.5 May 05

A Segmentation fault caused by a floating point exception exists in libheif 1.15.1 using crafted heif images via the hei

CVE-2025-29482 MEDIUM POC
6.2 Apr 07

Buffer Overflow vulnerability in libheif 1.19.7 allows a local attacker to execute arbitrary code via the SAO (Sample Ad

CVE-2026-84383 CRITICAL
9.8 Sep 04

Heap-based buffer overflow in libheif before 1.23.2 allows remote attackers to corrupt memory and potentially achieve co

CVE-2026-32740 HIGH
8.8 May 19

Heap buffer overflow write in libheif (versions ≤ 1.21.2) lets a crafted HEIF/AVIF file write 64 bytes of attacker-contr

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Module for Desktop Applications 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Server for SAP Applications 15 SP7 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy