Skip to main content

PyOpenEXR CVE-2026-68514

| EUVDEUVD-2026-65745 MEDIUM
Heap-based Buffer Overflow (CWE-122)
2026-08-25 GitHub_M
5.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft deep EXR file with 'left' plus 'left.R/G/B' channel collision
  2. Delivery
    Deliver file to target user or automated pipeline
  3. Exploit
    Victim application calls OpenEXR.File(path) without separate_channels=True
  4. Execution
    Scalar buffer allocated for literal channel 'left'
  5. Persist
    Deep reader writes RGB stride (3 lanes) past scalar allocation boundary
  6. Impact
    Heap corruption causes process crash

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Heap buffer bounds checking
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the target application to use the PyOpenEXR Python bindings specifically (not the raw C++ OpenEXR library) and invoke the default OpenEXR.File(path) API without the separate_channels=True parameter. The vulnerable code path is triggered only when the input EXR file is a deep scanline or deep tiled file containing a channel naming collision: a literal channel whose name exactly matches the group key that coalescing would generate from layer-prefixed RGB channels (e.g., literal 'left' plus 'left.R', 'left.G', 'left.B'). The CVSS vector confirms UI:R - a user or automated process must actively open the crafted file - and AV:L, meaning the file must be present in a location accessible to the processing application. No network-facing remote code execution vector is indicated. Using separate_channels=True fully prevents the vulnerability. No authentication is required to trigger the flaw once the file is opened, consistent with PR:N.

Impact

The CVSS 3.1 score of 5.5 Medium with vector AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H accurately reflects the threat model: exploitation requires a victim to open a crafted file (UI:R) in a local or pipeline context (AV:L), with no confirmed confidentiality or integrity impact - only availability loss via crash and memory corruption. No EPSS data was included in the source intelligence, and this CVE has no CISA KEV listing and no identified public exploit code, making real-world exploitation currently unconfirmed. The realistic risk is highest for VFX studios and automated media ingestion pipelines where processing third-party or untrusted EXR files is routine. The CVSS Medium rating aligns well with this threat profile: no remote unauthenticated vector, no privilege escalation pathway, and no data exfiltration impact are indicated by any available signal. The triggering condition - a specific channel naming collision - is trivially constructible by an attacker but requires file delivery to a vulnerable consumer.

Exploit ScenarioDerived

An attacker crafts a deep scanline EXR file containing a literal channel named 'left' alongside 'left.R', 'left.G', and 'left.B' layer-prefixed channels, then delivers it to a VFX production pipeline, rendering farm job, or media management tool using the PyOpenEXR Python API. When the application invokes the default OpenEXR.File(path) call on the crafted file, the channel coalescing logic triggers the heap buffer overflow, crashing the process. In batch-ingestion environments that process untrusted or user-submitted EXR assets without isolation, repeated delivery of such files could serve as a sustained denial-of-service attack against the processing pipeline.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 25, 2026

Heap buffer overflow in PyOpenEXR Python bindings versions 3.3.0-3.3.12 and 3.4.0-3.4.13 causes memory corruption and process crash when opening a crafted deep scanline EXR file. A specific channel naming collision - a literal channel 'left' coexisting with layer-prefixed 'left.R', 'left.G', 'left.B' - causes the wrapper to allocate scalar-shaped deep sample storage and then write into it at RGB stride (three lanes), overflowing the heap allocation. No public exploit or CISA KEV listing exists at time of analysis; vendor-confirmed fixes are available in versions 3.3.13 and 3.4.14.

RemediationAI

The primary fix is to upgrade PyOpenEXR to version 3.3.13 (3.3.x branch) or 3.4.14 (3.4.x branch), as confirmed by vendor GitHub Security Advisory GHSA-mw28-66qc-c883. The underlying code changes are in commits c1f3ec0d91cfa5a8035ecd00920835ac76e01640 and d134e3cd81a2e343f2919e86bf949f576b1ab16a. As an immediate workaround for environments that cannot patch promptly, callers can pass separate_channels=True to OpenEXR.File(), which bypasses the coalescing logic entirely and prevents the overflow; this requires downstream code to handle separate per-channel numpy arrays rather than coalesced RGB arrays, which may require application-level changes. Automated pipelines ingesting untrusted EXR content should additionally consider sandboxing the parsing process to limit the blast radius of any crash to the worker process rather than the broader application.

Affected VersionsENISA

OpenEXR 3.4.0, < 3.4.14
OpenEXR 3.3.0, < 3.3.13

Affected Packages

euvd openexr_3_3_0 fix: 3.3.13
euvd openexr_3_4_0 fix: 3.4.14

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is PyOpenEXR.cpp, the CPython wrapper layer of the OpenEXR reference library by the Academy Software Foundation (CPE: cpe:2.3:a:academysoftwarefoundation:openexr:*:*:*:*:*:*:*:*). The root cause is CWE-122 (Heap-based Buffer Overflow) in the channel coalescing logic. The pre-fix function validateCoalescedChannelTypes failed to detect key collisions between literal channel names and coalesced RGB group keys. When a deep scanline file declares both a literal 'left' channel and layer-prefixed 'left.R/G/B', the wrapper processes the literal first - allocating a scalar deep sample array - then reuses that same pointer as the coalesced RGB destination. The deep reader registers slice offsets at RGB stride (3 lanes) into memory sized for 1 lane, writing well past the allocation. The fix in commits c1f3ec0d and d134e3cd adds a coalescedKeys collision-detection set and throws std::invalid_argument before any decode begins, with separate_channels=True as the documented escape hatch.

Know when Openexr gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.5 MEDIUM
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 5.5 MEDIUM

File must be opened locally by a user (AV:L, UI:R); no privileges needed; only availability impacted via crash, no confidentiality or integrity loss confirmed.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Aug 25, 2026 - 21:04 EUVD

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
standard VFX and motion picture industry image format, not general enterprise
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

28
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

A heap overflow occurs when a program writes data beyond the bounds of a buffer allocated in the heap memory region.

CVE-2018-18444 HIGH POC
8.8 Oct 17

makeMultiView.cpp in exrmultiview in OpenEXR 2.3.0 has an out-of-bounds write, leading to an assertion failure or possib

CVE-2026-27622 HIGH POC
8.4 Mar 03

Out-of-bounds heap write in OpenEXR's CompositeDeepScanLine::readPixels lets a crafted multi-part deep-scanline EXR file

CVE-2017-12596 HIGH POC
7.8 Aug 07

In OpenEXR 2.2.0, a crafted image causes a heap-based buffer over-read in the hufDecode function in IlmImf/ImfHuf.cpp du

CVE-2026-26981 MEDIUM POC
6.5 Feb 24

OpenEXR versions 3.3.0-3.3.6 and 3.4.0-3.4.4 are vulnerable to a heap buffer overflow in file parsing due to improper in

CVE-2021-3598 MEDIUM POC
5.5 Jul 06

There's a flaw in OpenEXR's ImfDeepScanLineInputFile functionality in versions prior to 3.0.5. Rated medium severity (CV

CVE-2020-16589 MEDIUM POC
5.5 Dec 09

A head-based buffer overflow exists in Academy Software Foundation OpenEXR 2.3.0 in writeTileData in ImfTiledOutputFile.

CVE-2020-16588 MEDIUM POC
5.5 Dec 09

A Null Pointer Deference issue exists in Academy Software Foundation OpenEXR 2.3.0 in generatePreview in makePreview.cpp

CVE-2020-16587 MEDIUM POC
5.5 Dec 09

A heap-based buffer overflow vulnerability exists in Academy Software Foundation OpenEXR 2.3.0 in chunkOffsetReconstruct

CVE-2020-11765 MEDIUM POC
5.5 Apr 14

An issue was discovered in OpenEXR before 2.4.1. Rated medium severity (CVSS 5.5), this vulnerability is no authenticati

CVE-2020-11764 MEDIUM POC
5.5 Apr 14

An issue was discovered in OpenEXR before 2.4.1. Rated medium severity (CVSS 5.5), this vulnerability is no authenticati

CVE-2020-11763 MEDIUM POC
5.5 Apr 14

An issue was discovered in OpenEXR before 2.4.1. Rated medium severity (CVSS 5.5), this vulnerability is no authenticati

CVE-2020-11762 MEDIUM POC
5.5 Apr 14

An issue was discovered in OpenEXR before 2.4.1. Rated medium severity (CVSS 5.5), this vulnerability is no authenticati

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 12 Affected
SUSE Linux Enterprise Module for Desktop Applications 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy