Description
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From 3.2.0 to before 3.2.7, 3.3.9, and 3.4.9, a misaligned memory write vulnerability exists in LossyDctDecoder_execute() in src/lib/OpenEXRCore/internal_dwa_decoder.h:749. When decoding a DWA or DWAB-compressed EXR file containing a FLOAT-type channel, the decoder performs an in-place HALF→FLOAT conversion by casting an unaligned uint8_t * row pointer to float * and writing through it. Because the row buffer may not be 4-byte aligned, this constitutes undefined behavior under the C standard and crashes immediately on architectures that enforce alignment (ARM, RISC-V, etc.). On x86 it is silently tolerated at runtime but remains exploitable via compiler optimizations that assume aligned access. This vulnerability is fixed in 3.2.7, 3.3.9, and 3.4.9.
Problem types
CWE-704: Incorrect Type Conversion or Cast
CWE-843: Access of Resource Using Incompatible Type ('Type Confusion')
Product status
>= 3.3.0, < 3.3.9
>= 3.4.0, < 3.4.9
References
github.com/...penexr/security/advisories/GHSA-w88v-vqhq-5p24
github.com/...SoftwareFoundation/openexr/releases/tag/v3.2.7
github.com/...SoftwareFoundation/openexr/releases/tag/v3.3.9
github.com/...SoftwareFoundation/openexr/releases/tag/v3.4.9