Skip to main content

PyOpenEXR CVE-2026-62986

| EUVDEUVD-2026-65705 MEDIUM
Information Exposure (CWE-200)
2026-08-25 GitHub_M
4.3
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 scanline EXR with layer-prefixed RGB channels
  2. Delivery
    Deliver file to target Python application or user
  3. Exploit
    Application processes file via PyOpenEXR default API (separate_channels=False)
  4. Execution
    Lane assignment logic leaves G and B NumPy array lanes uninitialized
  5. Persist
    Application serializes, logs, or transmits arrays
  6. Impact
    Uninitialized heap memory contents exposed to attacker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

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

Exploitation Conditions

The vulnerable code path requires all four of the following conditions to be simultaneously true: (1) the application uses the PyOpenEXR Python bindings - the C/C++ library is unaffected; (2) the target EXR file is in deep scanline format specifically, not flat scanline or tiled; (3) the file's channels use layer-prefixed naming (e.g., left.R, left.G, left.B) rather than the conventional unprefixed R, G, B; and (4) channel coalescing is active, which is the default (separate_channels=False) and requires no explicit attacker-controlled configuration change. The CVSS UI:R metric further requires that a user or automated process actively open or process the crafted file. Exploitation is bounded to same-process heap contents; no privilege escalation, cross-process access, or code execution is involved. The layer-prefix requirement limits the attack to files deliberately crafted to trigger this path, excluding most legitimate EXR files.

Impact

The vendor CVSS score of 4.3 (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N) accurately reflects the constrained impact: a low-confidentiality information disclosure gated behind user interaction. The UI:R requirement is a meaningful barrier to automated mass exploitation - a crafted EXR file must be actively opened or ingested by the target application. No EPSS score was provided in the input data; its absence prevents probabilistic exploitation rate comparison. The vulnerability does not appear in CISA KEV, and no proof-of-concept exploit code has been identified, making this a low-urgency but genuine concern for pipelines handling untrusted EXR content. SSVC assessment: exploitation status is none, automatable is no given the file-delivery requirement, and technical impact is partial, limited to same-process heap contents. The primary real-world risk sits with server-side rendering services, digital asset management platforms, and CI pipelines that ingest user-supplied EXR files - in these contexts the potential for leaking in-process sensitive data (other image data, credentials cached in heap) elevates practical concern beyond the raw CVSS score. The attack-surface specificity - deep scanline format, layer-prefixed channels, Python bindings, default coalescing mode - keeps the exploitable population narrow.

Exploit ScenarioDerived

An attacker submits a crafted deep scanline EXR file with layer-prefixed RGB channels (e.g., left.R, left.G, left.B) to a web-based asset management portal or render farm API that accepts EXR uploads for preview or processing. The service calls OpenEXR.File() with default settings, receives NumPy arrays whose green and blue lanes contain raw uninitialized heap memory, then serializes or logs the arrays as part of a thumbnail generation or metadata extraction workflow - inadvertently returning or storing heap contents to the attacker. No public proof-of-concept exploit has been identified at time of analysis, though the advisory's description of the triggering conditions is specific enough for a technically capable researcher to reproduce.

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

PyOpenEXR Python bindings in OpenEXR versions 3.3.0-3.3.12 and 3.4.0-3.4.13 leak uninitialized same-process heap memory to calling Python code when processing crafted deep scanline EXR files that contain layer-prefixed RGB channels. The flaw originates in PyPart::setDeepSliceData(), where lane assignment uses exact unprefixed string matching, leaving the green and blue NumPy array lanes uninitialized before returning them to the caller. Python applications ingesting untrusted EXR files that subsequently log, serialize, or transmit the resulting arrays may inadvertently expose heap contents; no public exploit code has been identified at time of analysis, and this vulnerability is not listed in CISA KEV.

RemediationAI

Vendor-released patches are OpenEXR 3.3.13 (for the 3.3.x branch) and 3.4.14 (for the 3.4.x branch), confirmed by the GitHub Security Advisory GHSA-pf59-r2mc-x746 and three upstream commits: 36ff0968de08d7ae80792f9f53402f93433207bb, 5105809507ba572d8cad12ec9f5a5c9d378354b9, and 5a534e2228c853034e5cb9d2599ebf82f48f51b0. Upgrade via pip (pip install 'openexr>=3.3.13' or 'openexr>=3.4.14' depending on the active branch) or through your distribution's package manager once updated packages are available. If immediate upgrade is not feasible, pass separate_channels=True to the OpenEXR.File API to disable channel coalescing - this eliminates the vulnerable code path but changes the return structure so all callers must be updated to handle per-channel arrays rather than a grouped RGB array, which may be a significant refactor for large codebases. A second compensating control is to validate or sandbox untrusted EXR files at the ingestion boundary before they reach the PyOpenEXR parser, rejecting deep scanline files or stripping layer prefixes upstream.

Affected VersionsENISA

OpenEXR 3.3.0, < 3.3.13
OpenEXR 3.4.0, < 3.4.14

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

OpenEXR (CPE: cpe:2.3:a:academysoftwarefoundation:openexr) is the Academy Software Foundation's reference implementation for the high-dynamic-range EXR image format, heavily used in motion picture VFX pipelines. The vulnerability resides in the C++ wrapper that backs the PyOpenEXR Python bindings, specifically in PyPart::setDeepSliceData() within PyOpenEXR.cpp. When the default channel coalescing mode (separate_channels=False) groups layer-prefixed channels such as left.R, left.G, and left.B into a unified RGB sample array, the lane assignment logic performs exact string comparison (!strcmp(c.name(), "G")) rather than suffix matching. Prefixed channel names like left.G fail this match, so lanes 1 and 2 are never written; the backing memory is uninitialized heap storage that is then wrapped in NumPy arrays and returned to Python. The root cause class is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) driven by an incorrect string equality check rather than suffix inspection. The fix confirmed in three upstream commits (36ff0968, 51058095, 5a534e22) replaces the exact-match with last-character comparison (last 'G', last 'B', last == 'A'), correctly handling any channel whose name ends with the conventional single-letter suffix.

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 4.3 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Crafted file delivered over network with no auth required, but active user processing is necessary; impact is partial heap disclosure only, with no integrity or availability effect.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Aug 25, 2026 - 20:06 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 return stale heap data when reading a crafted deep scanline EXR that uses layer-prefixed RGB channels. With the default channel coalescing (separate_channels=False), the wrapper groups channels such as left.R, left.G, and left.B into a single RGB sample array, but the lane-offset calculation in PyPart::setDeepSliceData() only recognizes the exact unprefixed names G, B, and A. As a result, prefixed channels like left.G and left.B are decoded into lane 0 while lanes 1 and 2 are left uninitialized and returned to Python. A Python application that reads untrusted deep EXR files through the default OpenEXR.File API and then logs, serializes, previews, or otherwise processes the resulting NumPy sample arrays may expose uninitialized same-process heap contents, in addition to receiving incorrect green and blue channel data. This issue is fixed in versions 3.3.13 and 3.4.14.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Medium
VFX and film industry standard format, limited footprint outside media pipelines
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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