OpenEXR Heap Information Disclosure in PXR24 Decompression (CVE-2026-34543)
OpenEXR is vulnerable to a heap information disclosure in PXR24 decompression, where the undo_pxr24_impl function ignores the actual decompressed size, potentially leading to the exposure of uninitialized heap memory when processing crafted EXR files.
A heap information disclosure vulnerability exists in OpenEXR’s PXR24 decompression functionality, specifically within the undo_pxr24_impl function in internal_pxr24.c and exr_uncompress_buffer() in compression.c. This vulnerability, identified as CVE-2026-34543, stems from the decompression function ignoring the actual decompressed size returned by exr_uncompress_buffer(). Instead, it relies on the expected size derived from the EXR file’s header metadata. The exr_uncompress_buffer() also treats LIBDEFLATE_SHORT_OUTPUT as a successful result. An attacker can exploit this by crafting a malicious PXR24 EXR file containing a truncated zlib stream. This leads to the decoder reading uninitialized heap memory and incorporating it into the output pixel data, potentially exposing sensitive information. The vulnerability affects OpenEXR versions 3.2.0 through 3.2.6, 3.3.0 through 3.3.8, and 3.4.0 through 3.4.7.
Attack Chain
- The attacker crafts a malicious PXR24 EXR file with a truncated zlib stream.
- The victim application uses OpenEXR to open and process the malicious EXR file.
- The
undo_pxr24_implfunction is called to decompress the PXR24 compressed data. - The
exr_uncompress_bufferfunction decompresses the truncated zlib stream, returningLIBDEFLATE_SHORT_OUTPUT, which is treated as a success. undo_pxr24_implignores the actual decompressed size (outSize) and reads from the scratch buffer based on the expected size (uncompressed_size) from the header.- The byte-plane reconstruction loop reads past the valid decompressed data into uninitialized heap memory within the scratch buffer.
- The uninitialized heap memory is incorporated into the output pixel data.
- The victim application processes the pixel data, potentially leaking sensitive information from the heap.
Impact
Successful exploitation of this vulnerability results in a heap information disclosure. Sensitive information from the heap memory may be leaked through the decoded pixel data. The vulnerability is triggered simply by opening a malicious EXR file, requiring no user interaction beyond processing the image. The vulnerable versions of OpenEXR are commonly used in image processing applications, 3D rendering software, and other tools that handle EXR image files. This can lead to data breaches, exposure of confidential information, and potential further compromise of affected systems.
Recommendation
- Apply the patch or upgrade to a fixed version of OpenEXR to address CVE-2026-34543.
- Monitor network traffic and file system activity for attempts to deliver or access suspicious EXR files from untrusted sources.
- Implement input validation and sanitization measures to prevent the processing of potentially malicious EXR files (reference CVE-2026-34543).
- Deploy the Sigma rule provided below to detect processes decompressing EXR files that may exhibit anomalous behavior indicative of exploitation.
Detection coverage 2
Detect OpenEXR PXR24 Decompression with Short Output
mediumDetects processes potentially exploiting CVE-2026-34543 by monitoring for decompression calls that may result in short output when handling EXR files. This rule focuses on identifying processes that use the vulnerable OpenEXR library and might be processing crafted EXR files.
Detect OpenEXR PXR24 Decompression with High Memory Usage
mediumDetects processes that exhibit abnormally high memory usage while decompressing PXR24 EXR files, which might indicate an attempt to exploit CVE-2026-34543. This rule identifies processes using decompression functions associated with OpenEXR and monitors their memory allocation patterns.
Detection queries are kept inside the platform. Get full rules →
Indicators of compromise
2
url
| Type | Value |
|---|---|
| url | https://github.com/user-attachments/files/26002361/poc.zip |
| url | https://github.com/AcademySoftwareFoundation/openexr.git |