上周,@FFmpeg 账号开始嘲讽安全研究人员。这种做法很愚蠢,因为它忽略了他们攻击面与我们攻击面之间的不对称性。 为了练习,我找到了他编写的软件中的一个基于栈的缓冲区溢出漏洞。我花了大约 20 分钟才找到。帖子🧵(1/5)
首先,我注意到FFMpeg的账号并非由FFMpeg的活跃开发者控制,而是由几个人共同管理,其中一个名叫Keiran。这很奇怪,但并不重要。 keirank GitHub 用户提交的更改很少,没有提交任何关于 FFMPEG 的更改,但提交了 Upipe,这是他公司开发的视频处理软件。 那么让我们来看看他最近的提交“验证 num_delta_pocs 以避免堆栈溢出”。(2/5)
@FFmpeg 确实,@FFmpeg 编写了一个验证程序,但是尽管处理的是不同维度的二维数组,它却只检查一个索引。 这肯定不对。由于我没有时间验证,所以我指示一位LLM(法学硕士)“查找代码中的关键错误”。 GLM 4.6 发现了很多 (3/5)
每次计算预测帧时,都会增加参考图片数组,但这在验证中并未考虑在内。 溢出(读取过多)。 因此,我们有办法从堆栈中超读最多 64 个字节(64 是参考帧的最大数量)。 但是我们能直接写入堆栈吗?我让LLM编写一个h265帧模糊测试器,它非常复杂,但它一次性就完成了(4/5)。
@FFmpeg 现在出现了基于栈的读写缓冲区溢出漏洞。游戏结束。 模糊测试器和完整说明可以在我的 GitHub 上找到: https://t.co/7m0i6Dmvud



