# N/A
## 概述
GPAC v2.4.0 中的 `vorbis_to_intern()` 函数存在堆溢出漏洞,攻击者可通过特制的 .ogg 文件触发该漏洞,导致拒绝服务(DoS)。
## 影响版本
GPAC v2.4.0
## 细节
漏洞位于 `vorbis_to_intern()` 函数,处理 .ogg 文件中的 Vorbis 音频数据时未正确验证缓冲区边界,导致堆溢出。
## 影响
攻击者可利用该漏洞使应用程序崩溃,造成拒绝服务(DoS)。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: POC/gpac_dec_vorbis/GPAC_VORBIS.md at main · zakkanijia/POC · GitHub -- 🔗来源链接
标签:
神龙速读:
### 漏洞关键信息
#### 1. 概要
- **项目/产品**: GPAC
- **受影响组件**: Vorbis解码器过滤器(vorbisdec)— src/filters/dec_vorbis.c
- **漏洞类型**: 基于堆的缓冲区溢出(超出边界写入)
- **触发条件**: 解码一个宣称6个通道(5.1)并产生PCM输出的构造Vorbis流,导致一个无效的通道重映射指针写入PCM输出缓冲区的末尾。
- **影响**: 至少服务拒绝(崩溃)。由于这是堆上的OOB写入,这是一个内存损坏问题,根据构建和运行时条件(未在此演示)可能可被利用。
- **攻击向量**: 受害人打开/处理用GPAC或基于GPAC的应用程序创建的构造`ogg`文件。
#### 2. 受影响版本
- **确认漏洞**(代码审计 + PoC):GPAC 2.4.0
- **潜在受影响**: 其他包含相同`vorbis_to_intern` 6通道映射逻辑的版本。
#### 3. 根因
- **位置**: 文件:src/filters/dec_vorbis.c 函数:`vorbis_to_intern(u32 samples, Float **pcm, char *buf, u32 channels)` 循环逻辑:6通道重映射设置`ptr = &data[i+1]`时,当`i==5`,会产生`ptr = &data[6]`。
#### 4. 概念验证(PoC)和再现步骤
- **PoC生成器**: gen_poc_vorbis.py
- **生成PoC**: 使用gen_poc_vorbis.py生成poc_vorbis_6ch_heap_oobwrite.ogg
- **再现命令**: 使用AddressSanitizer启用的GPAC构建中运行相应命令
#### 5. 影响评估
- **最低影响**: 服务拒绝(崩溃)
- **安全风险**: 堆的越界写入(内存损坏),可利用性取决于构建和环境,在本报告中未进行演示。
#### 6. 附件
- dec_vorbis.c: 包含漏洞代码
- gen_poc_vorbis.py: 生成PoC文件poc_vorbis_6ch_heap_oobwrite.ogg
暂无评论