CVE-2026-45696: OpenEXR HTJ2K Decoder Heap Overflow DoS (v3.4.0–3.4.11)
OpenEXR, the industry-standard image format for motion pictures, contains a flaw in its HTJ2K decoder that allows a maliciously crafted EXR file to crash any application that opens it. When processing the file, the decoder incorrectly trusts the declared image dimensions without validating them against the actual data buffer, causing it to read beyond allocated memory. Any tool that previews, validates, or processes EXR files—including thumbnail generators, asset management systems, and the exrcheck utility—is at risk. This affects versions 3.4.0 through 3.4.11.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-122, CWE-125
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-18 / 2026-07-15
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, the HTJ2K (High-Throughput JPEG 2000) decoder, ht_undo_impl() in OpenEXRCore is vulnerable to a heap-buffer-overflow READ. The ht_undo_imp function copies decoded pixels out of a per-line OpenJPH buffer using the EXR channel's declared width as the iteration count. The codestream embedded in the EXR chunk can declare different (smaller) tile/line dimensions than the EXR header advertises, but ht_undo_impl() does not validate this — it pulls width 32-bit samples from cur_line->i32[] without checking the OpenJPH line buffer's actual length. A crafted EXR file produces a 4-byte heap-buffer-overflow READ immediately after a buffer allocated by ojph::local::codestream::finalize_alloc(). The bug is reachable through the standard scanline-decode entry point used by every consumer of exr_decoding_run/Imf::checkOpenEXRFile, including thumbnailers, asset pipelines, and the exrcheck utility — i.e. any application that opens untrusted EXR files. The result is a deterministic crash (DoS) and potential adjacent-heap leak. This issue has been fixed in version 3.4.12.
6 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability exists in the ht_undo_impl() function within OpenEXRCore's HTJ2K decoder. The function copies decoded pixel samples from a per-line OpenJPH buffer using the width value advertised in the EXR file header as its iteration count. However, a malformed EXR codestream can declare smaller tile and line dimensions than the header specifies, creating a mismatch. Because ht_undo_impl() does not validate the OpenJPH buffer's actual capacity, it proceeds to read 32-bit samples from cur_line->i32[] beyond the allocated bounds. This results in a 4-byte heap-buffer-overflow READ immediately after memory allocated by ojph::local::codestream::finalize_alloc(). The vulnerability is classified as CWE-122 (Heap-based Buffer Overflow) and CWE-125 (Out-of-bounds Read), and is reachable through standard scanline-decode entry points such as exr_decoding_run() and Imf::checkOpenEXRFile().
Business impact
The denial-of-service impact is broad because EXR file processing is embedded in many production workflows. Asset pipelines, digital asset management systems, and thumbnail indexing services that automatically ingest and preview EXR files can be crashed by a single malicious file. In motion picture and visual effects environments, this can disrupt collaborative work and delay asset validation. The adjacent-heap leak potential, while less immediately severe, may allow information disclosure in confined scenarios. Organizations relying on automated EXR validation or archival systems face operational risk until patching is complete.
Affected systems
OpenEXR versions 3.4.0 through 3.4.11 are affected. The vulnerability is fixed in version 3.4.12. Any application using OpenEXRCore's decoding functions to process untrusted EXR files is at risk, including but not limited to: thumbnail generators, image viewers, asset management platforms, VFX software integrations, and command-line utilities like exrcheck. The threat surface extends to any system that automatically ingests or previews EXR files from external sources.
Exploitability
Exploitation requires only a crafted EXR file and a vulnerable application to open it. The attack vector is network-accessible (CVSS AV:N) and requires no special privileges beyond the ability to cause the application to load a file (PR:L reflects that interaction is needed, such as uploading to an asset system). No user interaction is required once the file is opened. The malformed codestream is deterministic and will reliably trigger the crash, making this a stable denial-of-service vector. However, active exploitation in the wild has not been documented (KEV status: false).
Remediation
Upgrade OpenEXR to version 3.4.12 or later. This release includes validation logic in ht_undo_impl() to confirm that the OpenJPH buffer's declared dimensions match the EXR header specifications before reading. Verify compatibility with dependent libraries and applications in your environment before deploying, as minor version updates can occasionally affect binary compatibility. If immediate patching is not possible, restrict file ingestion from untrusted sources and implement application-level filtering to prevent EXR files from reaching vulnerable code paths.
Patch guidance
Update OpenEXR from any version in the 3.4.0–3.4.11 range to 3.4.12. Check your package manager (apt, homebrew, vcpkg, etc.) for availability; most major distributions should release updates within days of the vendor advisory. For embedded or statically linked OpenEXRCore, rebuild and redeploy affected binaries. Test the update in a staging environment to confirm that dependent software (VFX tools, asset management platforms, image libraries) continues to function. If you maintain a custom build, download the patched source from the official OpenEXR repository and rebuild according to your standard procedures.
Detection guidance
Monitor for crashes in applications that process EXR files, particularly those in automated workflows (asset ingest, thumbnail generation). If using SELinux or AppArmor, enable auditing on heap-overflow signals. Log file ingestion events and correlate crashes with recently added EXR files. In environments with network-based asset pipelines, inspect uploaded EXR files for structural anomalies (mismatched header vs. codestream dimensions) using a local validation tool before automated processing. Runtime memory sanitizers (ASAN) will immediately catch the heap overflow during testing. No known public exploit exists yet, so detection should focus on application stability and post-mortem analysis of crash logs.
Why prioritize this
This vulnerability merits prompt but not emergency patching. The CVSS score of 6.5 (MEDIUM) reflects the high availability impact (DoS) but absence of confidentiality or integrity compromise. Prioritize patching in environments where EXR files are ingested from untrusted sources (web uploads, external pipelines, partner submissions) or where asset infrastructure is critical to production. Organizations using OpenEXR only for in-house, trusted content creation may defer patching if other risk controls are in place, but this is not recommended for public-facing or partner-integrated systems.
Risk score, explained
The CVSS v3.1 score of 6.5 (MEDIUM) is driven by a high availability impact (A:H), reflecting the deterministic denial-of-service condition. Confidentiality and integrity scores are null (N), as the overflow is a read-only operation that crashes rather than corrupts or exfiltrates data. The attack vector is network-accessible (AV:N) and requires low attack complexity (AC:L), making exploitation straightforward with a crafted file. The attack requires some level of privilege or interaction (PR:L), as the file must be opened by an application, but this is a low bar in asset pipeline contexts. The scope is unchanged (S:U), affecting only the vulnerable component and downstream processes.
Frequently asked questions
Can this vulnerability be exploited without opening the EXR file in an application?
No. The vulnerability is triggered only when a vulnerable application attempts to decode the EXR file using OpenEXRCore's scanline decoder. However, this includes automated processes like thumbnail generation, file validation, and asset indexing, so the practical threat surface is broad even if it requires application involvement.
Does the overflow allow code execution or only denial of service?
Based on the nature of the vulnerability—a 4-byte read overflow immediately after an allocated buffer—the primary outcome is a crash (denial of service). An adjacent-heap leak is theoretically possible in certain memory layouts, but reliable code execution is not indicated in the advisory. Always treat heap overflows conservatively, but this is fundamentally a stability issue rather than a code-execution vulnerability.
Which image editing software is affected?
Any software that uses OpenEXRCore to decode EXR files is potentially affected, including professional VFX and compositing tools. However, the specific impact depends on which version of OpenEXR each tool ships. Contact your VFX software vendor to confirm their OpenEXR version and patch status. Standalone command-line tools like exrcheck are definitely affected until updated.
What should we do if we cannot patch immediately?
Restrict EXR file ingestion from untrusted sources, implement pre-validation that checks file structure before processing, and run automated asset pipelines in sandboxed or containerized environments to limit the impact of a crash. Monitor application logs for abnormal termination related to EXR processing. Plan patching within the next release cycle; this is not a vulnerability to defer indefinitely.
This analysis is based on the CVE record and vendor advisory as of the publication date. Patch availability and affected product versions should be verified against the official OpenEXR GitHub repository and your software vendor's security bulletins before deployment. The CVSS score is provided by NIST; organizations should assess risk in their own environment. No proof-of-concept exploit is provided or linked. Always test patches in a non-production environment before broad deployment. Source: NVD (public-domain), retrieved 2026-07-27. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-44814MEDIUMWindows DWM Memory Disclosure Vulnerability
- CVE-2026-0130LOWAndroid RTCP Buffer Overflow Information Disclosure Vulnerability
- CVE-2026-44808HIGHWindows 11 DWM Privilege Escalation Vulnerability – Patch Guidance
- CVE-2025-15661MEDIUMlibssh2 Out-of-Bounds Heap Read in SFTP Symlink Handling
- CVE-2025-55645MEDIUMHeap Buffer Overflow in GPAC MP4Box v2.4 – DoS Vulnerability
- CVE-2025-55648MEDIUMGPAC MP4Box Heap Buffer Overflow DoS Vulnerability
- CVE-2025-55652MEDIUMHeap Buffer Overflow in GPAC MP4Box v2.4 – DoS Vulnerability
- CVE-2025-55661MEDIUMGPAC MP4Box v2.4 Opus Parser Heap Buffer Overflow