一个精心构造的视频文件,一段含恶意元数据的PNG图片,甚至一个仅171字节的小文件,就能让全球使用最广泛的开源多媒体框架FFmpeg直接崩溃,甚至让攻击者远程执行任意代码。

本周FFmpeg项目刚刚公开了6个高危安全漏洞,覆盖视频滤镜、音频解码、图像编码、文件解析等多个核心组件。所有问题的共同点只有一个:当应用程序处理恶意文件时,内存立刻失控。对任何依赖FFmpeg转码、剪辑、推流的服务来说,这已经不是“什么时候修”,而是“能不能扛到修完”的问题。

打开网易新闻 查看精彩图片

下面把这6个漏洞按危害程度逐一拆开看——有些坑,真的是一眼血压高。

CVE-2026-66036:视频去噪滤镜一帧就爆内存

这个漏洞落在 vf_hqdn3d 滤镜身上,CVSS评分 7.7。攻击者可以准备一个视频,第一帧宽度正常,后续帧分辨率突然变大。如果调用FFmpeg时用了 -reinit_filter 0 关闭滤镜重新初始化,FFmpeg会按第一帧的宽度分配行历史缓冲区,后面大尺寸帧写进 denoise_spatial() 时就直接越界,把堆内存砸得面目全非

说白了,这就是一种经典的“信任第一帧”设计翻车。但凡视频动态改变分辨率,又不让滤镜重新分配内存,溢出就是板上钉钉。而且利用门槛低到离谱——生成一个多分辨率视频文件就行。

CVE-2026-66041:字幕尺寸突变,libquirc被挤爆

同样7.7分的漏洞出在 vf_quirc 滤镜,影响FFmpeg 7.0到8.1版本。这次攻击介质是PGS/SUP字幕文件。正常流程是先显示一个小尺寸字幕,然后在播放过程中插入一个更大尺寸的后期呈现,FFmpeg会把超量数据塞进为前一次尺寸准备的灰度图像缓冲区里,libquirc接到的分分钟是内存越界数据

想想那些需要自动识别二维码或字幕预处理的服务,只要字幕轨道里塞个突变尺寸,就能让服务崩溃甚至更糟。对于流媒体和视频托管平台,这可不是什么边缘场景。

CVE-2026-66039:MACE6音频解码整数溢出,越写越远

这个漏洞翻车在老款MACE6音频解码器里。一个恶意CAF文件中,bytes_per_packet 和 frames_per_packet 字段可以取到超大的值,造成整数溢出,随后分配出一块偷工减料的缓冲区,数据照写不误——典型的越界写

CVSS没给最高分是因为利用条件稍复杂,但问题是CAF格式在某些语音处理场景中并不少见,而MACE6解码器本身设计老旧、防守薄弱,一旦被盯上,后果就是堆破坏,可能通向代码执行。

CVE-2026-66040:PNG/APNG编码器的“精准腐败”

FFmpeg自身的PNG和APNG编码器出了问题。一张含恶意eXIf元数据块的PNG图片,在输出序列化时会让实际数据体积超过预估分配量,直接造成确定性的堆损坏,足以用来执行任意代码

这个漏洞最膈应人的地方在于,它不需要视频,一张静态图片就能触发,而且几乎所有使用FFmpeg内置PNG编码器的应用——截图工具、缩略图生成、媒体库扫描——都可能中招。CVSS 7.7给的已经算保守了。

CVE-2026-66037:171字节文件榨干内存

被标记为“资源失控”的IAMF解复用器漏洞,评分7.1。一个特意打造的171字节文件,通过控制 count_label 字段,可以触发数十GB级别的内存分配,在格式探测阶段直接把系统推到OOM边缘。

换句话说,攻击者不需要任何权限,只要让应用扫描一下这个文件,内存就瞬间爆炸。对长期运行的服务进程,这种DoS几乎是无成本的致命打击。

CVE-2026-66038:LCL/ZLIB解码器泄露未初始化内存

同样7.1分的漏洞出在LCL/ZLIB视频解码器。一段有效但非常短的zlib流会留下一部分输出帧数据没有初始化,FFmpeg随后把这些堆上的残留内容copy进可观测输出里,可能泄露分配器内部结构,弱化地址空间布局随机化(ASLR)防护

别看只是“信息泄露”,在利用链里这往往是突破ASLR的关键一环。对于长时间运行的转码或流媒体服务,稳定泄露堆内存数据,就等于给攻击者拆掉了最后一道防线。

补丁来了,但时间不等人

目前这些漏洞都已在FFmpeg上游仓库修复,相关commit分别是 5d7112c、8670835、e7cbfd1、aafb5c6、b506faf 和 4da9812。项目维护者建议所有用户立即升级到包含补丁的版本,或者用这些commit重新编译FFmpeg。如果暂时没法打补丁,至少应该限制输入源、关闭不必要的滤镜,并避免使用 -reinit_filter 0 这样的危险选项。

6个高危漏洞齐发,从视频滤镜到音频解码再到图片编码,攻击面几乎是FFmpeg的全家桶。在媒体处理这条链路上,FFmpeg的脚下踩的就是无数云服务和客户端应用的命根子。提醒一句:别等被打了再补,170字节的文件砸下来,内存可不会给你反应时间。