Версии Imager до 1.030 для Perl позволяют выполнять запись за пределами кучи (OOB) в созданных многокадровых файлах GIF.
Imager::File::GIF i_readgif_multi_low выделяет один построчный буфер GifRow, размер которого соответствует глобальной ширине экрана GIF «SWidth», и повторно использует его для каждого изображения в файле.
Ветка сопоставления страниц проверяет Image.Width + Image.Left > SWidth перед каждой записью DGifGetLine, но параллельная ветвь пропуска изображения в imgif.c:790-805 вызывает DGifGetLine(GifFile, GifRow, Width) без такой проверки.
Показать оригинальное описание (EN)
Imager versions through 1.030 for Perl allow a heap out of bounds (OOB) write on crafted multi-frame GIF files. Imager::File::GIF's i_readgif_multi_low allocates a single per-row buffer GifRow sized for the GIF's global screen width 'SWidth' and reuses it across every image in the file. The page-match branch validates Image.Width + Image.Left > SWidth before each DGifGetLine write, but the parallel skip-image branch at imgif.c:790-805 calls DGifGetLine(GifFile, GifRow, Width) with no such check.
Характеристики атаки
Последствия
Строка CVSS v3.1