CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-34589

CVE-2026-34589: Heap Out-of-Bounds Write in OpenEXR DWA Lossy Decoder

Amit Schendel
Amit Schendel
Senior Security Researcher

Apr 8, 2026·7 min read·55 visits

Executive Summary (TL;DR)

A 32-bit signed integer overflow in OpenEXR's DWA decoder produces a negative memory offset, resulting in a heap out-of-bounds write during file decompression.

CVE-2026-34589 is a high-severity heap out-of-bounds write vulnerability within the OpenEXR Core library, specifically in the DreamWorks Animation (DWA) lossy decompression logic. By crafting a malicious EXR file with excessively large dimensions, an attacker can trigger a 32-bit signed integer overflow that corrupts subsequent pointer arithmetic. This memory corruption affects multiple version branches of OpenEXR and allows an attacker to cause a denial-of-service condition or potentially execute arbitrary code.

Vulnerability Overview

OpenEXR is a high dynamic-range (HDR) image file format developed by the Academy Software Foundation, widely utilized in computer graphics, visual effects, and animation pipelines. The libOpenEXRCore library implements the foundational encoding and decoding routines required to process these files. Among the supported compression schemes is the DreamWorks Animation (DWA) lossy compression format, which optimizes file sizes for high-resolution assets.

The vulnerability, tracked as CVE-2026-34589, is an integer overflow (CWE-190) flaw located within the DWA decompression routines of the libOpenEXRCore library. When processing an exceptionally large or maliciously crafted EXR image, the decoding logic fails to validate the boundaries of a multiplication operation used to determine memory offsets. This failure produces a wrapped or negative integer value that corrupts subsequent memory pointer arithmetic.

Consequently, the integer overflow triggers a heap-based out-of-bounds write (CWE-787). An attacker leverages this memory corruption by convincing a victim to process a malformed EXR file. The vulnerability compromises the integrity and availability of the application, leading to severe denial-of-service conditions or providing a pathway to arbitrary code execution within the context of the calling process.

Root Cause Analysis

The root cause of CVE-2026-34589 originates in the internal_dwa_decoder.h file, specifically within the logic responsible for allocating and mapping memory blocks for individual color components. During the decoding of DWA-compressed data, the software calculates an offset array based on the image's block dimensions. The horizontal dimension of the image is divided into 8x8 blocks, yielding a variable referred to as numBlocksX.

To determine the total memory required for a specific row block, the library performs a multiplication operation: int offset = numBlocksX * 64;. This calculation relies on standard 32-bit signed integer arithmetic. The maximum representable value for a signed 32-bit integer (INT_MAX) is 2,147,483,647. If an EXR file specifies a dataWindow large enough to force numBlocksX to exceed 33,554,431, the resulting product surpasses the 32-bit limit.

> [!NOTE] > The integer overflow wraps the calculation into the negative value space or truncates it, producing an entirely incorrect offset value. The software implicitly trusts this resultant calculation without validating it against the allocated buffer limits.

This erroneous offset is directly applied to the base pointer of the rowBlock backing store. The addition of a negative or heavily truncated integer to the heap pointer shifts the destination address outside the bounds of the legitimately allocated buffer. The software proceeds under the assumption that the pointer remains valid, setting the stage for memory corruption in subsequent execution phases.

Code Analysis

An examination of the vulnerable implementation reveals a fundamental flaw in variable type selection for memory bound calculations. The original codebase utilizes a standard int data type, which defaults to a signed 32-bit representation on most architectures. This design choice inherently limits the maximum safe bounding calculations for ultra-high-resolution image blocks.

// Vulnerable implementation pattern
int numBlocksX = calculate_blocks(dataWindow.maxX, dataWindow.minX);
// ...
// CWE-190: 32-bit signed integer overflow occurs here
int offset = numBlocksX * 64; 
 
// Corrupted pointer arithmetic
float* componentBlock = rowBlock[comp] + offset;

The official patch for CVE-2026-34589 refactors the mathematical operation to utilize a 64-bit unsigned integer type. By casting or defining the variables as uint64_t or size_t, the arithmetic operation safely accommodates the maximum possible values derived from the EXR dataWindow attributes without wrapping.

// Patched implementation pattern
size_t numBlocksX = calculate_blocks_safe(dataWindow.maxX, dataWindow.minX);
// ...
// Safe 64-bit unsigned arithmetic
size_t offset = numBlocksX * 64ULL; 
 
// Bounds checking added prior to pointer assignment
if (offset > MAX_ALLOCATED_SIZE) {
    return EXR_ERR_OUT_OF_MEMORY;
}
float* componentBlock = rowBlock[comp] + offset;

This remediation prevents the integer overflow entirely. Furthermore, patched versions incorporate explicit validation checks to verify that the derived offset does not exceed the known boundaries of the allocated heap chunk before committing the pointer assignment. This robust boundary validation mitigates variant attacks targeting the same code path.

Exploitation

Exploitation of CVE-2026-34589 requires a local attack vector (AV:L) and user interaction (UI:A). An attacker constructs a malformed EXR file specifically designed to manipulate the dataWindow header fields. By defining extreme width dimensions, the attacker forces the numBlocksX variable into the precise value range required to trigger the 32-bit signed integer overflow during the file initialization phase.

When the victim application opens the malicious file, the OpenEXR Core library instantiates the DWA decoding pipeline. The overflow occurs, generating a corrupted, out-of-bounds pointer within the component mapping phase. The exploitation sequence proceeds to the LossyDctDecoder_execute function, which accepts the corrupted pointer as a legitimate destination for decompressed DCT (Discrete Cosine Transform) data.

The LossyDctDecoder_execute function performs bulk write operations to the out-of-bounds memory address. By structuring the compressed data payload within the EXR file, an attacker controls the specific bytes written to the adjacent heap memory. This capability allows the attacker to overwrite critical heap management structures, neighboring object pointers, or function tables.

Currently, no public proof-of-concept exploits exist for this vulnerability. The theoretical path to code execution requires bypassing modern memory mitigations such as ASLR and DEP, which typically necessitates coupling this out-of-bounds write with a discrete information disclosure vulnerability to map the heap layout.

Impact Assessment

The primary and most immediate impact of this vulnerability is a Denial of Service (DoS). When the LossyDctDecoder_execute function writes data to an invalid memory address, it causes an immediate segmentation fault or triggers heap-corruption detection mechanisms within the operating system. This renders the application processing the EXR file unavailable, which disrupts automated rendering pipelines and batch processing workflows.

Beyond denial of service, the out-of-bounds write poses a credible risk of arbitrary code execution. If an attacker overwrites critical function pointers or application metadata located on the heap, they can redirect the execution flow of the application. Code execution occurs within the privilege context of the user or service running the vulnerable OpenEXR process.

The vulnerability metrics reflect the severity of this issue. Under the CVSS 4.0 framework, the flaw carries a High severity score of 8.4, acknowledging the substantial impacts on confidentiality, integrity, and availability following user interaction. The CVSS 3.1 score sits at 5.0 (Medium), primarily due to its narrow emphasis on the local attack vector and immediate denial-of-service capability.

Despite the high technical severity, the EPSS (Exploit Prediction Scoring System) score remains extremely low at 0.00028 (7.86th percentile). This indicates a negligible probability of the vulnerability being actively exploited in the wild within the next 30 days. The disparity between technical severity and exploit likelihood highlights the gap between theoretical exploitability and practical, weaponized attacks.

Remediation

To remediate CVE-2026-34589, organizations must upgrade their OpenEXR deployments to the official patched releases provided by the Academy Software Foundation. The vulnerability is resolved in OpenEXR versions 3.2.7, 3.3.9, and 3.4.9. Administrators must verify the specific branch in use across their rendering nodes and update to the corresponding patched iteration.

For systems where immediate patching is not feasible, organizations can implement preliminary input validation wrappers. Software applications leveraging libOpenEXRCore can pre-flight EXR files by extracting and validating the dataWindow header values before passing the file handle to the DWA decoder. Rejecting files with anomalous or structurally impossible dimensions prevents the vulnerable code path from being reached.

Developers integrating OpenEXR into custom applications should audit their own codebase for similar integer overflow patterns. Transitioning calculations involving memory allocation bounds to robust 64-bit unsigned types, such as size_t, provides inherent protection against this class of vulnerability. Incorporating fuzz testing strategies into the continuous integration pipeline further identifies undiscovered boundary calculation flaws.

Official Patches

Academy Software FoundationRelease v3.2.7
Academy Software FoundationRelease v3.3.9
Academy Software FoundationRelease v3.4.9

Fix Analysis (1)

Technical Appendix

CVSS Score
8.4/ 10
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
EPSS Probability
0.03%
Top 92% most exploited

Affected Systems

OpenEXR 3.2.0 - 3.2.6OpenEXR 3.3.0 - 3.3.8OpenEXR 3.4.0 - 3.4.8

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenEXR
Academy Software Foundation
>= 3.2.0, <= 3.2.63.2.7
OpenEXR
Academy Software Foundation
>= 3.3.0, <= 3.3.83.3.9
OpenEXR
Academy Software Foundation
>= 3.4.0, <= 3.4.83.4.9
AttributeDetail
CWE IDsCWE-190, CWE-787
Attack VectorLocal (AV:L)
CVSS 4.08.4
EPSS Score0.00028
Exploit StatusNone
ImpactDenial of Service, Potential RCE

MITRE ATT&CK Mapping

T1203Exploitation for Client Execution
Execution
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-190
Integer Overflow or Wraparound

The software performs a calculation that can produce an integer overflow or wraparound, when the logic assumes that the resulting value will always be larger than the original value.

Vulnerability Timeline

Preliminary metadata updates observed
2026-03-27
Advisory metadata added to SECURITY.md
2026-04-02
CVE Published
2026-04-06

References & Sources

  • [1]GitHub Advisory
  • [2]CVE Record
  • [3]NVD Entry

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-61539
10.0

CVE-2026-61539: Remote Code Execution via Llama3 Tool Parser Eval Injection in Xinference

CVE-2026-61539 is a critical remote code execution vulnerability in Xinference, an inference API framework for open-source LLMs. In version 2.5.0 and earlier, model-generated outputs representing Llama3 tool calls are passed directly to Python's built-in eval() function inside the parser components. By manipulating conversational input or injecting instructions, an attacker can influence the LLM to output a Python expression containing malicious system commands, resulting in unauthenticated remote code execution on the host. This vulnerability has been resolved in Xinference version 2.7.0.

Alon Barad
Alon Barad
3 views•6 min read
•about 2 hours ago•CVE-2026-77354
8.7

CVE-2026-77354: Uncontrolled Resource Consumption (OOM) via Sparse Array Indexes in kin-openapi

An uncontrolled resource consumption vulnerability (CWE-400/CWE-789) exists within the kin-openapi Go library prior to version 0.142.0. The vulnerability occurs during the processing of highly sparse array indexes inside query parameters defined in deepObject style. An unauthenticated remote attacker can exploit this flaw to cause an immediate Out-of-Memory (OOM) crash of the target application.

Amit Schendel
Amit Schendel
1 views•8 min read
•about 3 hours ago•CVE-2026-77413
9.3

CVE-2026-77413: Remote Code Execution via Prototype Chain Bypass in JSONata Evaluator

A critical prototype pollution and sandbox escape vulnerability was discovered in the JSONata query and transformation library before versions 1.8.8 and 2.2.0. By providing a malicious JSONata expression that bypasses ownership checks on object properties, remote attackers can execute arbitrary code in the context of the host Node.js application.

Alon Barad
Alon Barad
2 views•6 min read
•about 4 hours ago•CVE-2026-63135
8.2

CVE-2026-63135: Stored Cross-Site Scripting (XSS) via Referer Header in YOURLS

CVE-2026-63135 is a critical stored Cross-Site Scripting (XSS) vulnerability affecting YOURLS (Your Own URL Shortener) versions 1.5.1 up to (but not including) 1.10.4. Unauthenticated remote attackers can inject malicious JavaScript arrays by crafting an HTTP Referer header sent to a short URL redirect. This value is saved in the database logs and executed without context-aware escaping when an administrative user views the corresponding statistics visualization page.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 5 hours ago•CVE-2026-68508
7.8

CVE-2026-68508: Arbitrary Code Execution via Unsafe Dynamic Instantiation in Hydra Core

CVE-2026-68508 is a high-severity arbitrary code execution vulnerability in facebookresearch/hydra (hydra-core) prior to version 1.3.4. The vulnerability exists within the dynamic instantiation system hydra.utils.instantiate(), which resolves and executes arbitrary Python callables from configuration files. An attacker capable of submitting untrusted configurations can achieve arbitrary code execution in the context of the consuming process.

Alon Barad
Alon Barad
5 views•7 min read
•about 6 hours ago•CVE-2026-77415
9.3

CVE-2026-77415: Sandbox Escape and Arbitrary Code Execution in JSONata Engine

A critical sandbox escape vulnerability in JSONata versions prior to 1.8.8 and 2.2.1 allows unauthenticated remote attackers to execute arbitrary code on the host machine. By submitting crafted JSONata expressions, an attacker can manipulate internal AST structures, bypass object clone helpers, spoof native function flags, and escape the evaluation environment to execute system commands through the Node.js runtime.

Alon Barad
Alon Barad
10 views•6 min read