支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:736

73.6%
一、 漏洞 CVE-2025-70309 基础信息
漏洞信息
                                        # N/A

## 概述
GPAC v2.4.0 中的 `pcmreframe_flush_packet` 函数存在栈溢出漏洞,攻击者可通过构造恶意 WAV 文件触发该漏洞,导致拒绝服务(DoS)。

## 影响版本
GPAC v2.4.0

## 细节
漏洞位于 `pcmreframe_flush_packet` 函数,处理 WAV 文件时未对数据长度进行有效验证,导致栈溢出。

## 影响
攻击者可利用该漏洞造成程序崩溃,实现拒绝服务攻击。
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
N/A
来源:美国国家漏洞数据库 NVD
漏洞描述信息
A stack overflow in the pcmreframe_flush_packet function of GPAC v2.4.0 allows attackers to cause a Denial of Service (DoS) via a crafted WAV file.
来源:美国国家漏洞数据库 NVD
CVSS信息
N/A
来源:美国国家漏洞数据库 NVD
漏洞类别
N/A
来源:美国国家漏洞数据库 NVD
漏洞标题
GPAC 安全漏洞
来源:中国国家信息安全漏洞库 CNNVD
漏洞描述信息
GPAC是GPAC开源的一款开源的多媒体框架。 GPAC v2.4.0版本存在安全漏洞,该漏洞源于pcmreframe_flush_packet函数存在栈溢出,可能导致拒绝服务。
来源:中国国家信息安全漏洞库 CNNVD
CVSS信息
N/A
来源:中国国家信息安全漏洞库 CNNVD
漏洞类别
其他
来源:中国国家信息安全漏洞库 CNNVD
二、漏洞 CVE-2025-70309 的公开POC
#POC 描述源链接神龙链接
三、漏洞 CVE-2025-70309 的情报信息
  • 标题: POC/gpac_rawpcm/GPAC_RFPCM.md at main · zakkanijia/POC · GitHub -- 🔗来源链接

    标签:

    神龙速读:
                                            ## 关键漏洞信息
    
    ### 1. 概述
    - **项目/产品**: GPAC
    - **受影响组件**: PCM reframer filter rfpcm (`src/filters/reframe_rawpcm.c`)
    - **漏洞类别**: 堆栈溢出(通过未经检查的 `memcpy` 的边界写入)
    - **触发条件**: 处理包含大量通道数的恶意构造的 `.wav` 文件,当反向播放启用时,`bytes_per_sample = channels * (bits_per_sample / 8) > 100`
    - **影响**: 至少导致服务拒绝(崩溃)。由于这是堆栈越界写入,内存损坏可能被利用,具体依赖于编译标志和堆栈布局(此处未演示)。
    - **攻击向量**: 在支持反向播放或以负播放速度运行的 GPAC 基础应用中,受害者打开/播放一个构造的 `.wav` 文件。
    
    ### 2. 影响版本
    - **已确认漏洞版本(代码审计)**: GPAC 2.4.0
    - **潜在影响版本**: 其他包含相同 `rfpcm` 反向交换逻辑的版本。
    
    ### 3. 根因
    #### 3.1 位置
    - **文件**: `src/filters/reframe_rawpcm.c`
    - **函数**: `pcmreframe_flush_packet(GF_PCMReframeCtx *ctx)`
    - **代码区域**: 反向播放样本交换循环
    
    #### 3.2 根因细节(用于可变尺寸样本的固定尺寸堆栈缓冲区)
    - 当 `ctx->reverse_play` 启用时,`pcmreframe_flush_packet` 将样本原地反转:
      - 计算 `nb_bytes_in_sample = ctx->Bps * ctx->ch`。
      - 使用固定大小的堆栈缓冲区 `char store[100]` 作为交换临时缓冲区。
      - 不检查是否小于 `sizeof(store)`,直接将 `nb_bytes_in_sample` 字节复制到 `store` 中。
    - 由于通道数量 `ctx->ch` 和 `ctx->Bps`(从 WAV 位深度派生的每样本字节数)受 WAV 头部控制,当 `channels=64` 和 `bits_per_sample=16` 时,`nb_bytes_in_sample = 64 * 2 = 128 > 100`,导致堆栈缓冲区溢出。
    - 当 `evt->play.speed < 0` 在 `pcmreframe_process_event(...)` 中时,启用反向播放。
    
    ### 4. 概念验证 (PoC) 和复现
    #### 4.1 PoC 生成器
    - 附件: `poc_rfpcm_reverse_stack_overflow.py`
    - 生成了 `poc_rfpcm_reverse_stack_overflow.wav`,包含:
      - `channels=64`
      - `bits_per_sample=16`
      - `bytes_per_sample(所有通道)=128 (>100)`
    
    #### 4.2 生成 PoC
    ```bash
    python3 poc_rfpcm_reverse_stack_overflow.py
    ```
    
    #### 4.3 复现命令(推荐)
    ```bash
    ASAN_OPTIONS=abort_on_error=1:detect_leaks=0:symbolize=1:print_stacktrace=1 \
    ./bin/gcc/gpac -speed=-1 -i poc_rfpcm_reverse_stack_overflow.wav:rfpcm -o null
    ```
    
    ### 5. 影响评估
    - **最小影响**: 当反向播放请求在构造的 `.wav` 文件上时,发生崩溃 (DoS)。
    - **安全风险**: 堆栈越界写入(内存损坏)。利用性依赖于构建和环境,此处未演示。
    
    ### 6. 建议修复
    - 替换 `char store[100];` 以使用大小为 `nb_bytes_in_sample` 的缓冲区(堆或动态大小的堆栈缓冲区),或者在复制前至少使用 `nb_bytes_in_sample <= sizeof(store)` 进行边界检查。
    
    ### 7. 附件
    - `reframe_rawpcm.c`: 漏洞 `rfpcm` 代码
    - `poc_rfpcm_reverse_stack_overflow.py`: 可运行的 PoC 生成器
                                            
    POC/gpac_rawpcm/GPAC_RFPCM.md at main · zakkanijia/POC · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2025-70309
四、漏洞 CVE-2025-70309 的评论

暂无评论


发表评论