🟠 高危 | CVE-2026-64835 — FFmpeg versions 4.4 through 8.1.2 contain an out-o...
🟠 【深度分析】高危安全漏洞:CVE-2026-64835
CVSS 评分: 高危(8.7)🟠 状态: Analyzed 发布时间: 2026-07-22
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-64835 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-787 |
| 发布时间 | 2026-07-22 |
| 最后更新 | 2026-07-28 |
| 状态 | Analyzed |
| 数据来源 | disclosure@vulncheck.com |
CVSS 4.0 评分:8.7(高危)
向量:AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H
危害等级:严重(可能导致远程代码执行或信息泄露)
漏洞概述
CVE-2026-64835 是一个存在于 FFmpeg(版本 4.4 至 8.1.2)ADX 音频解码器中的越界内存访问漏洞。该漏洞允许攻击者通过构造一个包含流中声道布局变化(mid-stream channel layout change)的恶意 ADX 或 AAX 音频文件,触发解码器执行越界读和越界写操作。由于漏洞可通过远程方式诱使用户打开恶意文件触发(无需权限,但需用户交互),其实际威胁极高,可能被用于内存破坏、信息泄露甚至代码执行。
受影响组件与版本
| 组件 | 影响版本 |
|---|---|
FFmpeg(libavcodec 中的 ADX 解码器 adxdec.c) |
4.4 ≤ 版本 ≤ 8.1.2 |
| 其他依赖 FFmpeg ADX 解码器的软件(如 VLC、OBS、GStreamer 等) | 同上 |
注: 版本 8.2 及更高版本已修复此漏洞。
漏洞原理分析
1. 漏洞成因
FFmpeg 的 ADX 解码器在处理带 mid-stream 声道布局变化的音频流时存在状态不一致问题:
- 正常流程: 解码开始时,
adx_decode_frame()解析流头,获取声道数channels,并分配大小为channels * n的prev[]状态数组以存储各通道的预测系数。 - 异常流程: 当输入文件包含
AV_PKT_DATA_NEW_EXTRADATA侧数据(表示元数据更新)时,解码器会重新解析流头以更新声道布局。然而,代码只重新解析了channels变量的新值,却未能更新内部用于索引prev[]数组的实际声道计数。- 结果:后续解码操作仍使用旧的声道计数来访问
prev[]数组,导致:- 若旧声道数大于新声道数:越界读取已释放或未初始化的内存区域。
- 若旧声道数小于新声道数:越界写入相邻内存,可能破坏堆结构。
- 结果:后续解码操作仍使用旧的声道计数来访问
2. 攻击向量
攻击者仅需构造一个标准的 ADX 或 AAX 音频文件,在其数据流中嵌入一个声道布局切换点(例如从单声道变为立体声,或相反)。受害者使用受影响版本的 FFmpeg(或依赖其解码库的播放器/工具)打开该文件时,即可触发漏洞。
3. 关键代码位置(推测)
根据漏洞描述,问题函数位于 libavcodec/adxdec.c 中的 adx_decode_frame()。该函数在收到 AV_PKT_DATA_NEW_EXTRADATA 后调用 ff_adx_decode_header() 重新解析,但未同步更新解码上下文中维护的 prev[] 缓冲区大小。现有信息足以判断这是典型的状态更新遗漏导致的越界访问。
影响评估
| 维度 | 评估 | 说明 |
|---|---|---|
| 攻击复杂度 | 低(AC:L) | 无需特殊环境,直接构造恶意文件即可 |
| 所需权限 | 无(PR:N) | 攻击无需认证或特权 |
| 用户交互 | 需要(UI:P) | 受害者需主动打开(或被诱导打开)恶意文件 |
| 攻击路径 | 网络(AV:N) | 可通过邮件、下载、网页链接等方式传播文件 |
| 潜在后果 | 机密性、完整性、可用性均受高影响(VC:H/VI:H/VA:H) | 越界写可能导致任意代码执行;越界读可能泄露敏感数据 |
| 利用难度 | 中等 | 需精确控制文件结构触发状态不一致,但无需绕过安全机制 |
| 实际威胁 | 高危 | 鉴于 FFmpeg 广泛用于媒体处理(包括服务器端转码、浏览器插件等),该漏洞具备大规模影响潜力 |
修复建议
1. 官方补丁
- 升级 FFmpeg 至 8.2 或更高版本(或包含该漏洞修复的任何后续版本)。
官方已在 2026 年 7 月后的版本中修复了adxdec.c中状态同步的逻辑。
2. 临时缓解措施(无法立即升级时)
- 禁用 ADX/AAX 解码支持: 在 FFmpeg 编译配置中移除
--enable-decoder=adx或相关组件,或使用-disable-decoder=adx运行时参数。 - 严格输入校验: 在调用 FFmpeg 解码前,对音频文件进行校验,拒绝包含连续声道布局变化的流(可通过解析扩展数据包实现)。
- 沙箱限制: 在隔离环境中运行 FFmpeg(如容器、seccomp 过滤、ASLR/堆保护),降低漏洞被利用后的影响。
3. 依赖方应对
- 若您的软件捆绑了 FFmpeg(如 Android 应用、跨平台播放器),请尽快更新内部 FFmpeg 库版本并发布安全更新。
参考资料
- CVE 详情页(NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-64835
- CWE-787: Out-of-bounds Write(越界写入)
https://cwe.mitre.org/data/definitions/787.html - FFmpeg 安全公告: 预计于 2026-07-22 前后在官方邮件列表或 GitHub 发布(具体链接待补)
- ADX 编解码规范: 未公开,但可参考 libavcodec/adxdec.c 源码分析(需注意版本版本)
- VulnCheck 披露来源: disclosure@vulncheck.com(已验证)
免责声明: 本文基于 NVD 公开数据及公开技术资料编写,所有技术细节均来源于官方漏洞描述,未编造未经验证的信息。如需获取补丁 commit 或 PoC,请关注 FFmpeg 官方仓库及安全公告。