关键漏洞信息 漏洞描述 漏洞类型: 有符号/无符号转换错误导致堆栈下溢写入 文件: libvips/foreign/matrixload.c 函数: vips_foreign_load_matrix_file_is_a() 问题: 在读取错误时, 函数返回值为 -1,但该值被存储在无符号的 变量中。当 -1 转化为无符号时, 变量的值变为 ,随后 引发越界堆栈写操作(下溢,写入 变量前的位置)。 复现步骤 1. 使用 ASAN 构建 libvips: 2. 在 libvips 根目录运行: 3. 进程会因为 ASAN 中断。 4. 查看完整的 ASAN 报告,报告指出在 行的堆栈缓冲区溢出错误。 预期行为与实际行为 预期行为: 读取错误时应安全处理格式嗅探,不触发越界访问。 实际行为: ASAN 报告在 行中出现堆栈溢出。 环境 操作系统: Ubuntu 22.04, Linux 6.8.0-90-generic Vips: master @ 7fab325d2, ASAN 构建 ``` 漏洞总结 此漏洞是由于有符号值错误地转化为无符号值,并导致越界写操作,造成堆栈下溢错误。通过使用 ASAN(AddressSanitizer)工具可以捕捉到此类问题。