漏洞总结:Use-After-Free in load_gif() 漏洞概述 在 函数中,libsixel 库在处理动画 GIF 时存在一个 Use-After-Free 漏洞。该函数会重用单个 对象来存储所有帧的数据。在帧之间,它会释放并重新分配 缓冲区,而没有检查外部引用是否仍然存在。 漏洞核心原因: 公共 API 允许通过 保留帧的引用 直接暴露原始像素指针 当回调函数保留帧指针时,下一帧的解码会导致之前保留的指针指向已释放的内存 影响范围 受影响版本: fromgif.c <= 1.8.7 严重程度: 高 (7.0/10) CVSS 向量: CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/E:N/A:H CWE 编号: CWE-416 影响: 任何使用 处理多帧回调的应用程序都可能受到影响。恶意构造的 GIF 文件可以触发 Use-After-Free,可能导致代码执行。 修复方案 已修复版本: None(尚未发布修复版本) 建议: 在释放和重新分配 之前,应该检查是否有外部引用存在 POC 代码 触发条件: 任何至少包含 2 个调色板帧的动画 GIF 文件