Skip to main content

libsixel CVE-2026-44638

| EUVDEUVD-2026-30411 LOW
NULL Pointer Dereference (CWE-476)
2026-05-14 GitHub_M
2.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Recon
    Attacker gains local system access
  2. Delivery
    Identifies libsixel-using application
  3. Exploit
    Triggers memory pressure on system
  4. Install
    Supplies crafted SIXEL input to decoder
  5. C2
    malloc fails during buffer allocation
  6. Execute
    NULL pointer check passes incorrectly
  7. Impact
    Process dereferences NULL pointer
  8. Step 8
    Application crashes (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

Exploitation requires concurrent low-memory conditions (malloc returning NULL) at the moment sixel_decode_raw or sixel_decode is invoked with untrusted SIXEL data. The vulnerability is local-only (AV:L from CVSS vector); remote exploitation would require a remote attacker to trigger decoding on a local system via an application that accepts SIXEL input over the network (e.g., a web terminal or SSH session). High attack complexity (AC:H) is inherent because reliably triggering memory exhaustion alongside API invocation is difficult; systems with adequate memory will not encounter this path. User interaction (UI:R) is required, meaning the user must explicitly open or process a SIXEL image or the application must automatically decode untrusted SIXEL content. No special product configuration is required-the vulnerable code path exists in default libsixel builds. The limiting factors are the local-only attack vector and the practical difficulty of engineering simultaneous memory exhaustion.

Impact

This vulnerability presents low real-world risk despite its denial-of-service classification. The CVSS 2.5 score reflects the limited practical impact: exploitation requires local access (AV:L), high attack complexity (AC:H), no privileges (PR:N), and user interaction (UI:R), meaning an attacker must already have local system access and trigger the vulnerable code path under specific memory-constrained conditions. The EPSS score is not provided, but exploitation likelihood is constrained by the requirement to engineer memory exhaustion simultaneously with libsixel API invocation-a difficult practical scenario outside controlled environments. No KEV status or public POC is indicated, suggesting no active exploitation in the wild. The vulnerability is primarily a reliability concern rather than a security threat; it is more likely to occur as a crash from legitimate low-memory conditions (resource exhaustion, swap depletion) than from deliberate attack. Systems with sufficient memory headroom or memory management policies will rarely encounter this failure path.

Exploit ScenarioDerived

A local attacker with command-line or application-level access to a system running libsixel-dependent software (e.g., a terminal emulator or image viewer) supplies a SIXEL-formatted image to be decoded while the system is under memory pressure. When the libsixel decoder attempts to allocate buffers for the image data and malloc fails due to exhausted memory, the incorrect NULL check allows the function to proceed and write through a NULL pointer, crashing the decoding process and potentially rendering the application or service unusable.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 – May 14, 2026

libsixel versions prior to 1.8.7-r2 crash on memory allocation failure in sixel_decode_raw and sixel_decode functions due to incorrect NULL pointer validation, allowing local attackers to trigger denial of service under low-memory conditions. The vulnerability affects any application using libsixel's public decoding APIs when system memory pressure causes malloc to fail.

RemediationAI

Upgrade libsixel to version 1.8.7-r2 or later, which includes the corrected NULL pointer validation in sixel_decode_raw and sixel_decode functions. For systems unable to immediately upgrade, no effective workaround exists at the library level since the vulnerability is intrinsic to the API implementation. Mitigation strategies include configuring memory limits via cgroups or ulimit to gracefully prevent malloc failures (trade-off: may cause legitimate out-of-memory errors to surface earlier), using memory monitoring tools to maintain sufficient headroom above libsixel's allocation requirements, or restricting libsixel API usage to trusted inputs within memory-constrained environments. Consult https://github.com/saitoha/libsixel/security/advisories/GHSA-wpx3-h5g8-qr3w for patch availability and release notes.

Affected VersionsENISA

libsixel 1.0.0, < 1.8.7-r2

Affected Packages

euvd libsixel_1_0_0 fix: 1.8.7-r2

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 SIXEL encoder/decoder library that processes SIXEL graphics format data. SIXEL is a text-based graphics protocol commonly used in terminal emulators. The vulnerability exists in the sixel_decode_raw and sixel_decode functions, which allocate memory buffers for decoded image output. The root cause is CWE-476 (NULL Pointer Dereference): after calling malloc to allocate output buffers, the code incorrectly validates the allocation result by checking the address of the output parameter (which is a pointer passed by the caller and is always non-NULL) instead of checking the return value of malloc itself. When malloc returns NULL due to memory exhaustion, the null check passes incorrectly, and the function proceeds to dereference and write through the NULL pointer, causing a process crash.

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

NVD PRIMARY 2.5 LOW
AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L

Primary rating from NVD · only source for this CVE.

CVSS VectorNVD

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

Lifecycle Timeline

2
Patch available
May 14, 2026 - 21:32 EUVD
CVE Published
May 14, 2026 - 19:59 nvd
LOW 2.5

DescriptionNVD

libsixel is a SIXEL encoder/decoder implementation derived from kmiya's sixel. From to 1.8.7-r1, a wrong NULL check after an allocation call in sixel_decode_raw and sixel_decode causes a NULL pointer dereference whenever the allocation fails. The check tests the address of the output parameter (always non-NULL) instead of the value the malloc returned. On allocation failure, the function continues and writes through a NULL pointer, crashing the process. This is a denial of service against any caller of these public APIs that hits a low-memory condition. This vulnerability is fixed in 1.8.7-r2.

Threat Intelligence Overview

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

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 LOW
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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

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