← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-50262 · CWE-125 · Disclosed 2026-06-05

An out-of-bounds read flaw was found in the X

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

Like finding a loose floorboard inside a locked room rather than an open front door

CVE-2026-50262 is a bounds-check failure in __glXDisp_ChangeDrawableAttributes() in the X.Org X server and Xwayland. Upstream, affected releases are xorg-server before 21.1.23 and Xwayland before 24.1.12; the bug lets a connected X client over-read the request buffer and disclose process memory, while a related write path exists only for byte-swapped clients, which X.Org says are disabled by default.

Red Hat's MEDIUM 5.5 is technically fair in a vacuum, but too generous for enterprise prioritization. This is not unauthenticated remote reachability; it generally requires a client that can already connect to the user's X server, which usually means local/session-level foothold plus X11 auth material. That is classic post-initial-access friction, and the more dangerous write/priv-esc angle gets further kneecapped by modern rootless Xorg/Xwayland and the default-disabled byte-swapped path.

"This is a narrow post-access X11 client bug, not a fleet-wide fire drill."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land an X11-capable foothold

The attacker first needs code execution in a context that can talk to the target X server or Xwayland instance. In practice that means a local process in the user session, a container with the X11 socket mounted, or an SSH/X11-forwarded path carrying valid auth. Weaponized tool class: standard Xlib/GLX client or a custom request generator modeled from the X11/GLX protocol.
Conditions required:
  • Attacker already has local code execution, container access, or a forwarded X11 session
  • Target host actually runs X.Org X server or Xwayland
  • Attacker can reach the UNIX socket or TCP listener and present valid X11 auth
Where this breaks in practice:
  • Most enterprise Linux servers do not run interactive X11 at all
  • X11 commonly relies on MIT-MAGIC-COOKIE-1 via ~/.Xauthority, so cross-user access is not automatic
  • Wayland deployments often isolate clients better than legacy shared X11 setups
Detection/coverage: VM/network scanners are weak here because this is usually a local UNIX-socket problem, not an internet-facing service bug. Hunt for unexpected access to /tmp/.X11-unix, suspicious xauth reads, and unusual X11 client processes under user sessions.
STEP 02

Send malformed GLX ChangeDrawableAttributes request

A malicious client crafts a GLX ChangeDrawableAttributes request with a size mismatch that passes the wrong validation check. The vulnerable handler then consumes a client-controlled byte count beyond the intended request buffer. Weaponized tool class: custom PoC or protocol fuzzer rather than a commodity exploit kit; the issue was disclosed by ZDI-linked researchers, but there is no public mass-exploitation trail yet.
Conditions required:
  • GLX path is available in the target X server/Xwayland build
  • Attacker can issue raw or near-raw GLX requests
Where this breaks in practice:
  • No mainstream public exploit tooling is currently visible
  • X11/GLX protocol abuse is niche compared with browser, VPN, or edge-device exploitation
Detection/coverage: General-purpose vuln scanners are unlikely to validate this safely. Xorg/Xwayland debug logging, crash telemetry, and EDR process ancestry around custom X11 clients are more realistic signals.
STEP 03

Leak memory from the X server process

The reliable impact is information disclosure from an out-of-bounds read in the server process. The attacker may recover adjacent server memory useful for follow-on attacks, but this is not equivalent to arbitrary file read or broad host compromise. Weaponized tool class: memory-leak harvester layered on top of the malformed GLX client.
Conditions required:
  • The malformed request reaches the vulnerable handler successfully
  • Returned or side-channel-observable data is useful enough to the attacker
Where this breaks in practice:
  • Leaked bytes are constrained to server-process memory adjacent to the request path, not whole-system arbitrary reads
  • Practical value depends on what sensitive material happens to be resident in memory
Detection/coverage: Look for anomalous GLX-heavy clients and repeated short-lived connections probing the same display. Crash-free leaks are harder to catch than write-path faults.
STEP 04

Attempt crash or privilege escalation via write path

A more severe path exists because the same bug can also write out of bounds, but X.Org states that path requires byte-swapped clients, which are disabled by default. Even if enabled, host-level privilege escalation depends on the X server running with elevated privileges, which is less common on modern desktops and generally not true for Xwayland. Weaponized tool class: architecture-aware custom client; no evidence of broad operational use.
Conditions required:
  • Byte-swapped client handling is enabled or otherwise reachable
  • Target runs privileged/root X server for the escalation scenario
Where this breaks in practice:
  • Byte-swapped path is disabled by default upstream
  • Modern Xwayland should not be running as root
  • Rootless Xorg is common enough to blunt the worst-case outcome
Detection/coverage: Crashes in Xorg.0.log, journald, or coredumps are your best symptom if someone chases the write path. Preventive network controls will not reliably see UNIX-socket exploitation.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo known active exploitation found in the sources reviewed; not present in CISA KEV as of 2026-06-07.
Proof-of-concept availabilityNo broad public weaponized PoC located. Disclosure credits Anonymous working with TrendAI Zero Day Initiative under ZDI-CAN-30165.
EPSS0.00012 from the user-supplied intel, which is effectively background noise for prioritization.
KEV statusNot KEV-listed; CISA's KEV catalog does not list this CVE.
CVSS interpretationAV:L/PR:L is the whole story: this starts after the attacker already has local or session-adjacent access. C:H/I:N/A:N also reflects that the dependable impact is read-only disclosure, not turnkey code exec.
Affected versionsUpstream advisory says X.Org X server < 21.1.23 and Xwayland < 24.1.12.
Fixed versionsUpstream fixes landed in xorg-server 21.1.23 and xwayland 24.1.12. Debian tracker coverage for the sibling June 2026 X.Org set shows fixes entering sid at 2:21.1.23-1 and 2:24.1.12-1, with some stable branches still marked vulnerable or treated as minor for Xwayland because it should not run as root.
Scanning / exposure realityThis is a poor Shodan/Censys/GreyNoise vulnerability signal because exploitation usually rides an existing X11 trust path or local UNIX socket, not internet-wide scanning. Separate X11 exposure still matters: Red Hat documents cases where X11 unexpectedly listened on TCP 6000, but that is configuration drift, not this CVE's normal path.
Disclosure timelineThe X.Org security advisory was posted on 2026-06-02; the CVE record was published on 2026-06-05.
Reporter / researcherAnonymous working with TrendAI Zero Day Initiative; tracked as ZDI-CAN-30165 in the advisory thread.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.4/10)

The decisive factor is attacker position: this bug generally requires a client that can already connect to the victim's X server, which means the attacker is already inside the session trust boundary. The scary write/priv-esc narrative is further constrained because the write path needs byte-swapped clients and modern Xwayland/rootless Xorg sharply reduce the blast radius.

HIGH Downgrade driven by local/authenticated/post-access prerequisites
MEDIUM Fleet exposure estimate depends on how many of your Linux endpoints actually run X.Org or Xwayland

Why this verdict

  • Down from vendor 5.5 because attacker position is already post-compromise: AV:L/PR:L plus X11 auth requirements mean the adversary usually already has code execution or session-level access.
  • Further down because real impact is mostly disclosure: the dependable path is an out-of-bounds read, not straightforward code execution.
  • Further down because the nastier path is gated: the write condition needs byte-swapped clients, which upstream says are disabled by default.
  • Further down because exposure population is smaller than generic Linux fleet counts imply: many enterprise Linux systems are headless, and many desktops run Xwayland/rootless Xorg, not privileged classic Xorg.
  • No upward pressure from threat intel: no KEV, no known active exploitation, and an extremely low EPSS signal.

Why not higher?

This is not an edge-facing service flaw and not a broad unauthenticated remote attack surface. To get meaningful impact, the attacker usually needs a prior foothold, X11 trust material, and in the write-case an extra non-default prerequisite; that stack of friction is exactly why this does not belong in HIGH or CRITICAL.

Why not lower?

It still deserves tracking because X11 is a long-lived privileged-ish session component, and memory disclosure inside that process can help a follow-on attacker. Also, some real environments still run legacy Xorg configurations or expose X11 sloppily, so calling it IGNORE would be too dismissive.

05 · Compensating Control

What to do — in priority order.

  1. Keep X11 off the network — Ensure DisallowTCP-style controls and display-manager settings actually prevent X11 from listening on TCP 6000+. This shrinks accidental exposure immediately; for a LOW verdict there is no mitigation SLA, so treat it as backlog hygiene and validate during the next desktop/platform hardening cycle.
  2. Lock down X11 auth material — Audit for xhost +, over-broad .Xauthority sharing, and container bind mounts that expose /tmp/.X11-unix plus auth cookies. This directly attacks the main exploitation prerequisite; for LOW, there is no mitigation SLA, so fold it into your next Linux endpoint baseline review.
  3. Prefer rootless Xorg and Wayland — Make sure Xwayland is not running as root and retire legacy privileged Xorg where possible. That does not remove the read bug, but it materially blunts the worst-case write/priv-esc story; again, for LOW this is backlog hygiene, not emergency work.
  4. Watch for suspicious X11 client activity — Add detections for odd processes touching /tmp/.X11-unix, reading .Xauthority, or launching bespoke GLX/X11 clients from untrusted containers or developer shells. This helps catch the post-access prerequisite that matters more than the CVE number itself; tune during normal detection engineering work.
What doesn't work
  • A WAF does nothing here because this is not an HTTP attack surface.
  • Relying on internet vuln scanning alone misses the common case because exploitation is usually local UNIX-socket or trust-path based.
  • Simply noting that byte-swapped clients are disabled is not enough; that only crushes the write path, not the read-based information disclosure path.
06 · Verification

Crowdsourced verification payload.

Run this on the target Linux host as a local shell check; no root is required, though package-manager metadata is easier to read with normal local access. Invoke it as bash check-cve-2026-50262.sh. It checks installed Xorg/Xwayland versions and returns PATCHED, VULNERABLE, or UNKNOWN; UNKNOWN is expected on distros that backport fixes without bumping the upstream version string.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-50262.sh
# Determine likely exposure to CVE-2026-50262 on Linux hosts.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -u

FIXED_XORG="21.1.23"
FIXED_XWAYLAND="24.1.12"
status="PATCHED"
notes=()

ver_lt() {
  [ "$1" = "$2" ] && return 1
  [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" = "$1" ]
}

extract_ver() {
  local bin="$1"
  "$bin" -version 2>&1 | sed -n 's/.*X\.Org X Server \([0-9][0-9.]*\).*/\1/p; s/.*Xwayland \([0-9][0-9.]*\).*/\1/p' | head -n1
}

pkg_hint() {
  local pkg="$1"
  if command -v dpkg-query >/dev/null 2>&1; then
    dpkg-query -W -f='${Version}\n' "$pkg" 2>/dev/null && return 0
  fi
  if command -v rpm >/dev/null 2>&1; then
    rpm -q --qf '%{VERSION}-%{RELEASE}\n' "$pkg" 2>/dev/null && return 0
  fi
  if command -v pacman >/dev/null 2>&1; then
    pacman -Q "$pkg" 2>/dev/null | awk '{print $2}' && return 0
  fi
  return 1
}

check_component() {
  local name="$1"
  local bin="$2"
  local fixed="$3"
  local pkg1="$4"
  local pkg2="$5"
  local ver=""
  local pver=""

  if command -v "$bin" >/dev/null 2>&1; then
    ver="$(extract_ver "$bin")"
  fi

  if [ -z "$ver" ]; then
    if [ -n "$pkg1" ]; then pver="$(pkg_hint "$pkg1" 2>/dev/null || true)"; fi
    if [ -z "$pver" ] && [ -n "$pkg2" ]; then pver="$(pkg_hint "$pkg2" 2>/dev/null || true)"; fi
  fi

  if [ -z "$ver" ] && [ -z "$pver" ]; then
    notes+=("$name not found")
    return 0
  fi

  if [ -n "$ver" ]; then
    notes+=("$name binary version: $ver")
    if ver_lt "$ver" "$fixed"; then
      # Distros may backport fixes without changing upstream version strings.
      if [ -n "$pver" ] && echo "$pver" | grep -Eiq '(ubuntu|deb|el[0-9]|fc[0-9]|suse|amzn)'; then
        status="UNKNOWN"
        notes+=("$name appears older than upstream fixed version but distro backport may apply: $pver")
      else
        status="VULNERABLE"
        notes+=("$name is older than upstream fixed version $fixed")
      fi
    else
      notes+=("$name meets or exceeds upstream fixed version $fixed")
    fi
  else
    status="UNKNOWN"
    notes+=("$name package present but binary version could not be parsed: $pver")
  fi
}

check_component "Xorg" "Xorg" "$FIXED_XORG" "xorg-server" "xorg-x11-server-Xorg"
check_component "Xwayland" "Xwayland" "$FIXED_XWAYLAND" "xwayland" "xorg-x11-server-Xwayland"

if [ "$status" = "PATCHED" ]; then
  echo "PATCHED"
  printf '%s\n' "${notes[@]}"
  exit 0
elif [ "$status" = "VULNERABLE" ]; then
  echo "VULNERABLE"
  printf '%s\n' "${notes[@]}"
  exit 1
else
  echo "UNKNOWN"
  printf '%s\n' "${notes[@]}"
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, do not burn your fleet patch window on this unless you have a Linux desktop estate with sloppy X11 exposure or shared container-to-desktop workflows. Inventory where Xorg/Xwayland actually exists, verify X11 is not unexpectedly listening on TCP 6000+, and queue package updates in your normal endpoint maintenance stream; for a LOW verdict there is no noisgate mitigation SLA and no noisgate remediation SLA beyond treating it as backlog hygiene, so fold the fix into your next planned Linux desktop/image refresh rather than interrupting server-side priorities.

Sources

  1. Openwall oss-security advisory, June 2 2026
  2. Seclists follow-up mapping CVEs to June 2026 X.Org issues
  3. X.Org security advisories index
  4. X.Org authentication and access control documentation
  5. Red Hat CVE page for CVE-2026-50262
  6. CISA Known Exploited Vulnerabilities Catalog
  7. FIRST EPSS overview
  8. Red Hat note on unintended X11 TCP port 6000 exposure
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.