CVE-2026-33165libde265是一款开源的H.265视频编解码器。在1.0.17版本之前,存在一个堆越界写入漏洞。该漏洞由精心构造的HEVC比特流触发,具体原因是SPS变化后,尽管图像宽高不变但Log2CtbSizeY变化,导致ctb_info.log2unitSize数据过期。这使得set_SliceHeaderIndex在访问数组时越界,并在堆分配末尾写入2字节。攻击者可利用此漏洞导致应用程序崩溃或潜在的代码执行。
该漏洞源于libde265在处理HEVC视频流时的状态管理逻辑缺陷。具体而言,当解码器解析视频流并遭遇SPS(序列参数集)变更事件时,系统理应重新初始化相关的图像参数。然而,代码未能及时更新ctb_info结构体内的log2unitSize字段。漏洞触发的特定条件是:当PicWidthInCtbsY和PicHeightInCtbsY保持不变,但Log2CtbSizeY发生变化时,旧的log2unitSize值被错误地保留。随后,在调用set_SliceHeaderIndex函数进行索引设置时,程序利用这个过期的值计算索引,导致越界。最终,程序在堆分配区域的末尾向后写入2字节数据,可能破坏堆结构或导致代码执行。