MEDIUM 6.1

CVE-2026-44663: OpenEXR HTJ2K Integer Overflow & Heap Buffer Overflow (3.4.0–3.4.11)

OpenEXR versions 3.4.0 through 3.4.11 contain a flaw in how they process HTJ2K-compressed EXR image files. When decoding a specially crafted file, an integer overflow occurs during calculation of image channel dimensions, resulting in an incorrect memory address. This address is then used to write data to the heap, potentially overwriting adjacent memory. An attacker could exploit this by distributing a malicious EXR file; a user opening it in affected software could experience a crash or, in principle, allow code execution, though the latter is not confirmed. The vulnerability has been patched in version 3.4.12.

Source data · NVD / CISA · public domain

CVSS
3.1 · 6.1 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H
Weaknesses (CWE)
CWE-190, CWE-787
Affected products
1 configuration(s)
Published / Modified
2026-06-18 / 2026-06-26

NVD description (verbatim)

OpenEXR is the reference implementation and specification for the EXR image format, widely used in the motion picture industry. In versions 3.4.0 through 3.4.11, an integer overflow in ht_undo_impl() in src/lib/OpenEXRCore/internal_ht.cpp leads to a heap-buffer overflow when decoding a crafted HTJ2K-compressed EXR file. decode->channels[i].width (int32_t) is multiplied by bytes_per_element in 32-bit signed arithmetic. With large widths (e.g., >= 536870912 for FLOAT data), this overflows, producing a corrupted offset that is later used for pointer arithmetic and can cause a heap out-of-bounds write. The same unchecked multiplication pattern appears in two other HTJ2K paths (bytes-per-line accumulation and pixel-line pointer advancement). As with related CVE-2026-34378 through CVE-2026-34589 fixes in other codecs, validating only after the multiplication is too late because the value may already be overflowed. This issue has been fixed in version 3.4.12.

3 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-44663 stems from an unchecked integer overflow in ht_undo_impl() within src/lib/OpenEXRCore/internal_ht.cpp. The vulnerability occurs when decoding HTJ2K-compressed EXR images: the width field (int32_t) is multiplied by bytes_per_element using 32-bit signed arithmetic without prior bounds validation. With sufficiently large width values (≥536870912 for FLOAT data), this multiplication overflows, producing a negative or truncated result that is subsequently used as a memory offset in pointer arithmetic. This leads to a heap buffer overflow during out-of-bounds writes. The same unchecked pattern appears in two additional HTJ2K code paths responsible for bytes-per-line accumulation and pixel-line pointer advancement, suggesting systemic validation gaps. The fix implemented in 3.4.12 validates dimensions before performing multiplication, preventing overflow conditions.

Business impact

Organizations relying on OpenEXR for visual effects pipelines, animation production, or post-production workflows face denial-of-service risk if attackers distribute malicious EXR files to studios or freelancers. While the CVSS score reflects medium severity, the impact depends on deployment context: isolated rendering farms or VFX workstations processing untrusted content from external sources carry elevated risk. Crash-based denial of service could disrupt rendering deadlines and downstream publishing schedules. The local-attack vector and requirement for user interaction (opening a file) limit exposure in server-only environments but not in creative studios where file sharing is routine.

Affected systems

OpenEXR 3.4.0 through 3.4.11 are vulnerable. The library is the reference implementation for the EXR image format and is embedded in or used by visual effects software, rendering engines, and image processing tools across the motion picture industry. Any system running an affected version and processing EXR files from untrusted or potentially adversarial sources is at risk. Version 3.4.12 and later contain the remediation.

Exploitability

Exploitability is moderate. The attack requires local file access (AV:L) and user interaction to open a malicious EXR file (UI:R), making opportunistic remote exploitation unlikely. However, the bar for crafting a triggering file is low: generating an HTJ2K-compressed EXR with an oversized width value is straightforward. Social engineering (e.g., sharing a 'reference asset' or 'template project') could facilitate delivery. The vulnerability does not require special privileges to trigger. As of the publication date, CVE-2026-44663 is not listed in the CISA Known Exploited Vulnerabilities catalog.

Remediation

Upgrade OpenEXR to version 3.4.12 or later. Organizations should verify the version in use across their VFX pipelines, rendering farms, and any integrated applications. Where immediate patching is not feasible, restrict file opening to trusted internal assets and disable external EXR imports until patching is complete. Code review of HTJ2K-consuming applications is advisable to ensure they perform pre-multiplication validation.

Patch guidance

Update OpenEXR to version 3.4.12 or later. Consult the OpenEXR release notes and your software vendor's compatibility matrix to confirm that dependent applications support the patched version without regressions. Test the patched library in a non-production environment with representative EXR files before rolling out to rendering farms or production workstations. If OpenEXR is vendored or statically linked within another application (e.g., a rendering engine), coordinate with the upstream vendor for an updated release; do not assume automatic inheritance of the fix.

Detection guidance

Monitor for unexpected crashes or allocation failures when processing HTJ2K-compressed EXR files, particularly those with unusually large width or channel counts. Log or alert on any OpenEXR library version checks that report 3.4.0–3.4.11 during software inventory scans. Review recent EXR file ingestion sources and validate file provenance. Fuzzing or regression testing with oversized-dimension test cases can help confirm patch effectiveness post-deployment. Application-level logging of image dimension parameters before decoding can help identify malicious patterns.

Why prioritize this

Assign medium-to-high priority in creative and VFX environments; lower priority in server/rendering-only contexts lacking user interaction. The integer-overflow-to-heap-overflow chain is well-understood, reliable to trigger, and difficult to defend against at the application layer. While CVSS score is 6.1 (MEDIUM), the confluence of direct file-format handling, systemic validation gaps in multiple code paths, and industry prevalence of OpenEXR in supply-chain scenarios warrants prompt patching. Non-KEV status and local-attack vector prevent critical classification, but this should not delay remediation in exposed environments.

Risk score, explained

CVSS 3.1 score of 6.1 (MEDIUM) reflects: AV:L (local file required), AC:L (no special conditions), PR:N (no privileges needed), UI:R (user must open file), S:U (no scope change), C:N (confidentiality not impacted), I:L (integrity low—limited write scope), A:H (availability high—crash likely). The score appropriately captures that an unauthenticated user with file access can reliably crash the application or corrupt heap state, but the local-only vector and user-interaction requirement prevent a higher severity. However, in threat modeling, the lack of confidentiality impact should not minimize the severity of heap corruption, which can enable privilege escalation or code execution under specific memory layout conditions not fully characterized in public analysis.

Frequently asked questions

What file types or workflows are most at risk?

VFX studios and post-production facilities that process EXR files from external vendors, freelancers, or third-party asset libraries are most exposed. Animation studios using OpenEXR-based rendering engines (e.g., for compositing or final output) should prioritize patching. Isolated internal workflows using only locally-created EXR files face lower risk.

Can this be exploited remotely?

Not directly. The attack vector is local (AV:L), requiring an attacker to deliver a malicious EXR file and trick or socially engineer a user into opening it. Network-based EXR viewers or render daemons that accept untrusted uploads would elevate risk; verify whether your deployment includes such exposure.

Is there a workaround if I cannot patch immediately?

Yes. Disable or restrict HTJ2K-compressed EXR imports until patching is feasible. If your workflow does not use HTJ2K compression, you may continue using existing assets; however, confirming that all incoming EXR files are non-HTJ2K requires file format auditing. The safest interim measure is to open only EXR files from known internal sources.

How does this relate to the other EXR integer-overflow CVEs mentioned?

CVE-2026-34378 through CVE-2026-34589 represent a broader pattern of integer-overflow vulnerabilities in various codec implementations. This CVE applies the same lesson—that post-multiplication validation is insufficient—to OpenEXR's HTJ2K path. The root cause in all cases is failure to validate dimensions before arithmetic, not a codec-specific flaw.

This analysis is based on published CVE data and vendor advisories as of the modification date (2026-06-26). Exploit code and weaponized proof-of-concepts are not disclosed. Organizations should verify patch availability and compatibility with their specific deployments before production rollout. This page does not constitute security advice specific to your environment; consult your vendor and security team for tailored guidance. The CVSS score reflects standard scoring methodology and may not capture all real-world exploitation scenarios, particularly those involving memory-layout-dependent code execution. Source: NVD (public-domain), retrieved 2026-07-27. Analysis generated by SEC.co (claude-haiku-4-5).