OpenEXR — это эталонная реализация и спецификация формата изображения EXR, широко используемого в киноиндустрии. В версиях до 3.2.11, 3.3.0–3.3.12 и 3.4.0–3.4.13 созданный мозаичный EXR может инициировать запись за пределами кучи в 32-разрядных сборках/ILP32 при чтении через общедоступный TiledRgbaInputFile RGBA API. В файле используется небольшое окно данных размером 40x40, но размер плитки 65537x65537.
В ILP32 расчет размера буфера преобразования фрагментов Array2D<Rgba> переполняется, выделяет гораздо меньший буфер кучи, и декодирование фрагментов записывает после этого выделения. Эта проблема исправлена в версиях 3.2.11, 3.3.13 и 3.4.14.
Показать оригинальное описание (EN)
OpenEXR is the reference implementation and specification for the EXR image format, widely used in the motion picture industry. In versions before 3.2.11, 3.3.0 through 3.3.12, and 3.4.0 through 3.4.13, a crafted tiled EXR can trigger a heap out-of-bounds write on 32-bit/ILP32 builds when read through the public TiledRgbaInputFile RGBA API. The file uses a small 40x40 dataWindow but a 65537x65537 tile size. On ILP32, the Array2D<Rgba> tile-conversion buffer size calculation overflows, allocates a much smaller heap buffer, and tile decode writes past that allocation. This issue is fixed in versions 3.2.11, 3.3.13, and 3.4.14.
Характеристики атаки
Последствия
Строка CVSS v3.1