Skip to main content

libheif EUVDEUVD-2026-114729

| CVE-2026-120208 HIGH
Heap-based Buffer Overflow (CWE-122)
2026-10-31 VulnCheck GHSA-wqmc-6h9q-v6wp
7.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft HEIF with unequal Cb/Cr bit depths
  2. Delivery
    Deliver file to libheif image pipeline
  3. Exploit
    Decoder reuses wrong plane byte-width
  4. Execution
    Write two bytes past Cr heap plane
  5. Impact
    Corrupt heap or execute code

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Heap buffer bounds checking
MITRE ATT&CK

1 technique across 1 tactic: Execution

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=ON (the built-in ISO/IEC 23001-17 'unci' decoder); the bug is internal to libheif and does NOT require libde265, AOM, dav1d, ImageMagick or WordPress. The trigger is a HEIF file using the unci mixed-interleave YCbCr path with paired Cb and Cr components declared at different bit depths (the reproducer uses Y8/Cb16/Cr8, 4:2:0, mixed interleave), which causes the smaller chroma plane to receive wider writes. Limiting factors: a victim or pipeline must actually decode the attacker-supplied file (UI:P/UI:R); the uncompressed codec build option must be enabled; the OOB write and crash are reliable, but reliable code execution additionally depends on exact architecture, ABI, specific library builds and object layouts, glibc allocator placement/worker continuity, and a reachable application upload path (in the demonstrated WordPress case, Author-level upload_files capability). Per the advisory, universal RCE across libheif consumers is not demonstrated.

Impact

The input assigns a CVSS 4.0 base score of 7.7 (High) with vector AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H. The network vector is real in the sense that the malicious input is a file, but exploitation is gated by UI:P (a victim/pipeline must process the crafted HEIF) and AT:P (a specific attack-requirement condition exists), which the vendor evidence confirms: the vulnerable code path only exists when libheif is compiled with WITH_UNCOMPRESSED_CODEC=ON, and reliable code execution further depends on exact architecture, ABI, library builds, heap/allocator layout and a reachable upload path. No EPSS score is provided in the input, and there is no CISA KEV listing, so there is no signal of active, widespread exploitation at time of analysis. A public PoC does exist and is strong: the GHSA advisory ships a validated crash reproducer (overflow.heif plus a poc.py generator) with an AddressSanitizer trace confirming the heap out-of-bounds write on the official 1.23.2 release, and a negative control. Beyond the crash, the researcher (VulnCheck/Wordfence) demonstrated actual arbitrary file read (/etc/passwd) and PHP code execution, but only in one exact WordPress 7.1 / Debian / PHP-Imagick / libheif 1.23.2 deployment; the advisory explicitly states this does not imply universal RCE and that a complete remote ASLR bypass was not demonstrated. Net: this is a genuine, patch-worthy memory-corruption bug with a confirmed write primitive and a working crash PoC, but it is not a drop-everything internet-worm scenario - the vendor-supplied decision label is this_week, not act_now/emergency, consistent with conditional exploitation. One data conflict to note: NVD/input list CWE-122 (heap-based buffer overflow) while the GHSA lists CWE-787 (out-of-bounds write); both describe the same heap OOB write and do not change the risk.

Exploit ScenarioDerived

An attacker crafts a HEIF file whose unci mixed-interleave YCbCr components declare unequal chroma bit depths (e.g. 16-bit Cb, 8-bit Cr) and gets it decoded by a victim or server-side image pipeline running a vulnerable libheif built with the uncompressed codec enabled. Decoding issues two-byte writes into a one-byte-per-sample Cr plane, producing a repeated, attacker-controlled heap out-of-bounds write past the Cr allocation, which crashes the process and corrupts adjacent heap data. A validated public PoC (a reliable ASAN-confirmed crash reproducer) exists; the researcher additionally demonstrated file read and PHP code execution, but only in one specific WordPress/Debian/Imagick build, and universal code execution is not demonstrated.

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 – Oct 31, 2026

A heap-based buffer overflow in libheif's built-in ISO/IEC 23001-17 uncompressed-image ('unci') decoder lets a crafted HEIF file drive repeated out-of-bounds heap writes when the mixed-interleave YCbCr path is fed paired chroma components with unequal bit depths. Affected are libheif versions from 1.18.0 through 1.23.2 built with WITH_UNCOMPRESSED_CODEC=ON; decoding the file requires a victim or an image-processing pipeline to open the attacker-supplied image (unauthenticated per the CVSS vectors, but user interaction is required). The out-of-bounds write and crash are reliable, whereas code execution is deployment-specific - the advisory demonstrates file read and PHP code execution only against one exact WordPress/Imagick/libheif/glibc profile and explicitly does not claim universal RCE, and a public reproducer artifact (a crashing HEIF file) accompanies the advisory, though it is not verified as working code-execution exploit code. The vendor has released 1.23.3 with the fix.

RemediationAI

Vendor-released patch: upgrade to libheif 1.23.3 (release tag v1.23.3), which contains commit 9d3cd91d7b1c8c68deef6d06057ab956bcb0dfb9 fixing unc_decoder_legacybase and unc_decoder_mixed_interleave; advisory details are at https://github.com/strukturag/libheif/security/advisories/GHSA-x8r2-mggj-j6wr. Because the flaw is internal to the bundled unci decoder, downstream vendors and distributions that ship 1.18.0-1.23.2 must pull the 1.23.3 source or backport that commit - rebuilding linked consumers (ImageMagick, Imagick, language bindings) against the fixed library is required for the fix to take effect. Where uncompressed HEIF support is not needed, building libheif with WITH_UNCOMPRESSED_CODEC=OFF removes this code path entirely; the trade-off is that ISO/IEC 23001-17 'unci' images can no longer be decoded by that build. On the application side, restricting who may upload HEIF files and re-encoding or rejecting untrusted HEIF input before it reaches a server-side image pipeline reduces exposure, but does not repair the underlying library, and the vendor's fixed release remains the complete remedy.

Affected VersionsENISA

libheif 1.18.0 <1.23.3

Affected Packages

euvd libheif fix: 1.23.3

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 ships its own decoder for the 'unci' (uncompressed) image item type defined by ISO/IEC 23001-17, which stores raw component planes in the bitstream and is enabled only when the library is compiled with WITH_UNCOMPRESSED_CODEC=ON. In the mixed-interleave YCbCr layout, chroma samples from the Cb and Cr components are interleaved pixel by pixel, and the decoder allocates each destination plane according to that plane's own declared component bit depth. The root cause (CWE-122 / CWE-787, heap-based buffer overflow) is that unc_decoder_legacybase::buildChannelListEntry() cached only the current entry's byte width - bytes_per_component_sample = (component_bit_depth + 7) / 8 - and fetched the paired chroma plane's memory and stride but not its sample width. unc_decoder_mixed_interleave::processTile() then computed a single dst_column_offset from that width and reused it for the paired plane's write, so a file declaring e.g. 16-bit Cb and 8-bit Cr causes two-byte writes into a Cr plane allocated for one byte per sample, with the written bytes taken from attacker-controlled component data and the number of corrupting writes scaling with the chroma plane dimensions. The upstream fix (commit 9d3cd91d7b1c8c68deef6d06057ab956bcb0dfb9) replaces the single pointer/stride/width with two-element arrays, reading each plane's byte width from get_storage_bits_per_pixel() for that plane and using per-plane row and column offsets. The flaw is internal to libheif and does not require libde265, AOM, dav1d or ImageMagick, but a consumer application must actually decode the file, which is why user interaction appears in both assessed vectors.

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 (VulnCheck) PRIMARY 7.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote crafted file needs victim processing (AV:N/UI:R); the decoder requires no authentication (PR:N); the crash is reliable but code execution depends on build and heap layout (AC:H).

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

libheif 1.18.0 before 1.23.3 contains a heap-based buffer overflow vulnerability in unc_decoder_mixed_interleave::processTile() that allows attackers to write out of bounds by supplying chroma components with unequal bit depths. Attackers can craft a HEIF file declaring, for example, 16-bit Cb and 8-bit Cr to trigger file-controlled heap writes past the Cr plane, potentially achieving code execution in image-processing pipelines.

Technical POC Analysis

Note on identifiers: the supplied advisory classifies the weakness as CWE-787 and self-scores 9.8 (AV:N/AC:L/PR:N/UI:N).

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 memory-corruption flaw in libheif, the image library used to decode HEIF/HEIC files across many content pipelines and platforms, can be triggered when an affected system opens a maliciously crafted image. Because libheif is widely embedded in media handling, image processing services, and web stacks, any employee or pipeline that ingests untrusted images is exposed, and reliability of the crash raises real availability and potential code-execution concerns for internet-facing image processing. Leadership should care because the attack path is a single opened file, the affected versions are broadly deployed, and a fix is already available but requires coordinated patching.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
High
widely-used HEIF/HEIC decoding library across Linux desktops and image pipelines
Social Media
3
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL 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
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

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

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.

A heap overflow occurs when a program writes data beyond the bounds of a buffer allocated in the heap memory region.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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

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