CVE-2025-48074
OpenEXR's Unbounded File Header Values can Lead to Out-Of-Memory Errors
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
4.6
OpenEXR's Unbounded File Header Values can Lead to Out-Of-Memory Errors
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
CVE-2025-48074- CVSS 4.0
- 4.6 Medium
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 - Weakness
- CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2025-23375
4.6
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
EUVD-2025-23375- CVSS 4.0
- 4.6 Medium
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-x22w-82jp-8rvf
4.6
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.
- Record
GHSA-x22w-82jp-8rvf- CVSS 4.0
- 4.6 Medium
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 - Weakness
- CWE-770
- Updated
- 2026-11-02
NVD
4.6
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
CVE-2025-48074- CVSS 4.0
- 4.6 Medium
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVALPINE-CVE-2025-48074
5.5
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
ALPINE-CVE-2025-48074- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-03
OSV
4.6
OpenEXR's Unbounded File Header Values can Lead to Out-Of-Memory Errors
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
CVE-2025-48074- CVSS 4.0
- 4.6 Medium
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 - Weakness
- CWE-770
- Updated
- 2026-11-02
Show 8 moreShow less
OSVDEBIAN-CVE-2025-48074
5.5
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
DEBIAN-CVE-2025-48074- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-x22w-82jp-8rvf
4.6
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.
- Record
GHSA-x22w-82jp-8rvf- CVSS 4.0
- 4.6 Medium
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 - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVPYSEC-2026-1749
4.6
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.
- Record
PYSEC-2026-1749- CVSS 4.0
- 4.6 Medium
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 - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-11-CVE-2025-48074
5.5
CVE-2025-48074 in openexr - Patched by Root
Root has patched CVE-2025-48074 in the openexr package for Root:Debian:11. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-11-CVE-2025-48074- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-12-CVE-2025-48074
5.5
CVE-2025-48074 in openexr - Patched by Root
Root has patched CVE-2025-48074 in the openexr package for Root:Debian:12. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-12-CVE-2025-48074- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-13-CVE-2025-48074
5.5
CVE-2025-48074 in openexr - Patched by Root
Root has patched CVE-2025-48074 in the openexr package for Root:Debian:13. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-13-CVE-2025-48074- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-48074
4.6
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In version 3.3.2, applications trust unvalidated dataWindow size values from file headers, which can lead to excessive memory allocation and performance degradation when processing malicious files. This is fixed in version 3.3.3.
- Record
UBUNTU-CVE-2025-48074- CVSS 4.0
- 4.6 Medium
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 - CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15415-1 No score
libIex-3_3-32-3.3.5-1.1 on GA media
These are all security issues fixed in the libIex-3_3-32-3.3.5-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15415-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
openexrPyPI |
3.3.2 to 3.3.2 | 3.3.3 |
openexrAlpine:v3.22 |
before 3.3.11-r0 | 3.3.11-r0 |
openexrAlpine:v3.23 |
before 3.4.2-r0 | 3.4.2-r0 |
openexrAlpine:v3.24 |
before 3.4.2-r0 | 3.4.2-r0 |
openexrDebian:12 |
All versions, plus listed versions 3.1.13-13.1.13-23.1.5-53.1.5-5.13.1.5-5.1+hurd.1 Show 5 moreShow less3.4.14-0.13.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-4 |
None known |
openexrDebian:13 |
All versions, plus listed versions 3.1.13-23.4.14-0.13.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-4 |
None known |
openexrDebian:14 |
before 3.4.6+ds-1, plus listed versions 3.1.13-2 |
3.4.6+ds-1 |
openexrPyPI |
3.3.2 up to 3.3.3 | 3.3.3 |
openexrRoot:Debian:11 |
before 2.5.4-2+deb11u1.root.io.8 | 2.5.4-2+deb11u1.root.io.82.5.4-2+deb11u1.root.io.42.5.4-2+deb11u1.root.io.62.5.4-2+deb11u1.root.io.72.5.4-2+deb11u1.root.io.132.5.4-2+deb11u1.root.io.22.5.4-2+deb11u1.root.io.32.5.4-2+deb11u1.root.io.142.5.4-2+deb11u1.root.io.52.5.4-2+deb11u1.root.io.102.5.4-2+deb11u1.aikido.172.5.4-2+deb11u1.root.io.92.5.4-2+deb11u1.root.io.122.5.4-2+deb11u1.aikido.162.5.4-2+deb11u1.root.io.112.5.4-2+deb11u1.root.io.152.5.4-2+deb11u1.aikido.18 |
rootio-openexrRoot:Debian:11 |
before 2.5.4-2+deb11u1.root.io.8 | 2.5.4-2+deb11u1.root.io.82.5.4-2+deb11u1.root.io.42.5.4-2+deb11u1.root.io.62.5.4-2+deb11u1.root.io.72.5.4-2+deb11u1.root.io.132.5.4-2+deb11u1.root.io.22.5.4-2+deb11u1.root.io.32.5.4-2+deb11u1.root.io.142.5.4-2+deb11u1.root.io.52.5.4-2+deb11u1.root.io.102.5.4-2+deb11u1.aikido.172.5.4-2+deb11u1.root.io.92.5.4-2+deb11u1.root.io.122.5.4-2+deb11u1.aikido.162.5.4-2+deb11u1.root.io.112.5.4-2+deb11u1.root.io.152.5.4-2+deb11u1.aikido.18 |
Show 5 moreShow less
| Package | Affected | Fixed |
|---|---|---|
openexrRoot:Debian:12 |
before 3.1.5-5.root.io.8 | 3.1.5-5.root.io.83.1.5-5.root.io.93.1.5-5.root.io.103.1.5-5.root.io.73.1.5-5.root.io.33.1.5-5.root.io.53.1.5-5.root.io.43.1.5-5.root.io.153.1.5-5.root.io.63.1.5-5.root.io.23.1.5-5.root.io.213.1.5-5.root.io.223.1.5-5.root.io.123.1.5-5.root.io.233.1.5-5.root.io.133.1.5-5.root.io.143.1.5-5.root.io.113.1.5-5.root.io.163.1.5-5.root.io.173.1.5-5.root.io.183.1.5-5.root.io.193.1.5-5.root.io.203.1.5-5.aikido.243.1.5-5.aikido.25 |
rootio-openexrRoot:Debian:12 |
before 3.1.5-5.root.io.8 | 3.1.5-5.root.io.83.1.5-5.root.io.93.1.5-5.root.io.103.1.5-5.root.io.73.1.5-5.root.io.33.1.5-5.root.io.53.1.5-5.root.io.43.1.5-5.root.io.153.1.5-5.root.io.63.1.5-5.root.io.23.1.5-5.root.io.213.1.5-5.root.io.223.1.5-5.root.io.123.1.5-5.root.io.233.1.5-5.root.io.133.1.5-5.root.io.143.1.5-5.root.io.113.1.5-5.root.io.163.1.5-5.root.io.173.1.5-5.root.io.183.1.5-5.root.io.193.1.5-5.root.io.203.1.5-5.aikido.243.1.5-5.aikido.25 |
openexrRoot:Debian:13 |
before 3.1.13-2.root.io.1 | 3.1.13-2.root.io.13.1.13-2.root.io.23.1.13-2.root.io.33.1.13-2.root.io.43.1.13-2.root.io.63.1.13-2.root.io.73.1.13-2.root.io.53.1.13-2.root.io.83.1.13-2.aikido.143.1.13-2.root.io.103.1.13-2.root.io.113.1.13-2.root.io.93.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15 |
rootio-openexrRoot:Debian:13 |
before 3.1.13-2.root.io.1 | 3.1.13-2.root.io.13.1.13-2.root.io.23.1.13-2.root.io.33.1.13-2.root.io.43.1.13-2.root.io.63.1.13-2.root.io.73.1.13-2.root.io.53.1.13-2.root.io.83.1.13-2.aikido.143.1.13-2.root.io.103.1.13-2.root.io.113.1.13-2.root.io.93.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15 |
openexropenSUSE:Tumbleweed From an advisory covering 4 CVEs |
before 3.3.5-1.1 | 3.3.5-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases, references | OSV | |
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-48074 is a medium vulnerability (CVSS 4.6) in Academysoftwarefoundation Openexr, published July 31, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.30%, the 22nd percentile. Fixed in openexr 3.3.3.
References
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-x22w-82jp-8rvf
github.com/ShielderSec/poc/tree/main/CVE-2025-48074
nvd.nist.gov/vuln/detail/CVE-2025-48074
github.com/AcademySoftwareFoundation/openexr/commit/2df7802a6421bf39ed73a607392f01b3c6da4e4a
github.com/advisories/GHSA-x22w-82jp-8rvf
security.alpinelinux.org/vuln/CVE-2025-48074
Show 11 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2025/48xxx/CVE-2025-48074.json
security-tracker.debian.org/tracker/CVE-2025-48074
github.com/AcademySoftwareFoundation/openexr
pypi.org/project/openexr
ubuntu.com/security/CVE-2025-48074
cve.org/CVERecord?id=CVE-2025-48074
github.com/AcademySoftwareFoundation/openexr/commit/501be087faa62d0fb7115ce3a0ebd7b4ef0117fc
suse.com/security/cve/CVE-2025-48071
suse.com/security/cve/CVE-2025-48072
suse.com/security/cve/CVE-2025-48073
suse.com/security/cve/CVE-2025-48074