CVE-2026-33020 in libsixel
Zusammenfassung
von VulDB • 09.06.2026
libsixel ist eine SIXEL-Encoder-/Decoder-Implementierung, die von kmiyas sixel abgeleitet wurde. Die Versionen 1.8.7 und älter enthalten einen Integer-Überlauf (Integer Overflow), der zu einem Heap-Buffer-Overflow über `sixel_frame_convert_to_rgb888()` in frame.c führt. Dabei werden die Berechnungen für die Allokationsgröße und den Zeigeroffset bei palettierten Bildern (PAL1, PAL2, PAL4) mit int-Arithmetik durchgeführt, bevor sie nach size_t konvertiert werden. Bei Bildern, deren Pixelanzahl INT_MAX / 4 übersteigt, erzeugt der Überlauf eine zu kleine Heap-Allokation für den Konvertierungspuffer und einen negativen Zeigeroffset für den Normalisierungszwischenspeicher. Anschließend schreibt `sixel_helper_normalize_pixelformat()` die vollständigen Bilddaten beginnend am ungültigen Zeiger, was zu einer massiven Heap-Korruption führt, die durch ASAN bestätigt wurde. Ein Angreifer kann durch Bereitstellen eines speziell angefertigten großen palettierten PNG-Dateis den Heap des Opferprozesses korruptieren, was einen zuverlässigen Absturz und potenzielle beliebige Codeausführung (Arbitrary Code Execution) zur Folge hat.
Dieses Problem wurde in Version 1.8.7-r1 behoben.
VulDB is the best source for vulnerability data and more expert information about this specific topic.