CVE-2025-14423CVE-2025-14423是GNU图像处理程序(GIMP)中存在的一个高危安全漏洞,CVSS评分达到7.8分。该漏洞属于栈缓冲区溢出(Stack-based Buffer Overflow)类型,攻击者可利用此漏洞在受影响系统上执行任意代码。漏洞存在于GIMP处理ILBM(InterLeaved BitMap)格式文件(.lbm扩展名)时的解析过程中。具体而言,当GIMP打开一个特制的恶意LBM文件时,由于程序缺乏对用户提供的LBM文件数据长度的有效验证,在将数据复制到栈缓冲区时发生溢出。这种缺乏边界检查的操作允许攻击者覆盖栈上的返回地址和关键函数指针,最终实现代码执行。攻击成功需要用户交互,即目标用户必须访问恶意页面或打开包含恶意代码的LBM文件。该漏洞由ZDI(Zero Day Initiative)披露,编号为ZDI-CAN-28311。攻击者可以通过社会工程学手段诱导用户打开精心构造的LBM图像文件,从而在受害者系统上以当前进程的权限执行任意代码。
该漏洞的根本原因在于GIMP的LBM文件解析器在处理文件头和数据块时未进行充分的长度验证。LBM格式是一种旧的图像格式,最初用于Amiga计算机,包含ILBM标准格式。解析器在读取BMHD(BitMap Header)块和其他可选块(如BODY、TMAP等)时,直接将数据复制到固定大小的栈缓冲区中,而没有检查实际数据长度是否超过缓冲区容量。攻击者可以构造一个包含超长数据字段的LBM文件,例如在CMAP(颜色映射)块中放置超过预期大小的数据,或者在处理未对齐的数据时触发溢出。当GIMP调用read_chunk()或类似函数读取这些数据时,超长的用户数据被直接写入栈缓冲区,覆盖相邻的栈帧数据。攻击者可以通过精确控制溢出数据,覆盖返回地址指向恶意代码,或者修改函数指针使其指向shellcode。由于栈空间通常包含环境变量和函数参数,攻击者还可以利用这些信息构建更复杂的利用链。在某些情况下,攻击者可能需要绕过栈保护机制(如stack canary),但该漏洞的简单性使其成为潜在的可靠利用目标。