关键信息总结 漏洞概述 漏洞类型: 空指针解引用漏洞 (Null Pointer Dereference) 程序: jasper (图像处理库) 崩溃类型: SIGSEGV (信号11) 版本: jasper 2.0.25 根本原因: 在 函数中,当处理带有特定命令行选项的恶意格式化图像文件时,函数接收到一个空图像指针并尝试对其进行解引用,导致立即分段错误。 技术分析 触发条件: 恶意格式化的图像文件处理,使用 BMP 输出格式和颜色空间转换。 关键问题: 的空指针访问。 根本原因分析: 1. 图像加载失败: 恶意输入文件导致图像加载失败,返回 NULL。 2. 缺失验证: 主函数在传递给颜色空间转换函数之前未正确释放图像指针。 3. 空指针访问: 函数尝试访问 字段而没有空检查。 4. 崩溃: 访问 导致崩溃,因为 是 NULL。 可重现代码上下文 再现步骤 使用包含恶意数据的 POC 文件运行命令行测试。 区别于断言失败漏洞 关键区别: - 信号: 断言失败为 SIGABRT(6),空指针解引用为 SIGSEGV(11)。 - 位置: 断言失败在 ,空指针解引用在 。 - 函数: 断言失败在 ,空指针解引用在 。 - 根本原因: 断言失败是由于无效参数 (-1) 传递给数学函数,空指针解引用是由于空指针传递给图像函数。 - 触发选项: 断言失败使用 ,空指针解引用使用 。 证明概念 POC 文件: 致谢 发现者: Xudong Cao (UCAS), Yuqing Zhang (UCAS, Zhongguancun Laboratory)