ZCyberNews
English
漏洞低危4 分钟阅读
CVE-2026-44638

libsixel NULL 指针解引用 CVE-2026-44638 获得低 CVSS

CVE-2026-44638:libsixel 1.8.7-r1 及之前版本在 sixeldecoderaw 和 sixel_decode 中由于 malloc 后错误的 NULL 检查导致 NULL 指针解引用。CVSS 2.5。

libsixel NULL 指针解引用 CVE-2026-44638 获得低 CVSS

执行摘要

广泛使用的SIXEL编码器/解码器库libsixel中存在一个NULL指针解引用漏洞,已分配CVE-2026-44638,CVSS得分为2.5(低)。该漏洞影响包括1.8.7-r1在内的所有版本。根据libsixel维护者在GitHub上发布的公告,根本原因是sixel_decode_rawsixel_decode函数中内存分配调用后的NULL检查逻辑错误。代码没有检查malloc返回的指针,而是检查了输出参数的地址,该地址始终非NULL。这意味着当内存分配失败时,代码继续解引用NULL指针,导致崩溃。该漏洞可以通过本地或通过精心制作的耗尽内存的SIXEL图像进行利用,但其影响仅限于拒绝服务。

技术分析

该漏洞存在于libsixel核心解码例程的内存分配处理中。在sixel_decode_rawsixel_decode函数中,库使用malloc分配内存,然后尝试验证分配的成功。公告(GHSA-wpx3-h5g8-qr3w)指出,检查“测试输出参数的地址(始终非NULL)而不是malloc返回的值。”这是一个经典的错误处理中的偏移逻辑错误:程序员打算验证分配的缓冲区是否存在,但反而验证了传递给函数的指针到指针参数不是NULL——在正常使用中始终为真的条件。

malloc失败(例如,由于内存耗尽或图像尺寸过大)时,返回的指针是NULL。由于NULL检查方向错误,代码没有检测到失败并继续通过NULL指针写入数据。这导致NULL指针解引用,在大多数操作系统上会导致段错误和进程终止。

受影响的版本从最初的实现到1.8.7-r1。修复(可能包含在后续版本中)更正了NULL检查,将malloc的实际返回值与NULL进行比较。公告没有指定固定版本号,但用户应升级到最新版本。

CVSS 2.5得分反映了低严重性:攻击向量是本地(AV:L)或需要用户交互打开格式错误的SIXEL文件(AC:L, PR:N, UI:R)。对可用性的影响是部分的(A:L),对机密性或完整性没有影响(C:N, I:N)。攻击者需要说服用户处理特别制作的SIXEL图像,或在自动从不受信任的源解码SIXEL数据的服务中利用该漏洞。

缓解措施与建议

防御者应更新libsixel到包含CVE-2026-44638修复的最新版本。截至本文撰写时,修复版本尚未在公告中明确标记,但仓库的提交历史应包含修正的NULL检查。处理来自不受信任源的SIXEL图像的系统的用户——例如终端仿真器、图像查看器或转换工具——应优先考虑此更新。在使用libsixel作为服务上下文的环境中(例如,将上传的图像转换为SIXEL格式的Web应用程序),考虑实施内存限制或对解码过程进行沙箱处理,以减轻拒绝服务攻击的风险。

订阅更新

将最新的网络安全资讯直接发送到您的邮箱。

标签:#libsixel#cve-2026-44638#null-pointer-dereference#memory-corruption#sixel

相关文章