Skip to main content

libheif EUVDEUVD-2026-83017

| CVE-2026-84446 HIGH
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-09-18 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Craft HEIF with malicious stts/edit-list
  2. Delivery
    Deliver file to decoding service
  3. Exploit
    init_sample_timing_table overflows output count
  4. Execution
    Decode loop never terminates, allocations grow
  5. Impact
    CPU and memory exhaustion DoS

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK

1 technique across 1 tactic: Impact

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-supplied HEIF/AVIF *sequence* (multi-sample/video-style) file with crafted stts timing and edit-list data that drives Track::init_sample_timing_table() to compute an m_num_output_samples exceeding the uint32_t counters in Track_Visual::decode_next_image_sample() and Track::get_next_sample_raw_data(), bypassing the max_sequence_frames safeguard. Exploitation is limited to libheif versions prior to 1.23.2 and only when the sequence decode path (not a single still image) is exercised; the practical limiting factor is that some consumer is set up to decode untrusted HEIF sequences automatically - automated/server-side pipelines match UI:N, whereas desktop viewers effectively require the user to open the file (UI:R), which constrains real-world reach.

Impact

This is a genuine but bounded-impact issue: the vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) reflects a pure availability impact (CWE-835 infinite loop plus unaccounted allocation), with no confidentiality or integrity effect. Exploitation status is 'no public exploit identified at time of analysis' - there is no EPSS score, no CISA KEV listing, and no POC provided in the input; the only referenced code artifact is the fix commit and its regression-oriented advisory (GHSA-xw34-mjcp-jqh8), not weaponized exploit code. The vector's UI:N/PR:N implies drive-by, unauthenticated triggering, which is accurate for automated server-side pipelines that decode uploaded HEIF/AVIF sequences; however, the description explicitly requires a crafted HEIF sequence to actually be decoded, so for desktop/interactive viewers a user-interaction element (UI:R) is arguably more honest and would lower real-world severity slightly. Net: a real, easy-to-trigger DoS worth patching in any service that ingests untrusted HEIF sequences, but not a critical, exploited-in-the-wild priority - no code execution, no data exposure, and no evidence of active exploitation.

Exploit ScenarioDerived

An attacker uploads or delivers a small crafted HEIF/AVIF file whose sequence timing (stts) and edit-list data cause Track::init_sample_timing_table() to compute a logical output-sample count exceeding the uint32_t loop counters, so the terminating comparison is never satisfied. When a server-side thumbnailing or media-processing pipeline (e.g., an image host, gallery service, or CMS using libheif via ImageMagick/libvips) decodes the file, the decode/raw-sample loop never terminates and the unaccounted Chunk::m_sample_ranges / m_presentation_timeline allocations grow, pinning a CPU core and exhausting memory from a tiny input. No public exploit code is identified, but the trigger conditions are fully described in the advisory and fixed by a clamp in 1.23.2.

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

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

Alert me

AnalysisAIv1 – Sep 18, 2026

Denial of service in libheif versions prior to 1.23.2 allows unauthenticated remote attackers to hang or exhaust a decoding process by supplying a small but crafted HEIF/AVIF sequence file whose stts timing and edit-list metadata drive Track::init_sample_timing_table() to compute an output-sample count larger than the uint32_t counters used by Track_Visual::decode_next_image_sample() and Track::get_next_sample_raw_data(). The oversized count can never be reached, so decode and raw-sample loops fail to terminate and bypass the max_sequence_frames safeguard, while repeated Box_stts::get_sample_duration() calls and unbounded allocations of Chunk::m_sample_ranges and Track::m_presentation_timeline occur outside MemoryHandle accounting, producing severe CPU and memory exhaustion. Impact is availability-only (CVSS 3.1 base 7.5, AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H; CWE-835), with no confidentiality or integrity effect; there is no public exploit code identified at time of analysis, and exploitation requires that the application actually exercises the multi-sample sequence decode path on untrusted input. Vendor-released patch: 1.23.2.

RemediationAI

Vendor-released patch: 1.23.2 - upgrade libheif to 1.23.2 or later, per https://github.com/strukturag/libheif/releases/tag/v1.23.2 and the advisory https://github.com/strukturag/libheif/security/advisories/GHSA-xw34-mjcp-jqh8; the fixing change is commit 3a7a69ae325f652e48c026b8241ab25bedf44d9b, which clamps the computed output-sample count, converts Box_stts sample-duration lookup to a binary search over precomputed cumulative counts, reserves chunk sample-range storage up front, and charges sequence allocations against max_total_memory. Third-party consumers should re-link or rebuild against the patched library and confirm bundled copies (static builds, container images, vendored distributions) are updated, since a fixed system package does not help an application carrying its own embedded libheif. Until upgrading is possible, the most effective compensating control is to stop feeding untrusted HEIF/AVIF sequence content to libheif - this is realistic for server-side pipelines that previously accepted user uploads matching sequence tracks, where simply rejecting or stripping multi-sample sequence files (or converting uploads with a still-image-only path) removes the exposure at the cost of losing animated/video-style HEIF support. Process-level containment is the next best option: run decoding in an isolated worker under a hard CPU-time limit, an address-space/rss cgroup or ulimit, and a watchdog that kills the worker on timeout, accepting that this converts an exhaustion condition into a failed decode rather than preventing the resource burn. Do not rely on max_sequence_frames as a mitigation before patching, because the oversized m_num_output_samples defeats that guard; likewise, heif_decoding_options::ignore_sequence_editlist only mitigates the edit-list-repetition aspect through the options-taking call path added in the fix, so it is not a reliable pre-1.23.2 workaround for the raw-sample loop.

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 the widely used reference HEIF/AVIF decoder and encoder (vendor Strukturag; CPE cpe:2.3:a:strukturag:libheif:*:*:*:*:*:*:*:* covers every release below the fix). Beyond still images, libheif implements multi-sample 'sequence' tracks analogous to video: timing metadata lives in an ISO-BMFF stts (time-to-sample) box, and edit lists can repeat or remap the presented timeline. The flaw is a CWE-835 non-terminating loop: Track::init_sample_timing_table() derives a logical output-sample count (m_num_output_samples) from sequence timing plus edit-list data without clamping it to the 32-bit counters maintained by Track_Visual::decode_next_image_sample() and Track::get_next_sample_raw_data(). Because the 32-bit counter can never equal or exceed the oversized target, the termination comparison is never satisfied and the loop, together with the max_sequence_frames guard that would normally cap sequence length, is defeated. The exploit is amplified by two secondary defects: Box_stts::get_sample_duration() performed a linear scan of stts entries on every call (O(entries) per sample), and the allocations backing Chunk::m_sample_ranges and Track::m_presentation_timeline were made without MemoryHandle accounting, so a tiny input file could allocate and re-touch large memory regions while burning CPU. The upstream fix (commit 3a7a69ae325f652e48c026b8241ab25bedf44d9b) clamps the computed output count, precomputes cumulative sample counts in Box_stts and switches get_sample_duration() to a binary search, reserves Chunk sample-range storage at its exact final size (with a new Chunk::sample_range_entry_size() helper so Track can charge the aggregate against max_total_memory before construction), and adds an internal options-taking raw-sample path so heif_decoding_options::ignore_sequence_editlist can be honored.

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.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Small crafted file remotely triggers non-terminating loop and unaccounted allocation for a pure availability impact; UI:R is defensible for interactive viewers but UI:N holds for automated decode pipelines.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

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

DescriptionCVE.org

libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.23.2, crafted HEIF sequence timing and edit-list data can make Track::init_sample_timing_table() compute a logical m_num_output_samples value that exceeds the uint32_t counters used by Track_Visual::decode_next_image_sample() and Track::get_next_sample_raw_data(). The resulting comparison can never reach the oversized output count, causing non-terminating decode or raw-sample loops and bypassing max_sequence_frames. The same sequence path repeatedly calls Box_stts::get_sample_duration() and allocates Chunk::m_sample_ranges and Track::m_presentation_timeline outside MemoryHandle accounting, allowing severe CPU and memory exhaustion from a small file. This issue is fixed in version 1.23.2.

Technical POC Analysis

CWE-835.

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

A newly disclosed flaw in libheif, the image-decoding library embedded in many photo, media, and document-processing pipelines, lets an unauthenticated remote attacker stall or exhaust any service that decodes HEIF/AVIF files by submitting a single small crafted image. Because the affected code loops indefinitely and allocates memory outside normal accounting, impacted workloads can be driven into CPU saturation and memory exhaustion, degrading or taking down image processing for all users of that service. Any internet-facing or customer-facing system that accepts untrusted HEIF/AVIF uploads should be treated as exposed, and no vendor patch is yet available, so mitigation depends on configuration and architectural controls.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict or disable untrusted HEIF/AVIF decoding at the perimeter where business needs allow; validate file size, dimensions, and metadata before decoding; run decoding in isolated, resource-capped worker processes with strict CPU/memory quotas, short timeouts, and automatic restart; cap concurrent decode jobs and queue depth to prevent resource exhaustion from cascading; block known-malicious uploads via content inspection or AV scanning; monitor and alert on hung decode workers and abnormal memory growth; and request an interim hardened or backported build from the libheif maintainers or your platform vendor.

Threat Intelligence Overview

EPSS Score
0.5%
Top 61% exploitable
Prevalence
High
libheif is the standard HEIF/AVIF decoder embedded in GNOME, KDE, ImageMagick, libvips
Data Quality
8 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.5%
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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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