CVE-2026-33019libsixel是一个SIXEL编解码器库,其1.8.7及更早版本中存在一个严重的整数溢出漏洞。该漏洞出现在img2sixel工具的--crop选项处理逻辑中。由于代码未对输入坐标进行溢出安全检查,当clip_x为INT_MAX时,计算clip_w + clip_x会导致加法溢出,从而绕过边界检查。攻击者可利用此漏洞触发堆越界读取,导致应用程序崩溃或潜在的信息泄露风险。
该漏洞的核心在于libsixel的img2sixel工具在处理图像裁剪时的逻辑缺陷。在sixel_encoder_do_clip()函数中,程序接受了正值高达INT_MAX的坐标参数,但缺乏相应的溢出保护机制。当攻击者传入的clip_x值为INT_MAX时,表达式clip_w + clip_x会发生整数溢出,结果变为一个大的负数。这一负值导致后续的边界检查条件被绕过,使得未经限制的坐标参数通过sixel_frame_clip()传递给clip()函数。clip()函数基于此错误坐标计算出的源指针远远超出了图像缓冲区的实际范围,并最终被传递给memmove()函数执行内存操作。这一过程触发了堆越界读取,不仅会导致程序可靠崩溃,还可能泄露内存中的敏感信息。该漏洞需要本地访问权限和用户交互才能触发,CVSS评分为7.1,属于高危漏洞。