Skip to main content
VulnerabilityPublished Updated

CVE-2026-84446: strukturag libheif · Infinite Loop

Affects strukturag libheifSource CVE Database V5

0
Compare

Not known to be exploited · CVSS 7.5 High : upgrade to 1.23.2 soon.

Data as of 2 Nov 2026, 10:58 UTC

CVSS 3.1 base score
7.5High
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.4% chance of exploitation in 30 days – higher than 39% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
Patch
Available – fixed in 1.23.2
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 18 Sep 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 2 Nov 2026.

What to do

Upgrade libheif and strukturag/libheif to 1.23.2.

Affected software

ProductAffectedFixed in
strukturaglibheifAffected
  • <1.23.2
Fixed in
  • 1.23.2
GitHubstrukturag/libheifpkg:github/strukturag/libheifOther threatsAffected
  • <1.23.2
Fixed in
  • 1.23.2

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

This vulnerability is fixed in libheif version 1.23.2. Users and administrators should upgrade to version 1.23.2 or later to remediate this issue. No other mitigation or temporary workaround is indicated.

Description

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.

References

Community reviews

Loading reviews…