# raysan5 raylib rtext.c 堆溢出漏洞
## 概述
raysan5 raylib 在提交 909f040 及之前版本中存在一个堆缓冲区溢出漏洞,位于 `src/rtext.c` 文件的 `GenImageFontAtlas` 函数。
## 影响版本
受影响版本为 raylib 909f040 及更早版本。
## 细节
漏洞函数 `GenImageFontAtlas` 在处理字体图集生成时未正确校验输入数据,导致堆基缓冲区溢出。攻击者可通过本地操控输入触发漏洞。
## 影响
本地攻击者可利用此漏洞执行任意代码或导致程序崩溃。该漏洞的利用代码已公开披露(对应补丁:5a3391fdce046bc5473e52afbd835dd2dc127146),存在被实际利用的风险。建议尽快应用补丁修复。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: 1224/hbf2 at main · oneafter/1224 · GitHub -- 🔗来源链接
标签:exploit
神龙速读:
从这个网页截图中,以下为可以获取到的关键信息:
- **仓库信息**:
- 仓库名称:`1224`
- 仓库所有者:`oneafter`
- **文件信息**:
- 文件名:`hbf2`
- 文件路径:`hbf2`
- 文件上传记录:由 `oneafter` 通过上传文件的方式添加到 `main` 分支,提交哈希为 `8c8b53c`,时间在过去的一个月内。
- **仓库内容**:
- 当前工作分支:`main`
- 仓库包含的文件:
- `gbf1`
- `harness_raylib_font.c`
- `hbf1`
- `hbf2`(当前选中)
- `hbf3`
- `hbf3_1`
- `segv1`
- **其他信息**:
- 提交记录:可以查看文件的提交历史。
- 操作选项:支持查看代码、查找文件、查看原始内容等。
标题: [rtext] Fix multiple security vulnerabilities in font loading (#5433,… · raysan5/raylib@5a3391f · GitHub -- 🔗来源链接
标签:patch
神龙速读:
### 关键漏洞信息
- **问题描述**:
- 在字体加载过程中存在的多种安全漏洞,特别是与 `glyphs[k].advanceX` 相关的整数溢出、负值分配等问题。
- 恶意字体文件可能包含负的 `advanceX`,从而导致 `calloc` 溢出或崩溃。
- **固定措施**:
- **防止整数溢出/负值分配**:
- 当 `glyphs[k].advanceX < 0` 时,将其设置为 `0`。
- 仅当宽度大于 `0` 时分配内存,否则设置为 `NULL`。
- 在分配内存时,检查宽度和高度的边界,防止堆溢出和下溢。
- **相关问题编号**:
- #5433, #5434, #5436, #5450
- **其他注意事项**:
- 确保生成的图集足够大,可以包含 `3x3` 矩形,以防止当宽度和高度小于 `3` 时的堆下溢。
```
请确认是否需要补充更多的细节。
标题: [rtext] Fix multiple security vulnerabilities in font loading by oneafter · Pull Request #5450 · raysan5/raylib · GitHub -- 🔗来源链接
标签:issue-tracking
神龙速读:
### 关键信息总结
#### 漏洞相关
- **修复内容**: 修复了 `rtex` 模块中的多个安全漏洞(#5433, #5434, 及 #5436)。
- **涉及文件**: `font loading` 相关的代码。
- **关联讨论**: 提及 `stb_truetype.h` 模块的安全性声明政策,以及相关已关闭的问题 #5432 和 #5435。
#### 工作细节
- **提交状态**: Pull Request 已经合并。
- **参与人员**: 主要由 `rayers5` 和 `oneafter` 两人协作完成。
- **代码变更**: 变更基于最新的 `master` 分支,避免了可能的冲突。
#### 其他信息
- **备注**: 提及此修复不能防止 `stb_truetype.h` 内部引发的崩溃问题,如 #5432 所示。
- **开发策略**: 变更聚焦在需要解决的关键安全问题上,尽量保持代码最小修改量。
标题: [rtext] Heap-buffer-overflow (WRITE) in `GenImageFontAtlas()` · Issue #5433 · raysan5/raylib -- 🔗来源链接
标签:issue-tracking
神龙速读:
## 关键信息
### 漏洞描述
- **类型**: 堆缓冲区溢出(写)
- **位置**: `GenImageFontAtlas` 函数
- **源文件**: `src/rtext.c`
- **崩溃原因**: 尝试在堆分配的缓冲区(大小2MB)末尾后4字节处写入数据,导致缓冲区溢出。
### 环境
- **操作系统**: Linux x86_64
- **编译器**: Clang with `-fsanitize=address`
- **构建配置**: Release
- **受影响版本**: master branch
### 漏洞详细信息
- **目标**: Raylib
- **崩溃类型**: 堆缓冲区溢出 (写入大小为1字节)
- **源文件**: `src/raylib/src/rtext.c`
- **函数**: `GenImageFontAtlas`
- **行号**: 901 (列94)
- **分配位置**: `src/raylib/src/rtext.c:856` (分配2,097,152字节)
- **根本原因分析**: ASAN报告显示在地址 `0x7f1baef7804` 处的写入违反,该地址位于2MB缓冲区末尾后4字节。原因是字体图中的图像数据缓冲区迭代时计算的索引或打包逻辑产生稍大于预计算图像尺寸的偏移量,导致在像素复制过程中出现越界写入。
### 复现步骤
1. 使用AddressSanitizer启用编译`raylib`字体测试`harness`(添加 `-fsanitize=address -g`)
2. 使用附加的 `repro` 输入运行模糊测试`harness`
### 附加证据
- 提供了ASAN报告和堆缓冲区溢出的详细信息,说明了错误发生的位置和原因。
### 后续动作
- 该问题已被修复,提交记录显示该问题已解决。
- CVE编号:CVE-2025-15533
标题: Login required -- 🔗来源链接
标签:signaturepermissions-required
神龙速读:
从提供的网页截图中,我们可以获取到以下关于漏洞的关键信息:
- **漏洞编号**:
- VDB-341705
- CVE-2025-15533
- Issue 5433
- **漏洞标题**:
- `RaySan5 RayLib up to 909F040 src/rtext.c genImageFontAtlas heap-based overflow`
- **网页交互提示**:
- 需要登录才能访问该页面的详细信息。
- 如果没有账户,用户可以注册账户以免费访问服务。
这是一份需要用户登录后才能查看完整内容的安全漏洞信息页面。
标题: vuldb.com -- 🔗来源链接
标签:vdb-entrytechnical-description
神龙速读:
从这个网页截图中可以获取到以下关于漏洞的关键信息:
- **HTTP Error 443**: 这通常表示SSL/TLS相关的错误。可能是服务器配置问题,证书问题,或客户端与服务器之间的加密通信问题。
- **Page Not Working**: 页面无法正常工作,这可能是因为服务器端配置错误,资源不可用,或客户端与服务器之间的通信中断。
- **Contact the Site Owner**: 建议联系网站所有者解决问题,这意味着问题可能需要服务器端的介入和修复。
注意:HTTP 443 错误在标准HTTP错误中没有明确定义,通常与HTTPS(SSL/TLS)相关的问题有关。可能是由于防火墙、代理服务器阻止了HTTPS流量,或者服务器的443端口未正确配置或被占用。
标题: Submit #733342: raysan5 raylib 909f040 Heap-based Buffer Overflow -- 🔗来源链接
标签:third-party-advisory
神龙速读:
### 漏洞关键信息
- **漏洞标题**:
- raysan5 raylib 909f040 Heap-based Buffer Overflow
- **描述**:
- 在Raylib库中发现了一个基于堆的缓冲区溢出(写)漏洞。崩溃发生在GenImageFontAtlas函数中,位于src/rtext.c文件。应用程序尝试在堆分配缓冲区开始之前写入1字节。
- **确认与修复**:
- 厂商确认并修复了该漏洞,在提交 [5a3391](https://github.com/raysan5/raylib/commit/5a3391fdce046bc5473e52afbd835dd2dc127146) 中进行了修复。
- **环境信息**:
- 操作系统: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的“销毁区域”。
暂无评论