CVE-2026-33020libsixel v1.8.7及更早版本存在整数溢出漏洞,引发堆缓冲区溢出。攻击者可利用特制的大型调色板PNG图像,触发计算错误导致堆破坏,从而造成进程崩溃或潜在代码执行。
该漏洞源于`frame.c`文件中的`sixel_frame_convert_to_rgb888()`函数。在处理PAL1、PAL2、PAL4等调色板图像时,代码使用`int`类型进行分配大小和指针偏移量的算术运算,随后强制转换为`size_t`。当图像像素总数超过`INT_MAX / 4`时,发生整数溢出,导致堆分配不足并产生负指针偏移。随后的`sixel_helper_normalize_pixelformat()`函数向无效指针写入完整图像数据,造成严重堆破坏。攻击者诱导受害者打开特制PNG即可利用此漏洞。