🟠 高危 | CVE-2026-64834 — FFmpeg versions 0.6.3 through 8.1.2 contain an inf...
🟠 【深度分析】高危安全漏洞:CVE-2026-64834
CVSS 评分: 高危(8.7)🟠 状态: Analyzed 发布时间: 2026-07-22
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-64834 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/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-835 |
| 发布时间 | 2026-07-22 |
| 最后更新 | 2026-07-28 |
| 状态 | Analyzed |
| 数据来源 | disclosure@vulncheck.com |
CVSS 4.0 评分:8.7(高危)
CVSS 向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CWE: CWE-835(循环中的无限循环)
漏洞概述
CVE-2026-64834 是一个影响流行多媒体框架 FFmpeg 的拒绝服务漏洞,存在于其 RTP/ASF 解复用器(libavformat/rtpdec_asf.c)中。攻击者可以通过发送特制的 RTP/ASF 数据流,触发无限循环,导致 CPU 资源耗尽,从而使服务不可用。
该漏洞影响 FFmpeg 从 0.6.3 到 8.1.2 版本的广泛版本范围,且攻击条件简单——无需身份验证、无需用户交互、只需网络可达即可利用,因此危害等级被评定为 高危。
受影响组件与版本
| 组件 | 版本范围 |
|---|---|
| FFmpeg | 0.6.3 至 8.1.2(含) |
| 受影响模块 | libavformat/rtpdec_asf.c |
说明: 漏洞存在于
rtp_asf_fix_header函数中,该函数用于处理通过 RTP 传输的 ASF 流(ASF 是微软 Advanced Systems Format 的简称)。所有启用了 RTP/ASF 解复用功能的 FFmpeg 版本均受影响。
漏洞原理分析
技术成因
在 rtp_asf_fix_header 函数中,代码会遍历 ASF 对象链以修正头部结构。每个 ASF 对象由以下部分组成:
- 对象 GUID(16 字节)
- 对象大小(8 字节,64 位小端整数)
- 对象数据(长度 = 对象大小 - 24 字节)
标准规定:最小 ASF 对象头大小为 24 字节(即 GUID + 大小字段)。当循环读取对象时,逻辑依赖对象大小字段来推进指针到下一个对象。
漏洞代码片段(伪码示意)如下:
while (ptr < end) {
// 读取对象大小 (8 bytes)
uint64_t chunksize = AV_RL64(ptr + 16);
// 处理对象...
// 更新指针: ptr += chunksize;
ptr += chunksize;
}
问题: 代码未对 chunksize 进行有效性校验。如果攻击者构造的 ASF 对象中 chunksize 字段小于 24 字节(例如设置为 0、1 或小于 24 的值),则:
ptr += chunksize后指针几乎不移动(或移动极小)。- 循环条件
ptr < end依然满足,但下一轮迭代中读取的仍是相同或几乎相同的内存区域。 - 由于
chunksize始终小于 24 字节,指针无法越过当前对象头,导致 无限循环。
攻击向量
攻击者通过 RTP 会话 发送特制的 ASF 流。RTP/ASF 解复用器会在接收到的数据包中解析出 ASF 对象,并调用 rtp_asf_fix_header 进行头部修正。只需一个精心构造的 RTP 数据包(包含一个 chunksize 小于 24 的 ASF 对象),即可触发漏洞。
由于整个处理过程在单线程中进行,无限循环将导致 CPU 占用率暴增至 100%,从而拒绝为其他合法用户提供服务。
影响评估
| 维度 | 分析 |
|---|---|
| 攻击复杂度 | 低(AC:L)——无需特殊技术能力,只需构造一个简单的畸形 ASF 对象。 |
| 攻击向量 | 网络(AV:N)——通过 RTP 协议远程发送数据包即可。 |
| 所需权限 | 无(PR:N)——无需任何身份认证或会话。 |
| 用户交互 | 无(UI:N)——受害者无需点击、打开文件或执行任何操作。 |
| 攻击影响 | 仅影响可用性(VA:H)——CPU 耗尽导致服务拒绝,不涉及数据泄露或篡改。 |
| 利用条件 | 目标系统必须启用了 RTP/ASF 解复用器(默认配置下通常启用)。 |
| 潜在后果 | 服务完全不可用;多实例场景下可导致宿主机资源枯竭;流媒体服务器整体宕机。 |
实际威胁等级:高危。 由于利用门槛极低,且影响面广(所有 FFmpeg 0.6.3–8.1.2 版本),该漏洞可能被广泛用于攻击流媒体服务器、视频转码服务、网络摄像头等依赖 FFmpeg 处理实时流的系统。
修复建议
官方补丁
FFmpeg 已在 8.1.3 及更高版本中修复此漏洞(根据开发者公告,8.1.2 是受影响的最后一个版本)。强烈建议所有用户升级至最新稳定版本。
# 对于通过源码编译的用户
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout n8.1.3 # 如果已发布;否则使用最新 master
./configure && make && sudo make install
临时缓解措施
如果无法立即升级,可采取以下缓解措施:
禁用 RTP/ASF 解复用器
在 FFmpeg 构建时移除rtpdec_asf模块,或通过运行时配置禁止处理 RTP/ASF 流:ffmpeg -f rtp -i input.sdp -c copy output.mkv不主动使用
-f rtp解码 ASF 格式可降低风险。网络层面过滤
在网络边界部署防火墙或入侵检测系统,过滤异常 RTP 数据包(例如检查 ASF 对象大小字段是否小于 24 字节)。注意:该检测需要深度包解析。进程资源限制
使用ulimit或 cgroups 限制 FFmpeg 进程的 CPU 使用率(例如ulimit -t 30),防止无限循环导致系统崩溃。替换替代库
对于仅需要基础流媒体处理的场景,可考虑使用 libavcodec 的替代实现(如 libvlc)作为临时过渡。
参考资料
- CVE 详情页: https://nvd.nist.gov/vuln/detail/CVE-2026-64834
- CWE-835 说明: https://cwe.mitre.org/data/definitions/835.html
- FFmpeg 安全公告(待发布): 建议关注 https://ffmpeg.org/security.html
- 漏洞发现者: disclosure@vulncheck.com(VulnCheck 团队报告)
- 相关分析: https://www.vulncheck.com/advisories/cve-2026-64834(若有)
免责声明: 本文基于 NVD 公开数据进行分析,未验证实际利用代码。请根据自身环境评估风险并采取相应措施。