CVE-2026-33021: libsixel: Use-after-free in sixel_encoder_encode_bytes()
libsixel is a SIXEL encoder/decoder implementation derived from kmiya's sixel. Versions 1.8.7 and prior contain a use-after-free vulnerability in sixelencoderencodebytes() because sixelframeinit() stores the caller-owned pixel buffer pointer directly in frame->pixels without making a defensive copy. When a resize operation is triggered, sixelframeconverttorgb888() unconditionally frees this caller-owned buffer and replaces it with a new internal allocation, leaving the caller with a dangling pointer. Any subsequent access to the original buffer by the caller constitutes a use-after-free, confirmed by AddressSanitizer. An attacker who controls incoming frames can trigger this bug repeatedly and predictably, resulting in a reliable crash with potential for code execution. This issue has been fixed in version 1.8.7-r1.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
libsixelto a version that resolves this vulnerability.Fixed in 1.8.7-r1
Event History
Frequently Asked Questions
Is CVE-2026-33021 publicly known?
Yes, CVE-2026-33021 has been publicly disclosed and documented in security advisories.