Описание
OpenEXR Out of Bounds Heap Read due to Bad Pointer Arithmetic in LossyDctDecoder_execute
Summary
The OpenEXRCore code is vulnerable to a heap-based buffer overflow during a read operation due to bad pointer math when decompressing DWAA-packed scan-line EXR files with a maliciously forged chunk.
Details
In the LossyDctDecoder_execute
function (from src/lib/OpenEXRCore/internal_dwa_decoder.h
, when SSE2 is enabled), the following code is used to copy data from the chunks:
The issue arises because the src
pointer, which is a si128
pointer, is incremented by 8*8
, as if it were a uint16_t
pointer (64 * uint16_t == 128 bytes). In non-block aligned chunks (width/height not a multiple of 8), this can cause src
to point past the boundaries of the chunk.
PoC
In order to reproduce the PoC with fidelity and avoid undefined behaviors, it is necessary to enable ASAN (and SSE2). Otherwise the out-of-bound read will not be detected until its side-effect causes a crash.
NOTE: please download the dwadecoder_crash.exr
file from the following link:
https://github.com/ShielderSec/poc/tree/main/CVE-2025-48072
- Compile the
exrcheck
binary in a macOS or GNU/Linux machine with ASAN. - Open the
dwadecoder_crash.exr
file with the following command:
- Notice that
exrcheck
crashes with ASAN stack-trace.
Impact
An attacker could crash the application and in some scenarios also leak data, such as sensitive information or memory addresses that might be used to bypass exploitation mitigations like ASLR.
Ссылки
- https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-4r7w-q3jg-ff43
- https://nvd.nist.gov/vuln/detail/CVE-2025-48072
- https://github.com/AcademySoftwareFoundation/openexr/commit/2d09449427b13a05f7c31a98ab2c4347c23db361
- https://github.com/AcademySoftwareFoundation/openexr/releases/tag/v3.3.3
- https://github.com/ShielderSec/poc/tree/main/CVE-2025-48072
Пакеты
OpenEXR
= 3.3.2
3.3.3
Связанные уязвимости
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. Version 3.3.2 is vulnerable to a heap-based buffer overflow during a read operation due to bad pointer math when decompressing DWAA-packed scan-line EXR files with a maliciously forged chunk. This is fixed in version 3.3.3.
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. Version 3.3.2 is vulnerable to a heap-based buffer overflow during a read operation due to bad pointer math when decompressing DWAA-packed scan-line EXR files with a maliciously forged chunk. This is fixed in version 3.3.3.
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. Version 3.3.2 is vulnerable to a heap-based buffer overflow during a read operation due to bad pointer math when decompressing DWAA-packed scan-line EXR files with a maliciously forged chunk. This is fixed in version 3.3.3.
OpenEXR provides the specification and reference implementation of the ...