CVE-2026-33416LIBPNG 1.2.1至1.6.55版本中存在释放后重用漏洞。`png_set_tRNS`和`png_set_PLTE`函数在`png_struct`和`png_info`之间共享堆缓冲区,导致指针悬空。当调用`png_free_data`释放缓冲区后,后续操作可能访问已释放内存,造成内存破坏,影响机密性、完整性和可用性。
漏洞核心在于LIBPNG库中`png_set_tRNS`和`png_set_PLTE`函数导致`png_struct`与`png_info`共享堆缓冲区,造成别名冲突。由于两个结构体生命周期独立,调用`png_free_data`释放`info_ptr`侧缓冲区后,`png_ptr`侧指针悬空。后续图像处理流程中的行转换函数若再次访问该指针,将触发释放后重用(UAF)。攻击者可精心构造恶意PNG文件,利用该UAF漏洞控制程序执行流或导致崩溃,实现远程代码执行或拒绝服务攻击。