Skip to main content

Libsixel CVE-2026-33021

| EUVDEUVD-2026-22746 HIGH
Use After Free (CWE-416)
2026-04-14 GitHub_M
7.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Supply malicious SIXEL file
  2. Delivery
    Application invokes sixel_encoder_encode_bytes()
  3. Exploit
    Trigger resize in sixel_frame_convert_to_rgb888()
  4. Install
    Library frees caller-owned buffer
  5. C2
    Caller accesses freed memory
  6. Execute
    Use-after-free condition
  7. Impact
    Crash or code execution

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Local attacker or application using libsixel 1.8.7 or earlier must call sixel_encoder_encode_bytes() with a pixel buffer, trigger a resize operation via sixel_frame_convert_to_rgb888(), then access the original buffer. No user interaction required; requires vulnerable code path execution.

Impact

The CVSS v3.1 score of 7.3 (AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H) indicates a local attack vector with low complexity requiring no privileges or user interaction, delivering high availability impact and low confidentiality/integrity impact. While the local-only attack vector limits remote exploitation scenarios, the PR:N (no privileges required) component is significant-any local process or user can trigger the vulnerability without special permissions. The 'RCE' tag suggests potential for code execution beyond simple denial-of-service, though this would require precise heap manipulation. No public exploit code is identified at time of analysis, and the vulnerability is not listed in CISA KEV, indicating no confirmed active exploitation in the wild. However, the technical description notes attackers can trigger the bug 'repeatedly and predictably,' suggesting high reliability for weaponization. The SSVC framework would classify this as having moderate technical impact (local scope limits blast radius) but high automatable potential given the deterministic trigger. Real-world risk depends heavily on deployment context: applications processing untrusted SIXEL images from local users or sandboxed processes face elevated risk, while server-side deployments with strict input controls have lower exposure. The availability of a patch (1.8.7-r1) significantly reduces risk for organizations with robust patch management.

Exploit ScenarioDerived

A local attacker with the ability to supply SIXEL image files to a vulnerable application (such as a terminal emulator or image converter) crafts a malicious SIXEL file containing specific frame dimensions designed to trigger resize operations during encoding. When the victim application processes this file through sixel_encoder_encode_bytes(), the library frees the caller's pixel buffer and replaces it internally. The attacker then leverages timing or additional crafted frames to cause the application to access the now-freed memory region, potentially achieving code execution if heap feng shui techniques allow controlled data placement in the freed region, or at minimum causing a reliable application crash for denial of service.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Apr 15, 2026

Use-after-free in libsixel 1.8.7 and earlier enables local attackers to crash applications or execute arbitrary code via crafted SIXEL image frames. The vulnerability occurs when sixel_encoder_encode_bytes() processes resize operations that free caller-owned pixel buffers, creating dangling pointers exploitable through repeated, predictable frame manipulation. EPSS data not available; no confirmed active exploitation (not in CISA KEV), but the technical details suggest reliable exploitation potential for local privilege escalation or RCE scenarios.

RemediationAI

Upgrade libsixel to version 1.8.7-r1 or later, released by the vendor to address this use-after-free vulnerability. The patch modifies memory ownership semantics in sixel_frame_init() and sixel_frame_convert_to_rgb888() to prevent premature deallocation of caller-owned buffers. Download the fixed version from the official release page at https://github.com/saitoha/libsixel/releases/tag/v1.8.7-r1 and rebuild dependent applications against the updated library. For systems using package managers, check for updated libsixel packages from distribution maintainers. As a temporary workaround if immediate patching is not feasible, restrict processing of SIXEL images to trusted sources only and implement strict input validation to reject malformed or suspiciously crafted image frames that might trigger resize operations. Monitor applications for unexpected crashes in SIXEL processing code paths, as these may indicate exploitation attempts. Review application code to ensure proper error handling around sixel_encoder_encode_bytes() calls and validate that pixel buffers are not accessed after encoding operations until memory ownership is reestablished.

Affected VersionsENISA

libsixel < 1.8.7-r1

Affected Packages

euvd libsixel fix: 1.8.7-r1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

libsixel is a library for encoding and decoding SIXEL graphics format, derived from kmiya's sixel implementation. The vulnerability stems from unsafe memory management in the encoder pipeline: sixel_frame_init() stores a direct pointer to the caller's pixel buffer in frame->pixels without creating a defensive copy. When sixel_frame_convert_to_rgb888() handles image resize operations during encoding, it unconditionally calls free() on this caller-owned buffer and replaces it with a new internal allocation. This violates memory ownership contracts and leaves the caller holding a dangling pointer to freed memory. The issue is classified as CWE-416 (Use After Free), a critical memory corruption class that typically leads to crashes, information disclosure, or arbitrary code execution depending on heap layout and attacker control over subsequent allocations. AddressSanitizer confirmed the use-after-free condition, indicating the bug is deterministic and reproducible under controlled conditions.

Know when Libsixel gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.3 HIGH
AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H
SUSE HIGH
Red Hat 7.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
High

Lifecycle Timeline

4
Patch released
Apr 23, 2026 - 14:23 nvd
Patch available
Analysis Updated
Apr 16, 2026 - 05:57 EUVD-patch-fix
executive summary
Patch available
Apr 16, 2026 - 05:29 EUVD
1.8.7-r1
CVE Published
Apr 14, 2026 - 21:57 nvd
HIGH 7.3

DescriptionCVE.org

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 sixel_encoder_encode_bytes() because sixel_frame_init() stores the caller-owned pixel buffer pointer directly in frame->pixels without making a defensive copy. When a resize operation is triggered, sixel_frame_convert_to_rgb888() 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.

Executive ViewAI

Why It Matters

libsixel versions 1.8.7 and earlier contain a use-after-free vulnerability (CVE-2026-33021) that allows local attackers to crash applications or execute arbitrary code by processing specially crafted SIXEL image files. This affects any organization running applications that depend on libsixel for image processing, potentially enabling local privilege escalation or remote code execution if exploited through application input pipelines.

Business Impact: High
Compensating Controls

Apply vendor patch. Pending patch deployment, restrict SIXEL image file processing to trusted sources only, implement application-level input validation to reject malformed image frames, and disable SIXEL functionality in non-critical workflows.

Threat Intelligence Overview

EPSS Score
0.0%
Top 97% exploitable
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2019-20140 HIGH POC
8.8 Dec 30

An issue was discovered in libsixel 1.8.4. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-20094 HIGH POC
8.8 Dec 30

An issue was discovered in libsixel 1.8.4. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-20205 HIGH POC
8.8 Jan 02

libsixel 1.8.4 has an integer overflow in sixel_frame_resize in frame.c. Rated high severity (CVSS 8.8), this vulnerabil

CVE-2021-41715 HIGH POC
8.8 Apr 08

libsixel 1.10.0 is vulnerable to Use after free in libsixel/src/dither.c:379. Rated high severity (CVSS 8.8), this vulne

CVE-2020-21548 HIGH POC
8.8 Sep 17

Libsixel 1.8.3 contains a heap-based buffer overflow in the sixel_encode_highcolor function in tosixel.c. Rated high sev

CVE-2020-21547 HIGH POC
8.8 Sep 17

Libsixel 1.8.2 contains a heap-based buffer overflow in the dither_func_fs function in tosixel.c. Rated high severity (C

CVE-2019-19778 HIGH POC
8.8 Dec 13

An issue was discovered in libsixel 1.8.2. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, n

CVE-2019-19777 HIGH POC
8.8 Dec 13

stb_image.h (aka the stb image loader) 2.23, as used in libsixel and other products, has a heap-based buffer over-read i

CVE-2021-40656 HIGH POC
8.8 Apr 08

libsixel before 1.10 is vulnerable to Buffer Overflow in libsixel/src/quant.c:867. Rated high severity (CVSS 8.8), this

CVE-2022-27044 HIGH POC
8.8 Apr 08

libsixel 1.8.6 is affected by Buffer Overflow in libsixel/src/quant.c:876. Rated high severity (CVSS 8.8), this vulnerab

CVE-2022-27046 HIGH POC
8.8 Apr 08

libsixel 1.8.6 suffers from a Heap Use After Free vulnerability in in libsixel/src/dither.c:388. Rated high severity (CV

CVE-2019-3574 HIGH POC
7.8 Jan 02

In libsixel v1.8.2, there is a heap-based buffer over-read in the function load_jpeg() in the file loader.c, as demonstr

Vendor StatusVendor

SUSE

Severity: High

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy