漏洞关键信息 漏洞标题: - raysan5 raylib 909f040 Heap-based Buffer Overflow 描述: - 在Raylib库中发现了一个基于堆的缓冲区溢出(写)漏洞。崩溃发生在GenImageFontAtlas函数中,位于src/rtext.c文件。应用程序尝试在堆分配缓冲区开始之前写入1字节。 确认与修复: - 厂商确认并修复了该漏洞,在提交 5a3391 中进行了修复。 环境信息: - 操作系统:Linux x86_64 - 编译器:带有-fsanitize=address的Clang - 构建配置:Release - 影响版本:master分支 漏洞细节: - 目标:Raylib - 崩溃类型:堆缓冲区溢出(写大小为1)/ 堆下溢 - 源文件:src/raylib/src/rtext.c - 函数:GenImageFontAtlas - 行号:967(列46) - 分配位置:src/raylib/src/rtext.c:856(仅分配1字节) - 根因分析:ASAN报告指出在0x5020000008cf处发生写入违规,这是在1字节区域(0x5020000008d0,0x5020000008d1)前的1字节。 可能原因: 1. 小型分配:目标缓冲区仅分配了1字节,表明计算的图集维度(imgWidth imgHeight bpp)可能非常小(可能是1x1像素),因为特定输入字符参数。 2. 负索引:第967行的代码可能执行像素写入(例如,pixels[index] = value)。崩溃表明计算的索引是-1(或等效的指针算术导致base_ptr - 1),导致写入越界到ASAN的“销毁区域”。