首页 网络安全 正文
  • 本文约1046字,阅读需5分钟
  • 38
  • 0

FFmpeg JPEG2000解码器漏洞CVE-2025-9951

摘要

栋科技漏洞库关注到受影响版本 libavcodec JPEG2000 解码器存在堆缓冲区溢出写入漏洞,追踪为CVE-2025-9951,CVSS 4.0评分7.2。

FFmpeg是一款业界领先的开源多媒体处理框架,包含一系列音视频库和程序,广泛用于音视频的解码、编码、转码、流媒体处理等场景。

FFmpeg是一款开源的跨平台多媒体处理框架,产品支持视频/音频的录制、转码、流媒体传输及播放等功能,广泛应用于音视频处理领域。

一、基本情况

FFmpeg(Fast Forward MPEG(Moving Picture Experts Group))是全球领先多媒体框架,是 C 语言编写的开源跨平台音视频处理工具集。

FFmpeg JPEG2000解码器漏洞CVE-2025-9951

FFmpeg核心库 libavcodec 是FFmpeg项目中负责音视频编解码的核心组件之一,提供丰富的编解码器,能够处理多种不同的音视频格式。

栋科技漏洞库关注到受影响版本 libavcodec JPEG2000 解码器存在堆缓冲区溢出写入漏洞,追踪为CVE-2025-9951,CVSS 4.0评分7.2。

二、漏洞分析

CVE-2025-9951漏洞是FFmpeg核心库之一的libavcodec中,针对JPEG2000图像格式的解码器中存在的一个堆缓冲区溢出写入安全漏洞。

该漏洞存在于JPEG2000的Channel Definition cdef原子中,该原子用于定义相关组件到通道的映射。

具体而言,受影响版本的 libavcodec JPEG2000 解码器在解析 cdef(Channel Definition)原子时缺乏尺寸校验。

如果色度子采样像素格式与cdef原子一起使用,则可能会触发角情况。

例如,对于分辨率为64x32的YUV420P帧,Y分量将为6432+16+63=2127字节,U和V分量将为6442/2+16+63=1103字节。

通过选择cn=0和asoc=2的cdef,高度为32的全分辨率亮度分量Y的数据可以写入高度为16的较小子采样色度平面U,

从而使帧缓冲区picture->data[plane]溢出64*16=1024字节。

攻击者通过构造恶意cdef映射,将亮度分量数据错误映射到尺寸更小的色度平面缓冲区,由于解码时未做边界检查,导致堆缓冲区溢出。

修复版本在 jpeg2000_decode_tile 函数中增加了严格的尺寸校验逻辑。

在写入前,会检查源组件的宽高是否超过目标平面,一旦不匹配则立即报错并终止解码,从而避免越界写入。

三、POC概念验证

以下base64编码的poc.jp2触发了下面的ASAN死机:

管理员已设置登录后刷新可查看

ASAN panic:

管理员已设置登录后刷新可查看

四、影响范围

FFmpeg < 8.0

五、修复建议

FFmpeg >= 8.0

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接