CVE-2025-64503CVE-2025-64503是cups-filters中的缓冲区溢出漏洞。cups-filters是一个开源软件包,包含CUPS打印服务的后端、过滤器和其他必要组件,用于在非macOS操作系统上运行CUPS打印服务。该漏洞存在于pdftoraster工具中,攻击者可以通过构造恶意PDF文件触发整数溢出,导致堆缓冲区溢出。当PDF文件包含异常大的MediaBox宽度值时,会引发bytesPerLine计算溢出,使分配的缓冲区过小,随后的像素写入操作将超出缓冲区边界,可能导致程序崩溃或潜在的安全风险。CVSS评分4.0,属于中等严重程度,需要本地访问即可利用,无需认证和用户交互。
漏洞根源在于cups-filters的pdftoraster.cxx文件中对PDF文件MediaBox值的处理流程。具体攻击链如下:1)攻击者构造包含超大MediaBox宽度值的恶意PDF文件;2)pdftoraster解析该PDF时,将此超大值赋给header.cupsWidth变量;3)计算bytesPerLine时使用公式(header.cupsBitsPerPixel * header.cupsWidth + 7) / 8,由于cupsWidth过大导致整数乘法溢出,结果变成一个很小的值;4)lineBuf根据这个被截断的小bytesPerLine值进行内存分配,实际上分配了远小于实际需要的缓冲区;5)当convertLineChunked函数调用writePixel8写入像素数据时,会尝试向lineBuf中写入超出其实际容量的数据,造成堆缓冲区溢出。此外,在libcupsfilters中也发现类似的bytesPerLine乘法计算缺少溢出检查,但提供的测试用例未能在该模块触发溢出。修复方案在commit 50d94ca0f2fa6177613c97c59791bde568631865中实现,已集成到cups-filters 1.28.18版本。