Description
OpenEXR is the reference implementation and specification for the EXR image file format, widely used in the motion picture industry. In versions 3.3.0 through 3.3.12 and 3.4.0 through 3.4.13, the PyOpenEXR Python bindings contain a heap out-of-bounds write triggered when reading a crafted deep scanline EXR file. When a deep file declares a literal channel named left alongside layer-prefixed RGB channels left.R, left.G, and left.B, the wrapper processes the literal left channel first and allocates a scalar deep sample array for it, then reuses that same array as the coalesced destination for the prefixed RGB group. The deep reader registers sample slices with an RGB stride (three lanes) into storage that was allocated with scalar shape, so decoding the deep samples writes past the allocation. Opening such a file through the default public Python API, OpenEXR.File(path), causes a heap buffer overflow during normal deep sample decode, leading to memory corruption and a crash. This issue is fixed in versions 3.3.13 and 3.4.14.
Published: 2026-08-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Heap buffer overflow leading to memory corruption
Action: Patch immediately
AI Analysis

Impact

The vulnerability exists in the PyOpenEXR Python bindings of the OpenEXR library. When a deep EXR file declares a literal channel named left along with layer-prefixed RGB channels left.R, left.G, and left.B, the library misallocates a scalar deep sample array for the literal channel and then reuses the same array for the RGB group. The RGB stride (three lanes) written into the scalar-shaped storage overruns the allocation, resulting in an out-of-bounds write and heap buffer overflow during deep sample decoding. This triggers memory corruption and likely crashes the application using the default Python API to open the file.

Affected Systems

The flaw affects the Academy Software Foundation’s OpenEXR library, specifically the PyOpenEXR bindings in versions 3.3.0 through 3.3.12 and 3.4.0 through 3.4.13. Versions 3.3.13 onward and 3.4.14 onward have been patched.

Risk and Exploitability

The CVSS score of 5.5 indicates moderate severity. Exploitation requires a crafted deep scanline EXR file and use of the default PyOpenEXR public API, therefore the attack vector is likely local or requires the ability to supply such a file to a target application. The vulnerability conforms to CWEs 122 and 787, yielding a heap-based buffer overflow and out-of-bounds write. The EPSS score is not available and the issue is not listed in CISA's KEV catalog, suggesting that widespread exploitation has not yet been documented.

Generated by OpenCVE AI on August 26, 2026 at 03:11 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade OpenEXR to version 3.3.13 or later, or to 3.4.14 or later, to apply the security fix.
  • If an upgrade cannot be performed promptly, implement a pre-validation layer that scans the EXR header for conflicting literal and prefix‑RGB channel names and rejects the file before it is passed to the PyOpenEXR decoder.
  • If the environment cannot be sandboxed, consider running the PyOpenEXR usage in a separate process or container and monitor the process for crashes or unexpected behavior.

Generated by OpenCVE AI on August 26, 2026 at 03:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 26 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 25 Aug 2026 20:00:00 +0000

Type Values Removed Values Added
Description OpenEXR is the reference implementation and specification for the EXR image file format, widely used in the motion picture industry. In versions 3.3.0 through 3.3.12 and 3.4.0 through 3.4.13, the PyOpenEXR Python bindings contain a heap out-of-bounds write triggered when reading a crafted deep scanline EXR file. When a deep file declares a literal channel named left alongside layer-prefixed RGB channels left.R, left.G, and left.B, the wrapper processes the literal left channel first and allocates a scalar deep sample array for it, then reuses that same array as the coalesced destination for the prefixed RGB group. The deep reader registers sample slices with an RGB stride (three lanes) into storage that was allocated with scalar shape, so decoding the deep samples writes past the allocation. Opening such a file through the default public Python API, OpenEXR.File(path), causes a heap buffer overflow during normal deep sample decode, leading to memory corruption and a crash. This issue is fixed in versions 3.3.13 and 3.4.14.
Title OpenEXR: Heap buffer overflow in PyOpenEXR from literal/prefixed RGB channel name collision in deep images
Weaknesses CWE-122
CWE-787
References
Metrics cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-26T12:45:20.665Z

Reserved: 2026-07-30T16:19:08.082Z

Link: CVE-2026-68514

cve-icon Vulnrichment

Updated: 2026-08-26T12:45:08.967Z

cve-icon NVD

Status : Deferred

Published: 2026-08-25T20:17:02.613

Modified: 2026-09-09T21:07:31.353

Link: CVE-2026-68514

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-26T03:15:03Z

Weaknesses