FFmpeg 因除以零漏洞被 Fuzzer 攻破

We found a division by zero bug in FFmpeg with a vibecoded fuzzer

我们的 Fuzzer 在 FFmpeg 的 Sony PS2 VPK 解复用器中发现了一个中等严重性的整数除以零漏洞。攻击者只需构造一个 21 字节的恶意 VPK 文件,就能触发 SIGFPE 异常,导致任何调用 FFmpeg 的应用程序崩溃。根本原因在于 vpk_read_packet 函数在处理最后一块数据时,未检查 nb_channels 是否为零就直接进行了除法运算。尽管头文件解析阶段有验证,但在 Fuzzer 的特定路径下,该验证被绕过,导致除数为零。修复方案是在读取数据包前增加对零通道流的检查,返回错误而非崩溃。

一个精心构造的 21 字节输入就能让任何打开恶意 VPK 文件的 FFmpeg 应用程序崩溃。
  1. aeyes

    今年四月已经提交了一个修复补丁:https://lists.ffmpeg.org/archives/list/[email protected]...

    编辑:2024 年其实也讨论过这个问题。

  2. dabinat

    AI 既能提升也能降低软件质量,这一点很有意思。让 AI 代理去进行开放式漏洞搜索非常容易,如果它浪费了大量时间和精力却一无所获,也没什么大不了的。但对于领薪水的真人开发者来说,时间就宝贵多了。

  3. justonenote

    不管这个漏洞的具体细节如何,也不管它是否是一个有用的攻击向量,这难道一点都不让人意外吗?

    我目前对 LLM 的看法是:它们在某些方面超越了人类,因为它们不知疲倦,并且拥有几乎涵盖所有人类已知公开领域的知识。能用 vibe coding 写个测试框架来在著名的复杂 C 代码库中查找漏洞,这不过是实习生级别的工作,根本算不上新闻。

    聪明的 aspiring 黑帽黑客下一步肯定会盯上 tmux,手段包括轻微的 LLM 越狱、轻微的供应链攻击(利用网络搜索结果)以及在某些环境中利用本地提权(LPE)。这些环境以前没什么用,但现在有了能自动运行数小时的代理,它们就成了非常有价值的跳板。我不确定 tmux 的代码质量如何,但我知道它是用 C 写的,非常复杂,而且当初设计时完全没考虑防御这类威胁。

  4. cptroot

    FFmpeg 里这不是一个真正的漏洞。这只是一个演示:如果你能控制自定义的 AVIO 模块,就可以通过给它喂坏数据来让 FFmpeg 崩溃。

  5. ks2048

    毫无疑问,模糊测试器(无论是 vibe coding 生成的还是其他的)都很强大,但你不能直接把所有的“/”标记为潜在的除以零错误吗?

    我想有时候开发者会觉得自己“知道”某个变量不会为零,但除非显式检查或者由编译器检查,否则就不该轻信这一点。

  6. skupig

    我是不是漏掉了什么?谁在乎呢?这根本不是安全问题,只是对坏数据的不可利用的崩溃。

  7. Zebfross

    为什么不直接修复并添加测试提交 PR,而是要先提交一个 issue 呢?感觉他们只是在给维护者增加工作量。

  8. BikiniPrince

    挺有意思的,我知道自己快触碰到 gStreamer 开发者那边的某个东西了,但 Fable 却直接崩溃了。我只对问题可能藏在哪里有个模糊的概念。

    下周我会申请 cyber,我怀疑会发现类似的东西。

    现在这挺烦人的,幸好 OpenAI 的 cyber 更容易获取访问权限。

同日更多故事

2026-08-27