CVE-2026-44637libsixel是一个SIXEL编码/解码库。在1.8.7-r1及之前版本中,其解析器存在有符号整数溢出漏洞。攻击者可诱导用户解码特制的SIXEL数据,导致pos_x变量无界增长并触发溢出。这会绕过缓冲区大小检查,引发越界堆写入,进而破坏程序完整性或可用性。该漏洞已在1.8.7-r2版本修复。
该漏洞源于libsixel的`sixel_decode_raw_impl`函数中SIXEL解析器的图像缓冲区加倍循环。当处理SIXEL字符时,`context->pos_x`会累加`repeat_count`且缺乏上限检查。当`pos_x`接近`INT_MAX`时,用于计算图像缓冲区大小的表达式`pos_x + repeat_count`发生有符号整数溢出。这种溢出导致原本用于拒绝过大缓冲区的安全检查被绕过。随后,程序在后续写入操作中,基于受攻击者影响的偏移量向`image->data`写入数据,导致分配区域之外的堆内存被覆盖。攻击者通过`img2sixel`等工具解析恶意SIXEL数据即可触发此漏洞。