# N/A
## 概述
GPAC v2.4.0 中 `uncv_parse_config()` 函数存在堆溢出漏洞,攻击者可利用特制的 MP4 文件触发漏洞。
## 影响版本
GPAC v2.4.0
## 细节
`uncv_parse_config()` 函数在解析 MP4 文件中的配置数据时,未正确验证数据长度,导致堆缓冲区溢出。
## 影响
攻击者可构造恶意 MP4 文件,触发堆溢出,导致应用程序崩溃,从而实现拒绝服务(DoS)。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: POC/gpac_uncv/GPAC_UNCV_CPAT.md at main · zakkanijia/POC · GitHub -- 🔗来源链接
标签:
神龙速读:
## 关键漏洞信息
### 1. 概述
- **项目/产品:** GPAC
- **受影响组件:** UNCV 解码器过滤器 (uncvdec)
- **漏洞类型:** 堆基缓冲区溢出 (越界写入)
- **触发器:** 解析来自特殊制作的媒体文件 (MP4/ISO BMFF) 的 UNCV 解码器配置 `cpat` 盒子
- **影响:** 至少导致拒绝服务 (崩溃)
- **攻击向量:** 攻击者提供一个特殊制作的媒体文件,受害者用 GPAC 或基于 GPAC 的应用程序打开/处理它
### 2. 受影响版本
- **确认漏洞版本:** GPAC 2.4.0
### 3. 根因
#### 位置
- **文件:** `src/filters/dec_uncv.c`
- **函数:** `uncv_parse_config(...)`
- **分支:** 解析 UNCV 解码器配置中的 `cpat` (组件模式) 盒子
#### 根因详情 (2D 索引间隔错误)
- 在 `cpat` 解析逻辑中,代码为 `fa_width * fa_height` 网格分配了 `fa_map`
- 存在写入时索引计算中使用 `i * fa_height` (错误) 而不是 `i * fa_width` (正确) 的问题
- 当 `fa_height > fa_width` 且 `fa_height > 1` 时,计算的索引可能超过分配范围,导致一个目标为 `u16` 元素的堆越界写入
### 4. 概念验证 (PoC) 和复现
#### PoC 文件
- **文件名:** `poc_uncv_cpat_oobwrite.mp4`
- **描述:** 最小的 MP4 文件包含具有特殊制作的 `cpat` 盒子以触发 OOB 写入的 UNCV 解码器配置
- **交付:** 将此文件附加到报告 / 上传到 CVE 提交端口
#### 复现命令
```bash
ASAN_OPTIONS=abort_on_error=1:detect_leaks=0:symbolize=1:print_stacktrace=1 \
UBSAN_OPTIONS=halt_on_error=1 \
./bin/gcc/gpac -i poc_uncv_cpat_oobwrite.mp4 uncvdec inspect:deep
```
#### 预期结果
- Asan 应报告大小为 2 的堆缓冲区溢出 (写入) 并指向 `uncv_parse_config`
### 5. 影响评估
- **最低影响:** 打开/处理特殊制作的媒体文件时导致拒绝服务 (进程崩溃)
- **安全风险:** 这是一个堆 OOB 写入,使用攻击者影响的数据 (写入为 `u16`,从文件输入派生)
- 可能导致内存损坏,视堆布局和后续分配/使用情况而定,可能有可能利用。完全可利用性评估不在本报告范围内
暂无评论