Vulnerabilities in pkg:pypi/OpenEXR
PACKAGECVE-2025-48074 is a MODERATE openexr out-of-memory vulnerability (CWE-770: Allocation of Resources Without Limits or Throttling) affecting OpenEXR libraries in the PyPI ecosystem. The issue involves openexr out-of-memory via unbounded file header values. Remediation is available by upgrading affected packages to version 3.3.3.
pkg:pypi/OpenEXR
Vulnerability advisories affecting package pkg:pypi/OpenEXR. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-x22w-82jp-8rvf | CVE-2025-48074 | MODERATE | OpenEXR Out-Of-Memory via Unbounded File Header Values |
| GHSA-p8xc-w3q4-h64x | CVE-2026-34589 | HIGH | OpenEXR: DWA Lossy Decoder Heap Out-of-Bounds Write |
| GHSA-588r-cr5c-w6hf | CVE-2026-34588 | HIGH | OpenEXR has a signed 32-bit Overflow in PIZ Decoder Leads to OOB Read/Write |
| GHSA-q6vj-wxvf-5m8c | CVE-2026-26981 | MODERATE | OpenEXR has heap-buffer-overflow via signed integer underflow in ImfContextInit.cpp |
| GHSA-57cw-j6vp-2p9m | CVE-2025-64183 | MODERATE | OpenEXR has use after free in PyObject_StealAttrString |
| GHSA-vh63-9mqx-wmjr | CVE-2025-64182 | MODERATE | OpenEXR has buffer overflow in PyOpenEXR_old's channels() and channel() |
| GHSA-3h9h-qfvw-98hq | CVE-2025-64181 | LOW | OpenEXR Makes Use of Uninitialized Memory |
| GHSA-cr4v-6jm6-4963 | CVE-2026-27622 | HIGH | OpenEXR's CompositeDeepScanLine integer-overflow leads to heap OOB write |
| GHSA-h45x-qhg2-q375 | CVE-2025-48071 | HIGH | OpenEXR Heap-Based Buffer Overflow in Deep Scanline Parsing via Forged Unpacked Size |
| GHSA-qhpm-86v7-phmm | CVE-2025-48073 | MODERATE | OpenEXR ScanLineProcess::run_fill NULL Pointer Write In "reduceMemory" Mode |
| GHSA-4r7w-q3jg-ff43 | CVE-2025-48072 | MODERATE | OpenEXR Out of Bounds Heap Read due to Bad Pointer Arithmetic in LossyDctDecoder_execute |
| GHSA-8m57-j273-2qg9 | CVE-2017-9112 | MODERATE | OpenEXR invalid read |
| GHSA-qxh9-r8xw-7v99 | CVE-2017-9111 | HIGH | OpenEXR invalid write |
CVE-2025-48074 at a Glance
How to Fix CVE-2025-48074
To remediate this vulnerability, upgrade all affected OpenEXR dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install OpenEXR>=3.3.3
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show OpenEXR
How to Check if You Are Affected
To determine whether your Python environment is affected by CVE-2025-48074, inspect your installed packages using pip:
pip show OpenEXR
Analyze the terminal output to locate any version of OpenEXR in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 3.3.3), your application is affected.
Note: The pip show OpenEXR command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-770: Allocation of Resources Without Limits or Throttling, where the product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated. In OpenEXR, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2025-48074 Affected OpenEXR Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
OpenEXR
|
PyPI |
≥ 3.3.2
< 3.3.3
All 1 versions
3.3.2
|
3.3.3
|
References
Frequently Asked Questions
What is CVE-2025-48074?
Which OpenEXR versions are affected?
What version fixes CVE-2025-48074?
Is OpenEXR affected?
What CWE is associated with CVE-2025-48074?
How can I check PyPI dependencies for CVE-2025-48074?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-x22w-82jp-8rvf",
"modified" : "2026-06-11T14:09:44Z",
"published" : "2025-07-31T19:23:18Z",
"aliases" : [ "CVE-2025-48074" ],
"summary" : "OpenEXR Out-Of-Memory via Unbounded File Header Values",
"details" : "### Summary\nThe OpenEXR file format defines many information about the final image inside of the file header, such as the size of data/display window.\n\nThe application trusts the value of `dataWindow` size provided in the header of the input file, and performs computations based on this value.\n\nThis may result in unintended behaviors, such as excessively large number of iterations and/or huge memory allocations.\n\n\n### Details\nA concrete example of this issue is present in the function `readScanline()` in `ImfCheckFile.cpp` at line 235, that performs a for-loop using the `dataWindow min.y` and `max.y` coordinates that can be arbitrarily large.\n\n```cpp\nin.setFrameBuffer (i);\n\nint step = 1;\n\n//\n// try reading scanlines. Continue reading scanlines\n// even if an exception is encountered\n//\nfor (int y = dw.min.y; y <= dw.max.y; y += step) // <-- THIS LOOP IS EXCESSIVE BECAUSE OF DW.MAX\n{\n try\n {\n in.readPixels (y);\n }\n catch (...)\n {\n threw = true;\n\n //\n // in reduceTime mode, fail immediately - the file is corrupt\n //\n if (reduceTime) { return threw; }\n }\n}\n```\n\nAnother example occurs in the `EnvmapImage::resize` function that in turn calls `Array2D<T>::resizeEraseUnsafe` passing the `dataWindow` X and Y coordinates and perform a huge allocation.\n\nOn some system, the allocator will simply return `std::bad_alloc` and crash. On other systems such as macOS, the allocator will happily continue with a \"small\" pre-allocation and allocate further memory whenever it is accessed.\nThis is the case with the `EnvmapImage::clear` function that is called right after and fills the image RGB values with zeros, allocating tens of Gigabytes.\n\n### PoC\n\nNOTE: please download the `oom_crash.exr` file via the following link:\n \nhttps://github.com/ShielderSec/poc/tree/main/CVE-2025-48074\n\n1. Compile the `exrcheck` binary in a macOS or GNU/Linux machine with ASAN.\n2. Open the `oom_crash.exr` file with the following command:\n\n```\nexrcheck oom_crash.exr\n```\n\n3. Notice that `exrenvmap`/`exrcheck` crashes with ASAN stack-trace.\n\n### Impact\nAn attacker could cause a denial of service by stalling the application or exhaust memory by stalling the application in a loop which contains a memory leakage.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "OpenEXR"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "3.3.2"
}, {
"fixed" : "3.3.3"
} ]
} ],
"versions" : [ "3.3.2" ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-x22w-82jp-8rvf"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-48074"
}, {
"type" : "WEB",
"url" : "https://github.com/AcademySoftwareFoundation/openexr/commit/2df7802a6421bf39ed73a607392f01b3c6da4e4a"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/AcademySoftwareFoundation/openexr"
}, {
"type" : "WEB",
"url" : "https://github.com/ShielderSec/poc/tree/main/CVE-2025-48074"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-770" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2025-07-31T19:23:18Z",
"nvd_published_at" : "2025-08-01T17:15:52Z"
}
}