关键漏洞信息 1. 漏洞概述 项目/产品: GPAC 影响组件: ISO Media dump / Timed Text XML export ( ), 漏洞类型: 基于栈的缓冲区溢出(越界写)通过未经检查的 触发方式: 一个带有 定时文字样本的特殊 MP4 文件,其中文本长度字段很大,有效载荷以 UTF-16 BE BOM ( ) 开头。 影响: 最低导致服务拒绝(崩溃)。由于这是栈上的 OOB 写入,内存损坏可能可被利用,这取决于构建标志和栈布局(此报告中未演示)。 攻击向量: 受害者运行 (或任何转储定时文本轨迹的 GPAC 代码路径)在特殊构造的 MP4 文件上。 2. 影响版本 确认易受攻击的版本: GPAC 2.4.0(ASan 下再现) 可能受影响的版本: 其他包含相同 逻辑的版本。 3. 根因 3.1 位置 文件: 函数: 崩溃行 (GPAC 2.4.0 构建): 3.2 根因详细信息 在堆栈上分配一个固定大小的 UTF-16 缓冲区: → 20,000 字节 当样本文本以 UTF-16 BE BOM 开头时,代码执行: 攻击者通过 样本的 16 位长度字段控制 。 如果 (即 > 20,000 字节), 将写入 缓冲区之外,导致堆栈损坏。这是一个经典的缺少边界检查问题 / 长度不匹配(它似乎还复制 字节从 开始,即它应该复制 并将其封顶。 4. 概念验证 (PoC) 和再现 4.1 生成 PoC 的脚本附件: poc_tx3g_utf16_stack_overflow.py 产生一个最小的 MP4 文件,其中包含一个 样本: 有效载荷以 开头 4.2 生成 PoC 4.3 再现命令 使用启用了 AddressSanitizer 的 GPAC 构建运行: 4.4 预期结果(关键摘录) ASan 报告 ,写操作起源于 : 完整 ASan 输出见 文件。 5. 影响评估 最低影响: 处理恶意 MP4 定时文本轨迹时崩溃导致的服务拒绝。 安全风险: 这是一个栈越界写入(内存损坏)。可利用性取决于构建和环境,并且在此报告中未展示。 6. 建议修复方案 在 之前,针对堆栈缓冲区大小验证复制长度,考虑 BOM 和终止符。 如果 对该路径不合理地大,拒绝或返回错误。 考虑根据验证过的输入动态分配缓冲区大小。 ``` 此外,为了完整起见,还提供了相关的附件包括 ASan 输出文件、包含易受攻击代码的 C 文件以及生成 PoC 的 Python 脚本。