CVE-2026-8454Imager::File::GIF 是 Perl 语言中用于处理 GIF 图像文件的库。在 1.002 及之前的版本中存在一个堆越界写入漏洞。该漏洞由处理特制的多帧 GIF 文件触发。在解析过程中,程序复用为全局屏幕宽度分配的缓冲区,但在特定的代码分支(跳过图像分支)中,未对写入数据的长度进行边界检查。攻击者可诱导受害者加载恶意 GIF 文件,导致堆内存越界写入,进而可能引发应用程序崩溃或执行任意代码。
漏洞位于 Imager::File::GIF 的 `i_readgif_multi_low` 函数中。该函数根据 GIF 的全局屏幕宽度分配单行缓冲区 `GifRow`,并在文件的所有图像帧中复用此缓冲区。在正常的页面匹配分支中,代码会在调用 `DGifGetLine` 写入数据前验证 `Image.Width + Image.Left > SWidth`,以防止溢出。然而,在 `imgif.c` 第 790-805 行的并行跳过图像分支,代码直接调用 `DGifGetLine(GifFile, GifRow, Width)` 而未进行上述检查。如果攻击者构造一个 GIF 文件,其中某一帧的宽度大于全局屏幕宽度,且该帧触发了跳过逻辑,程序就会向 `GifRow` 缓冲区之外写入数据,导致堆破坏。