FFmpeg惊现21个零日漏洞
在谷歌和Anthropic进行深入安全分析后,depthfirst的生产自主安全代理在FFmpeg中发现21个零日漏洞。代理能生成可复现的概念验证(PoC)输入,以1000美元成本证实发现,远低于Anthropic的10000美元。部分漏洞已潜伏15到20年,还开发了演示远程代码执行(RCE)利用原语的PoC。
FFmpeg:安全关键的媒体处理库
FFmpeg是全球广泛部署的软件,处理着从浏览器到大型流媒体平台的媒体。作为常解析复杂、不可信媒体的库,它对安全至关重要,也是零点击攻击主要目标。其代码库庞大,含约150万行C代码,经二十多年模糊测试和人工审计。近期,谷歌和Anthropic分别有相关发现,显示先进模型对复杂C代码推理能力增强。
depthfirst的探索与挑战
随着发现漏洞难度增加,depthfirst构建智能系统深度扫描代码库。虽无法用Mythos模型,但想知道仅用现有模型能走多远,能否重新发现已有漏洞及找到新关键漏洞。
depthfirst的安全代理
编码代理和安全代理目标不同。安全代理要对代码库威胁建模,审计攻击面代码,跟踪数据流。实用的安全代理需有防护机制,检查攻击者输入、漏洞路径可达性和复现性,必要时生成测试框架。depthfirst的安全代理深入分析代码,并行测试假设,用可复现输入指出安全问题,确保漏洞真实、可达且可操作。
发现结果
代理共发现21个零日漏洞,涉及多个组件,总成本约1000美元。其中8个已分配CVE编号,如CVE - 2026 - 39210(堆缓冲区溢出)等;其余已修复但未分配编号,通过内部跟踪ID引用,如DFVULN - 127(堆缓冲区溢出)等。
从跳过的帧标记到控制计算机
21个发现中,FFmpeg的AV1 RTP解包器堆缓冲区溢出漏洞突出。该漏洞可网络触发,受害者运行普通命令,183字节数据包就能重定向执行流程。
根本原因
解包器构建输出数据包时,时间分隔符处理打破不变量。跳过TD时,pktpos被推进但未分配内存,输入指针未移动,导致写入游标破坏,攻击者控制写入内容。后续正常OBU处理时,会出现堆缓冲区溢出。
利用
FFmpeg分配器提供攻击目标。溢出可破坏AVBuffer结构体中的free指针,数据包释放时,被破坏的free指针被调用,控制指令指针。该漏洞影响范围广,相关部署易受攻击,可在指定位置找到PoC代码。那么,如何更好地防范此类漏洞呢?