OpenEXR предоставляет спецификацию и эталонную реализацию формата файлов EXR, формата хранения изображений для киноиндустрии. Начиная с версий 3.2.0 и до версий 3.2.7, 3.3.9 и 3.4.9, существует уязвимость неправильной записи в память в LossyDctDecoder_execute() в src/lib/OpenEXRCore/internal_dwa_decoder.h:749. При декодировании EXR-файла, сжатого DWA или DWAB, содержащего канал типа FLOAT, декодер выполняет преобразование HALF → FLOAT на месте, приводя невыровненный указатель строки uint8_t * к float * и записывая через него.
Поскольку буфер строк может не быть выровнен по 4 байтам, это представляет собой неопределенное поведение в соответствии со стандартом C и немедленно приводит к сбою на архитектурах, которые обеспечивают выравнивание (ARM, RISC-V и т. д.). На x86 это допускается во время выполнения, но остается доступным для использования посредством оптимизации компилятора, предполагающей согласованный доступ. Эта уязвимость исправлена в версиях 3.2.7, 3.3.9 и 3.4.9.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 3
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Openexr Openexr
cpe:2.3:a:openexr:openexr:*:*:*:*:*:*:*:*
|
3.2.0
|
3.2.7
|
|
Openexr Openexr
cpe:2.3:a:openexr:openexr:*:*:*:*:*:*:*:*
|
3.3.0
|
3.3.9
|
|
Openexr Openexr
cpe:2.3:a:openexr:openexr:*:*:*:*:*:*:*:*
|
3.4.0
|
3.4.9
|