CVE-2026-84384
High · 7.5CVSS
7.5
EPSS
0.5%
Published
Sep 18, 2026
CISA due date
—
Cloudanix analysis
A specially made photo file can force image-handling software to use so much memory that the program crashes, so update the image library and keep untrusted photos away from unpatched systems.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A crafted HEIF or AVIF file can drive libheif's brotli and zlib decompression of mime metadata and unci image data to accumulate output with no effective size cap or MemoryHandle accounting. HeifContext::interpret_heif_file_images() processes multiple compressed metadata items at open time, so a small file can allocate unbounded memory and terminate the decoding process. Confidentiality and integrity are not affected; impact is availability-only (process crash or host memory exhaustion). Affected releases are libheif 1.19.0 through 1.23.1.
Why it matters to the business
Any product that opens untrusted HEIF/AVIF images with libheif—media pipelines, thumbnails, upload processors, browsers, mobile galleries, CDNs, and DAM systems—can be crashed or OOM-killed by a single small file, causing service interruption, dropped jobs, and worker restarts. There is no CISA KEV listing, no ransomware association, and exploit maturity is none at 16 days after publication (2026-09-18), so mass exploitation is not evidenced; treat as a high-availability patch for internet-facing decoders rather than an emergency KEV event.
How an attack unfolds
An unauthenticated attacker supplies a small HEIF or AVIF file whose mime metadata and unci image data are structured so that decompress_brotli() and/or do_inflate() expand without a bound, including via overlapping icef units that inflate the same payload repeatedly. When any application using a vulnerable libheif opens the file, interpret_heif_file_images() decompresses those items during parse, memory grows without limit, and the process is terminated. Delivery is ordinary file intake (upload, attachment, URL fetch, shared album)—no credentials or user interaction beyond the service accepting the file. No named threat actors or campaigns are associated.
How to fix it
Upgrade libheif to 1.23.2 or later, which bounds decompression output and accounts memory correctly. Rebuild and redeploy every binary, container, and language binding that statically or dynamically links libheif (including downstream image toolkits and OS packages). Until upgrade is complete, reject or sandbox untrusted HEIF/AVIF at the edge, disable HEIF/AVIF decode on internet-facing workers, and apply OS-level memory/cgroup limits so a single decoder cannot take down the host. Do not rely on file-size limits alone; the issue is expansion of a small input.
How to confirm the fix worked
Inventory installed libheif versions (package manager, linked soname, or build manifests) and confirm runtime is 1.23.2 or newer on every decoder host. After upgrade, open a corpus of legitimate HEIF/AVIF files through the same code path and verify decode succeeds without abnormal RSS growth. Confirm edge controls still reject unexpected image types if you temporarily disabled HEIF/AVIF. Do not use weaponized samples to prove the old bug.
Typical attack path
- Obtain or generate a small HEIF/AVIF file that triggers unbounded brotli/zlib metadata expansion in libheif 1.19.0–1.23.1.
- Deliver the file to a service or client that decodes HEIF/AVIF with the vulnerable library (upload, email, messaging, web fetch, or shared media).
- Wait for the decoder to open the file and run HeifContext::interpret_heif_file_images().
- Observe process crash, worker death, or host OOM as memory grows without bound.
- Repeat against remaining workers or instances to sustain an availability outage.
How to detect it
This is a memory-exhaustion crash, not a persistence or implant issue; look for sudden RSS growth and termination of processes that decode HEIF/AVIF, clustered around file-open of .heic/.heif/.avif. Review application logs, container OOM killer events (dmesg/journal), crash reporters, and worker orchestrators for abort/segfault/OOM of libheif-linked binaries shortly after image intake. Stack traces naming decompress_brotli, do_inflate, or HeifContext::interpret_heif_file_images during file open are consistent with this bug. Preserve the triggering object from upload stores if a crash is found. No named APT activity is documented; absence of these artifacts does not prove the library was never hit, only that a crash was not recorded.
- HeifContext::interpret_heif_file_images
- decompress_brotli
- do_inflate
- libheif
- killed process .* (oom|Out of memory)
- Content-Type: image/heic
- Content-Type: image/heif
- Content-Type: image/avif
- .heic
- .heif
- .avif
What your security team should do
- Patch libheif to 1.23.2+ and redeploy all image-decode services, prioritizing internet-facing upload and thumbnail workers.
- Inventory static and dynamic dependents of libheif across containers, OS packages, and vendor appliances.
- Until patched, isolate HEIF/AVIF decode behind memory-capped sandboxes or disable the format at the perimeter.
- Watch for decoder crashes and OOM kills on media workers; exploit maturity is none and the CVE is not in KEV, but availability impact is high (CVSS 7.5).
- Track vendor and distro advisories for downstream products that embed libheif rather than assuming a single library upgrade covers the fleet.
The record
libheif is a HEIF and AVIF file format decoder and encoder. From 1.19.0 until 1.23.2, crafted HEIF or AVIF mime metadata and unci image data can cause decompress_brotli() and do_inflate() to grow accumulated output without an effective size limit or MemoryHandle accounting. The brotli path has no output bound, while the zlib path checks only a small temporary buffer in a branch that valid streams do not reach, and overlapping icef units can decompress the same payload repeatedly. HeifContext::interpret_heif_file_images() processes multiple compressed metadata items during file opening, allowing a small file to consume unbounded memory and terminate the process. This issue is fixed in version 1.23.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-92823 A flaw was found in libmodulemd. CWE-409
- CVE-2026-112892 Pillow is a Python imaging library. CWE-409
- CVE-2026-107227 The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP… CWE-409
- CVE-2026-107210 ImageMagick is free and open-source software used for editing and manipulating digital… CWE-409
- CVE-2026-106585 In sshd and ssh in OpenSSH before 10.6, there is no check for whether the maximum packet… CWE-409
- CVE-2026-44162 fluent-plugin-s3 is an Amazon S3 input and output plugin for Fluentd. CWE-409
- CVE-2026-85786 Improper handling of highly compressed data in Amazon ion-java before 1.12.1 might allow… CWE-409
- CVE-2026-84382 HTTPX2 is a next generation HTTP client for Python. CWE-409