☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
X.Org logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-125
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-50262

CVE-2026-50262 Out-of-Bounds Access in X.org
📅 PUBLISHED: 2026-06-05 12:16 UTC 🔄 UPDATED: 2026-09-26 06:17 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ independent sources 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.13%
👁️
0.13% probability
3.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States License: Open Source
Affected: X Server — upgrade to patched release
CVSS VECTOR BREAKDOWN 5.5
AV: L Attack Vector Local
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
5.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-50262 is an out-of-bounds read vulnerability in the X.Org X server and Xwayland, specifically within the __glXDisp_ChangeDrawableAttributes() function. The flaw arises from an incorrect size validation check, allowing a client-controlled number of bytes to be read beyond the request buffer. This can lead to information disclosure of sensitive memory contents. A write path also exists but is only exploitable with byte-swapped clients, which are disabled by default. The vulnerability has a CVSS score of 5.5 (Medium) and currently has no known public exploit or patch.

⚡ 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

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Local (L) – Requires local access to the system.
  • Attack Complexity (AC): Low (L) – No special conditions needed.
  • Privileges Required (PR): Low (L) – Attacker needs low-privileged access.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – Exploit does not affect other components.
  • Confidentiality (C): High (H) – Potential for significant information disclosure.
  • Integrity (I): None (N) – No data modification.
  • Availability (A): None (N) – No denial of service.

Threat Level: Medium. The vulnerability is locally exploitable with low privileges, but the impact is limited to information disclosure. The write path is disabled by default, reducing the risk of data corruption.

Deep Dive & Mechanics

The vulnerability resides in the __glXDisp_ChangeDrawableAttributes() function within the X.Org X server and Xwayland. This function handles GLX (OpenGL Extension to the X Window System) requests to change drawable attributes. The flaw is an out-of-bounds read caused by an incorrect size validation check.

When processing a ChangeDrawableAttributes request, the server reads a client-controlled length field. The validation logic fails to properly ensure that the requested number of bytes does not exceed the actual request buffer size. As a result, the server reads beyond the buffer boundary, potentially exposing sensitive data from adjacent memory regions.

The write path is also present but requires a byte-swapped client (i.e., a client with a different endianness than the server). Since byte-swapped clients are disabled by default in modern X servers, this write path is not exploitable in standard configurations.

Attack Scenario:

  1. An attacker with low-privileged local access sends a crafted GLX ChangeDrawableAttributes request.
  2. The request contains a manipulated length field that exceeds the buffer size.
  3. The server reads out-of-bounds memory, leaking sensitive information (e.g., cryptographic keys, passwords, or other process data).
  4. The attacker captures the leaked data for further exploitation.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

void __glXDisp_ChangeDrawableAttributes(GLXContext *ctx, ClientPtr client) {
    // ... request parsing ...
    int length = client->req->length; // client-controlled
    char *buffer = (char *)client->requestBuffer;
    // Incorrect validation: only checks if length > 0, not if it exceeds buffer
    if (length > 0) {
        // Out-of-bounds read
        memcpy(some_local_buffer, buffer, length);
    }
}

Patched Code (Conceptual):

void __glXDisp_ChangeDrawableAttributes(GLXContext *ctx, ClientPtr client) {
    // ... request parsing ...
    int length = client->req->length;
    char *buffer = (char *)client->requestBuffer;
    int buffer_size = client->req->length; // actual buffer size
    // Correct validation: ensure length does not exceed buffer size
    if (length > 0 && length <= buffer_size) {
        memcpy(some_local_buffer, buffer, length);
    } else {
        // Return error to client
        SendErrorToClient(client, BadLength);
    }
}

The patch adds a proper bounds check to ensure the requested length does not exceed the actual buffer size. Without this, the vulnerable code reads arbitrary memory.

Exploitation & Lab Setup

Red Team

Exploitation Steps:

  1. Setup: Obtain a local account on a vulnerable X.Org X server or Xwayland instance.
  2. Craft Payload: Create a malicious GLX ChangeDrawableAttributes request with an oversized length field.
  3. Send Request: Use a custom client (e.g., using libX11 and libGL) to send the crafted request.
  4. Capture Leaked Data: Monitor the server's response or use a side channel (e.g., timing or error messages) to extract leaked memory contents.

Example Payload (Python with ctypes):

import ctypes
import struct
from Xlib import display, X

# Connect to X server
d = display.Display()
screen = d.screen()
root = screen.root

# Create a GLX context (simplified)
# ... (requires GLX extension setup)

# Craft malicious request
# GLX ChangeDrawableAttributes opcode: 0x1234 (example)
opcode = 0x1234
length = 0xFFFF  # oversized length
payload = struct.pack('BBH', opcode, 0, length) + b'A' * 100

# Send request via X11 protocol
# ... (low-level X11 socket manipulation)

Note: Actual exploitation requires deep knowledge of X11 protocol and GLX internals. No public exploit exists at this time.

Blue Team

Detection & Mitigation:

  1. Monitor X Server Logs: Look for unusual GLX errors or crashes.
  2. Restrict Local Access: Limit local user accounts to trusted users only.
  3. Disable GLX if Unused: Remove or disable the GLX extension in X server configuration.
  4. Apply Patches: Monitor for official patches from X.Org and apply promptly.

Indicators of Compromise (IOCs)

  • Network: Unusual GLX requests with abnormally large length fields.
  • Host: X server crashes or segmentation faults in __glXDisp_ChangeDrawableAttributes.
  • Memory: Unexpected memory leaks from X server process (visible via /proc/<pid>/maps or similar).
  • Logs: Xorg.0.log entries containing "GLX: BadLength" or similar errors.

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

  1. Patch: Apply official patches from X.Org when available. Monitor X.Org security advisories.
  2. Workaround: Disable GLX extension in X server configuration (/etc/X11/xorg.conf):
    Section "Extensions"
        Option "GLX" "Disable"
    EndSection
    
  3. Restrict Access: Use xhost or xauth to limit client connections to trusted users.
  4. Monitor: Deploy detection rules (YARA, Sigma, Suricata) to identify exploitation attempts.
  5. Update: Keep X.Org and Xwayland packages up-to-date.

Valters IT
DevSecOps & Cyber Threat Intelligence

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-50262/ · 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.