☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
X.Org logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 9 🐛 CWE-416
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-56000

CVE-2026-56000 Use After Free in X.Org
📅 PUBLISHED: 2026-07-08 07:36 UTC 🔄 UPDATED: 2026-10-09 05:42 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ distinct origins confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.31%
👁️
0.31% probability
7.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: United States License: Open Source
Affected: versions below 21.1.24 — upgrade to patched release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
9.0
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-56000 is a critical heap use-after-free vulnerability in the X.Org X server and XWayland components. The flaw resides in the CommonMakeCurrent() function within the GLX extension, where a pointer into a dynamically allocated buffer can become dangling after a reallocation operation. A local attacker with an authenticated X connection can trigger this condition by providing a crafted GLX commit, leading to arbitrary code execution or denial of service. The vulnerability affects xorg-server versions before 21.2.24 and xwayland versions before 24.1.13. No public proof-of-concept or exploit code is currently available, but the technical details are sufficient for advanced threat actors to develop weaponized exploits.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not in a package manager ecosystem (NPM, PyPI, Go, Ruby). It affects the X.Org display server, which is a core component of most Linux distributions. The supply chain risk is moderate, as the vulnerable component is widely distributed through operating system package repositories. Organizations should verify their package versions and apply vendor patches promptly.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.8 (High)
  • Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • Attack Vector: Local (AV:L) – requires local access to the system.
  • Attack Complexity: Low (AC:L) – no special conditions beyond a valid X connection.
  • Privileges Required: Low (PR:L) – attacker needs a user account with X session access.
  • User Interaction: None (UI:N) – no user action required beyond the attacker’s own.
  • Scope: Unchanged (S:U) – vulnerability does not cross security boundaries.
  • Confidentiality Impact: High (C:H) – potential memory disclosure.
  • Integrity Impact: High (I:H) – arbitrary code execution possible.
  • Availability Impact: High (A:H) – crash or denial of service.

Threat Level: High. The vulnerability is locally exploitable with low privileges and can lead to full system compromise. The lack of public exploits reduces immediate risk, but the technical details are clear enough for targeted attacks.

Deep Dive & Mechanics

The vulnerability is a classic heap use-after-free (UAF) in the GLX extension of the X server. The CommonMakeCurrent() function is responsible for setting the current GLX context for a given drawable. During this process, it accesses a pointer that references memory allocated on the heap. If the attacker sends a GLX commit request that triggers a reallocation of the underlying buffer (e.g., by changing the drawable size or context attributes), the original pointer becomes stale. Subsequent use of this dangling pointer in CommonMakeCurrent() results in a use-after-free condition.

The root cause is the lack of proper synchronization or pointer invalidation when the memory backing the GLX context is reallocated. The X server does not update the pointer held by CommonMakeCurrent() after a reallocation event, allowing the attacker to control the freed memory and potentially execute arbitrary code.

Attack Flow:

  1. Attacker establishes an authenticated X connection (e.g., via SSH with X11 forwarding or local session).
  2. Attacker creates a GLX context and drawable.
  3. Attacker sends a GLX commit request that triggers a reallocation of the context’s backing memory.
  4. The CommonMakeCurrent() function is called, using the stale pointer.
  5. The attacker can manipulate the freed heap memory (e.g., via heap spraying) to achieve code execution.

Vulnerable vs. Patched Code

The vulnerable code path is in glx/glxcmds.c (or similar) in the CommonMakeCurrent() function. The patched version ensures that after any reallocation, the pointer used by CommonMakeCurrent() is updated or the function is re-invoked with the correct pointer.

Vulnerable Code (simplified):

static void CommonMakeCurrent(GLXContext *ctx) {
    // ctx->drawable->buffer is a heap pointer
    void *buffer = ctx->drawable->buffer;
    // ... use buffer ...
    // If reallocation happens here, buffer becomes stale
    process_buffer(buffer);
}

Patched Code (simplified):

static void CommonMakeCurrent(GLXContext *ctx) {
    // Re-fetch the pointer after potential reallocation
    void *buffer = ctx->drawable->buffer;
    // Ensure buffer is valid
    if (!buffer) return;
    // ... use buffer ...
    process_buffer(buffer);
}

The patch adds a re-fetch of the buffer pointer and a null check to prevent use of stale memory. The exact patch details are not publicly available, but the fix is included in versions 21.2.24 and 24.1.13.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Local user account with X session access.
  • Target system running vulnerable xorg-server (< 21.2.24) or xwayland (< 24.1.13).
  • GLX extension enabled (default on most systems).

Exploitation Steps:

  1. Establish X Connection: Use ssh -X or a local terminal.
  2. Create GLX Context: Use the GLX API to create a context and drawable.
  3. Trigger Reallocation: Send a GLX commit that changes the drawable size or context attributes, causing heap reallocation.
  4. Heap Spray: Allocate controlled data in the freed memory region to overwrite function pointers or return addresses.
  5. Trigger UAF: Call CommonMakeCurrent() again to use the dangling pointer, executing the attacker’s payload.

Example Code (Conceptual):

#include <GL/glx.h>
#include <X11/Xlib.h>

int main() {
    Display *dpy = XOpenDisplay(NULL);
    if (!dpy) return 1;
    int screen = DefaultScreen(dpy);
    Window win = XCreateSimpleWindow(dpy, RootWindow(dpy, screen), 0, 0, 100, 100, 0, 0, 0);
    GLXContext ctx = glXCreateContext(dpy, NULL, NULL, True);
    glXMakeCurrent(dpy, win, ctx);
    // Trigger reallocation
    XResizeWindow(dpy, win, 200, 200);
    // Heap spray and trigger UAF
    // ... exploit code ...
    return 0;
}

Note: No public exploit code is available. The above is a conceptual outline.

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual GLX API calls, especially glXMakeCurrent with rapidly changing drawable sizes.
  • Use eBPF or auditd to track heap operations in the X server process.
  • Enable address sanitizer (ASAN) on development systems to catch UAF early.

Mitigation:

  • Apply vendor patches immediately.
  • Restrict local user access to the X server (e.g., disable X11 forwarding for untrusted users).
  • Use SELinux or AppArmor to confine the X server process.

Indicators of Compromise (IOCs)

  • Process: Xorg or Xwayland process crash with SIGSEGV or SIGABRT.
  • Logs: Xorg.0.log entries containing "GLX: failed to make context current" or similar errors.
  • Memory: Heap corruption patterns in the X server’s memory space.
  • Network: Unusual X11 traffic on port 6000 (if remote).
  • File: Core dumps from Xorg or Xwayland.

Detection Engineering

YARA Rule

🔒 DETECTION RULE — API ACCESS REQUIRED

The full machine-readable detection artifact (Sigma, YARA, Suricata, Elastic, Splunk or Wazuh rule body) is available through the ValtersIT API — moved there in response to large-scale automated scraping, to keep this independently-researched intelligence sustainable. The written analysis on every record remains fully open.

[ GET API ACCESS ] →

Sigma Rule

🔒 DETECTION RULE — API ACCESS REQUIRED

The full machine-readable detection artifact (Sigma, YARA, Suricata, Elastic, Splunk or Wazuh rule body) is available through the ValtersIT API — moved there in response to large-scale automated scraping, to keep this independently-researched intelligence sustainable. The written analysis on every record remains fully open.

[ GET API ACCESS ] →

Suricata Rule

🔒 DETECTION RULE — API ACCESS REQUIRED

The full machine-readable detection artifact (Sigma, YARA, Suricata, Elastic, Splunk or Wazuh rule body) is available through the ValtersIT API — moved there in response to large-scale automated scraping, to keep this independently-researched intelligence sustainable. The written analysis on every record remains fully open.

[ GET API ACCESS ] →

Remediation & Mitigation

Immediate Actions:

  1. Upgrade xorg-server to version 21.2.24 or later.
  2. Upgrade xwayland to version 24.1.13 or later.
  3. If patching is not possible, disable GLX extension by adding -extension GLX to the X server command line (may break graphical applications).

Long-Term Measures:

  • Implement memory safety checks in the X server (e.g., use of smart pointers or reference counting).
  • Regularly audit and fuzz the GLX extension code.
  • Restrict local user privileges and use sandboxing for X11 applications.

Workarounds:

  • Use Wayland instead of X11 where possible.
  • Disable X11 forwarding in SSH (X11Forwarding no in sshd_config).

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-56000/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.