OpenEXR has a misaligned write in LossyDctDecoder_execute leading to undefined behavior (DWA/DWAB decompression)
Platform
c
Component
openexr
Fixed in
3.2.7
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.
How to fix
Actualice a la versión 3.2.7, 3.3.9 o 3.4.9 de OpenEXR para mitigar la vulnerabilidad. Esta actualización corrige el error de escritura desalineada en la función LossyDctDecoder_execute, evitando el comportamiento indefinido y posibles fallos.
Monitor your dependencies automatically
Get notified when new vulnerabilities affect your projects. Free forever.
Start free