CVE-2026-42146CImg Library是一个广泛使用的C++图像处理库。在修复前的版本中,处理BMP文件时存在安全漏洞。程序在读取BMP文件头中的nb_colors字段后,未对其进行充分的边界校验便直接用于计算内存分配大小。攻击者可利用此缺陷构造特殊的恶意BMP文件,诱导受害者加载,从而触发内存耗尽异常,导致应用程序崩溃,造成拒绝服务。
该漏洞的根本原因在于CImg库解析BMP文件格式时的输入验证缺失。具体而言,当库函数读取BMP文件头信息时,会提取`nb_colors`(颜色数量)字段。在受影响的版本中,代码直接使用该数值来计算后续所需的内存缓冲区大小,而未将该数值与文件的实际剩余大小或合理的系统限制进行比较。攻击者可以通过修改BMP文件头,将`nb_colors`设置为一个极大的整数值(例如接近整数上限)。当受影响的应用程序调用CImg库尝试加载此恶意文件时,系统会尝试分配一个极其巨大的内存块。由于物理内存或虚拟地址空间的限制,分配操作必然失败,抛出`std::bad_alloc`异常或导致进程终止。虽然这不涉及代码执行或数据泄露,但会导致应用程序立即崩溃,构成拒绝服务风险。攻击向量为本地,且需要用户交互(如打开文件)。