Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft HEIF with malicious stts/edit-list
-
DeliveryDeliver file to decoding service
-
Exploitinit_sample_timing_table overflows output count
-
ExecutionDecode loop never terminates, allocations grow
-
ImpactCPU 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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.
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.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
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.
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
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
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
Same technique Denial Of Service
View allVendor 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 |
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| 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-83017
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB