# N/A
## 概述
GPAC v2.4.0 中的 GSF 解复用滤波器组件存在越界读取漏洞,攻击者可通过特制的 .gsf 文件触发该漏洞。
## 影响版本
GPAC v2.4.0
## 细节
漏洞位于 GSF 解复用滤波器组件,在处理恶意构造的 .gsf 文件时未正确验证数据边界,导致越界读取。
## 影响
攻击者可利用该漏洞导致程序崩溃,从而实现拒绝服务(DoS)攻击。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: POC/gpac_gsf/GPAC_gsf.md at main · zakkanijia/POC · GitHub -- 🔗来源链接
标签:
神龙速读:
# 漏洞关键信息
## 1. 漏洞概述
- **项目/产品**: GPAC
- **受影响组件**: GSF demuxer filter (`gsfdmx`) — `src/filters/dmx_gsf.c`
- **漏洞类型**: 堆越界读取(堆内存读取超出边界)
- **触发条件**: 特制的 `.gsf` 文件,其中“tune-in”头包含长度为 `len > 0` 的 `magic` 字段,该字段未以 NULL 终止,然后使用 `"%"` 进行日志记录。
- **影响**:
- 某些构建/环境中的拒绝服务(崩溃)
- 如果在遇到 NULL 字节之前读取并打印超出边界的字节,则可能通过日志泄露信息(本文未演示)
- **攻击向量**: 受害者打开/处理包含 `gsfdmx` 过滤器图的特制 `.gsf` 文件。
## 2. 受影响版本
- **确认受影响的版本**: GPAC 2.4.0
- **可能受影响的版本**: 其他包含相同 `gsfdmx` “magic” 解析/日志记录逻辑的版本。
## 3. 根源分析
### 3.1 位置
- **文件**: `src/filters/dmx_gsf.c`
- **函数**: `gsfdmx_tune(...)` (tune-in 数据包解析)
### 3.2 根源细节
当解析 tune-in 头时,`gsfdmx` 读取一个可变长度 `len`,分配恰好为 `len` 个字节的缓冲区,并读取 `len` 个字节到该缓冲区。
```c
len = gsfdmx_read_vlen(bs);
if (len) {
char *magic = gf_malloc(sizeof(char)*len);
gf_bs_read_data(bs, magic, len);
...
GF_LOG(GF_LOG_INFO, GF_LOG_CONTAINER,
("[GSFDemux] tuning in stream, magic %s\n", magic));
gf_free(magic);
}
```
因为 `magic` 未以 NULL 终止,所以格式化字符串 `"%"` 导致 `printf` 风格代码在堆分配中读取超过边界,直到遇到 NULL 字节,导致堆越界读取。
次要问题(同样会导致越界读取):`memcmp(ctx->magic, magic, len)` 使用攻击者控制的 `len`。如果 `len > strlen(ctx->magic)`(其中 `ctx->magic` 来自过滤器参数),`memcmp` 可能会读取 `ctx->magic` 结尾以外的区域。
## 4. 证明概念 (PoC) 和复现
### 4.1 PoC 生成器
- **附件**: `gen_poc_gsf_magic_oobread.py`
- **脚本功能**: 创建包含 `magic_len=4` 和 `magic_bytes="ABCD"`(无 NULL)的 tune-in 头的 `poc_gsf_magic_oobread.gsf`。
### 4.2 生成 PoC
```bash
python3 gen_poc_gsf_magic_oobread.py
# 输出: poc_gsf_magic_oobread.gsf
```
### 4.3 复现命令
```bash
gpac -i poc_gsf_magic_oobread.gsf:gsfdmx:magic=ABCD inspect:deep
```
注意: 建议使用 ASan 构建以可靠地检测堆越界读取。
## 5. 影响评估
- **最小影响**: DoS(某些构建/环境中的崩溃)
- **潜在信息泄露**: 越界字节可能作为已记录的“magic”字符串的一部分读取并打印,直到遇到 NULL 字节。这取决于分配器行为和日志输出的可用性,本文中未演示。
由于这是一个 OOB 读取(而非写入),此问题主要涉及稳定性 / 潜在信息泄露,而非直接内存损坏。
## 6. 附件
- `dmx_gsf.c`: 受影响代码(针对“magic”解析和日志记录的上下文)
- `gen_poc_gsf_magic_oobread.py`: PoC 生成器脚本
暂无评论