IPBUF安全漏洞报告
English
CVE-2026-33019 CVSS 7.1 高危

CVE-2026-33019 libsixel整数溢出漏洞

披露日期: 2026-04-14

漏洞信息

漏洞编号
CVE-2026-33019
漏洞类型
整数溢出
CVSS评分
7.1 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
libsixel

相关标签

整数溢出越界读取libsixelDoS信息泄露

漏洞概述

libsixel是一个SIXEL编解码器库,其1.8.7及更早版本中存在一个严重的整数溢出漏洞。该漏洞出现在img2sixel工具的--crop选项处理逻辑中。由于代码未对输入坐标进行溢出安全检查,当clip_x为INT_MAX时,计算clip_w + clip_x会导致加法溢出,从而绕过边界检查。攻击者可利用此漏洞触发堆越界读取,导致应用程序崩溃或潜在的信息泄露风险。

技术细节

该漏洞的核心在于libsixel的img2sixel工具在处理图像裁剪时的逻辑缺陷。在sixel_encoder_do_clip()函数中,程序接受了正值高达INT_MAX的坐标参数,但缺乏相应的溢出保护机制。当攻击者传入的clip_x值为INT_MAX时,表达式clip_w + clip_x会发生整数溢出,结果变为一个大的负数。这一负值导致后续的边界检查条件被绕过,使得未经限制的坐标参数通过sixel_frame_clip()传递给clip()函数。clip()函数基于此错误坐标计算出的源指针远远超出了图像缓冲区的实际范围,并最终被传递给memmove()函数执行内存操作。这一过程触发了堆越界读取,不仅会导致程序可靠崩溃,还可能泄露内存中的敏感信息。该漏洞需要本地访问权限和用户交互才能触发,CVSS评分为7.1,属于高危漏洞。

攻击链分析

STEP 1
步骤1
攻击者准备一个包含有效载荷的图像文件。
STEP 2
步骤2
攻击者构造恶意的命令行参数,将--crop选项的x坐标设置为INT_MAX(2147483647)。
STEP 3
步骤3
诱导受害者执行img2sixel工具处理该图像并应用恶意的裁剪参数。
STEP 4
步骤4
程序在计算边界时发生整数溢出(clip_w + clip_x),导致负数结果。
STEP 5
步骤5
边界检查被绕过,程序执行越界堆读取操作,导致崩溃或信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-33019 # This script demonstrates the integer overflow in img2sixel --crop option. # Usage: ./poc.sh # 1. Create a small dummy image (1x1 pixel PNG) # Using base64 to create a minimal valid PNG echo "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==" | base64 -d > input.png # 2. Execute img2sixel with malicious crop arguments # clip_x is set to INT_MAX (2147483647) # clip_w is set to 100 # Calculation: clip_w + clip_x overflows to negative, bypassing bounds check. echo "Triggering vulnerability..." img2sixel --crop=2147483647,0,100,100 input.png echo "If the application crashes or reads out-of-bounds, the vulnerability is confirmed."

影响范围

libsixel <= 1.8.7

防御指南

临时缓解措施
在未升级的情况下,应避免使用不受信任来源的图像文件通过img2sixel进行裁剪操作。建议在系统层面限制该工具的调用,或通过输入过滤机制拒绝接近INT_MAX的坐标值。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表