OpenEXR Out-Of-Memory via Unbounded File Header Values
Summary
The OpenEXR file format defines many information about the final image inside of the file header, such as the size of data/display window.
The application trusts the value of dataWindow size provided in the header of the input file, and performs computations based on this value.
This may result in unintended behaviors, such as excessively large number of iterations and/or huge memory allocations.
Details
A 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.
in.setFrameBuffer (i);
int step = 1;
//
// try reading scanlines. Continue reading scanlines
// even if an exception is encountered
//
for (int y = dw.min.y; y <= dw.max.y; y += step) // <-- THIS LOOP IS EXCESSIVE BECAUSE OF DW.MAX
{
try
{
in.readPixels (y);
}
catch (...)
{
threw = true;
//
// in reduceTime mode, fail immediately - the file is corrupt
//
if (reduceTime) { return threw; }
}
}
Another 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.
On 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.
This 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.
PoC
NOTE: please download the oom_crash.exr file via the following link:
https://github.com/ShielderSec/poc/tree/main/CVE-2025-48074
- Compile the
exrcheckbinary in a macOS or GNU/Linux machine with ASAN. - Open the
oom_crash.exrfile with the following command:
exrcheck oom_crash.exr
- Notice that
exrenvmap/exrcheckcrashes with ASAN stack-trace.
Impact
An 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.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Python (PyPI) | openexr | >= 3.3.2, < 3.3.3 | 3.3.3 |
Verweise
- https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-x22w-82jp-8rvf
- https://nvd.nist.gov/vuln/detail/CVE-2025-48074
- https://github.com/AcademySoftwareFoundation/openexr/commit/2df7802a6421bf39ed73a607392f01b3c6da4e4a
- https://github.com/AcademySoftwareFoundation/openexr
- https://github.com/ShielderSec/poc/tree/main/CVE-2025-48074
- https://pypi.org/project/openexr
- https://github.com/advisories/GHSA-x22w-82jp-8rvf
- CVSS-Vektor
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- Schwäche (CWE)
CWE-770- Plattform
- Python (PyPI)
- Paket
openexr- Veröffentlicht
- 31.07.2025
- Aktualisiert
- 11.10.2026 13:18
Quellen und Lizenzen
OSV / GitHub Advisory Database - PYSEC-2026-1749 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-x22w-82jp-8rvf - CC BY 4.0
Schwachstellenhistorie: openexr
Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 15
- Erste → letzte
- 05.2022 04.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Hoch 7
- Mittel 7
- Niedrig 1
Veröffentlichungen pro Jahr
- 2022: 2
- 2023: 0
- 2024: 0
- 2025: 4
- 2026: 9
-
OpenEXR Out-Of-Memory via Unbounded File Header Values dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.