
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-33023 is a use-after-free (UAF) vulnerability in libsixel, a SIXEL encoder/decoder library, affecting versions 1.8.7 and prior when built with the --with-gdk-pixbuf2 option. The flaw exists in the load_with_gdkpixbuf() function in loader.c, where a sixel_frame_t object is manually freed without consulting its reference count, leaving callbacks that retained a reference holding a dangling pointer. It was disclosed on April 14, 2026, by researcher nicoppida via a GitHub Security Advisory, and a fix was released the same day in version 1.8.7-r1. The vulnerability carries a CVSS v3.1 base score of 7.8 (High) (GitHub Advisory, Red Hat Bugzilla).
The root cause is a consistency failure between two cleanup strategies in the same codebase (CWE-416: Use After Free; CWE-825: Expired Pointer Dereference). In load_with_builtin(), the correct sixel_frame_unref() is used to decrement the reference count before freeing, but load_with_gdkpixbuf() instead calls raw free() on the sixel_frame_t object and its internal buffers (frame->pixels, frame->palette, frame) without ever reading frame->ref. Because the object is created via the refcounted constructor sixel_frame_new() (which sets ref = 1) and exposed to a public callback, any callback that calls sixel_frame_ref(frame) to retain the object will hold a dangling pointer after sixel_helper_load_image_file() returns. Subsequent access to the frame or its fields (e.g., sixel_frame_get_pixels()) triggers a heap-use-after-free, confirmed by AddressSanitizer. Exploitation requires user interaction — specifically, an application processing a crafted image file (PNG, JPEG, or any format accepted by gdk-pixbuf2) (GitHub Advisory).
Successful exploitation can lead to information disclosure (reading reallocated heap content), memory corruption, or arbitrary code execution if the freed memory region is reused to hold a function pointer or vtable-like structure. The attack vector is local and requires user interaction (e.g., opening a crafted image), but no privileges are required. Any application linked against libsixel with gdk-pixbuf2 support is affected, potentially exposing sensitive in-process data or allowing an attacker to gain code execution in the context of the vulnerable application (GitHub Advisory, Red Hat Bugzilla).
A proof-of-concept (PoC) exploit in the form of a standalone C harness (harness.c) is publicly available in the GitHub Security Advisory. The PoC calls sixel_helper_load_image_file() with a callback that retains a frame reference via sixel_frame_ref(), then accesses the freed memory to trigger the UAF. The EPSS score is approximately 0.015% (very low), and there is no evidence of in-the-wild exploitation or CISA KEV catalog listing as of the time of disclosure. No threat actor attribution has been reported (GitHub Advisory, Feedly).
--with-gdk-pixbuf2 support (e.g., terminal emulators, image viewers, or tools that render SIXEL graphics).sixel_helper_load_image_file() calls load_with_gdkpixbuf(), which frees the sixel_frame_t object via raw free() after the callback has retained a reference via sixel_frame_ref(frame). The saved pointer is now dangling.frame pointer by the application triggers the UAF, potentially redirecting execution flow.sixel_frame_get_pixels, load_with_gdkpixbuf, or sixel_helper_load_image_file in stack traces.loader.c line 1184 (load_with_gdkpixbuf) or frame.c line 205 (sixel_frame_get_pixels); ASAN error messages indicating heap-use-after-free at addresses within libsixel's allocator.Upgrade libsixel to version 1.8.7-r1 or later, which replaces the raw free() calls in load_with_gdkpixbuf() with the correct sixel_frame_unref() to properly respect the reference count. As a workaround, rebuild libsixel without the --with-gdk-pixbuf2 configure option to avoid the vulnerable code path entirely. Additionally, restrict image processing to trusted sources and avoid exposing libsixel-linked applications to untrusted image input until patched (GitHub Release, GitHub Advisory).
The vulnerability was reported by researcher nicoppida and acknowledged by the libsixel maintainer (saitoha), who released the fix in v1.8.7-r1 on the same day as disclosure (April 14, 2026). The release notes note that development is focused on the develop branch with AI-assisted test generation and fuzzing to improve security. Red Hat tracked the issue via Bugzilla with a high severity rating. Social media activity was limited to automated CVE notification accounts on Bluesky and Mastodon (GitHub Advisory, GitHub Release, Red Hat Bugzilla).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."