Search
Search is not available in local development.
Run npx pagefind --site __site after building to enable it.
JLSEC-2026-646 CVSS_V4

When decoding an OpenEXR file that uses DWAA or DWAB compression, there's an implicit assumption...

JLSEC Published
Modified
Severity
CVSS:4.0/AV:A/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Affected Packages
FFMPEG_jll >= 7.1.1+0, < 8.0.0+0
FFplay_jll >= 7.1.1+0, < 8.1.2+0
Aliases / Upstream
CVE-2025-59733 GHSA-hpfq-c235-5854 EUVD-2025-32183

When decoding an OpenEXR file that uses DWAA or DWAB compression, there's an implicit assumption that all image channels have the same pixel type (and size), and that if there are four channels, the first four are "B", "G", "R" and "A". The channel parsing code can be found in decodeheader. The buffer td->uncompresseddata is allocated in decodeblock based on the xsize, ysize and computed currentchannel_offset.

The function dwa_uncompress then assumes at [5] that if there are 4 channels, these are "B", "G", "R" and "A", and in the calculations at [6] and [7] that all channels are of the same type, which matches the type of the main color channels.

If we set the main color channels to a 4-byte type and add duplicate or unknown channels of the 2-byte EXRHALF type, then the addition at [7] will increment the pointer by 4-bytes * xsize * nbchannels, which will exceed the allocated buffer.

We recommend upgrading to version 8.0 or beyond.

References