X.Org X Server CVE-2026-93520
CRITICALAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect as authenticated X client
-
DeliverySend XKB ChangeKeycodeRange request
-
ExploitTrigger undersized names->keys allocation
-
ExecutionHeap out-of-bounds write corrupts memory
-
ImpactArbitrary code execution or server crash
Vulnerability Assessment
| Exploitation Conditions | Requires an already-connected, authorized X client (local session or an X connection the attacker controls) able to issue XKB protocol requests; it is triggered specifically by an XkbChangeKeycodeRange request that sets the keycode range such that MAP_LENGTH exceeds max_key_code+1, causing XkbAllocNames to under-allocate names->keys while the ChangeKeycodeRange memset writes MAP_LENGTH bytes. The principal limiting factor is that the attacker must already have access to the X display rather than mere network reachability, so exploitation presupposes a local login, a compromised GUI application, or a forwarded X session; no special non-default extension or configuration is required beyond standard XKB support. (The advisory description for this CVE is truncated in the input at 'denial of s', but the mechanism is fully stated.) |
| Impact | No CVSS vector, EPSS score, KEV listing, or public POC is present in the supplied data, so quantitative exploitation signals are entirely absent and cannot be compared - this assessment rests solely on the X.Org advisory text. The vulnerability is a heap out-of-bounds write in XkbAllocNames reached via the ChangeKeycodeRange path, stemming from an incomplete prior fix (commit a3171732d); the advisory itself rates the outcome as potential arbitrary code execution or denial of service. The decisive limiting factor is that the advisory states exploitation requires an 'authenticated X client' - i.e. an entity already able to connect to and speak the X protocol with the display - which makes this fundamentally a local/privilege-context issue rather than a remote-unauthenticated one; note that per analysis rules the auth qualifier cannot be formally confirmed because no CVSS vector was provided. Realistically this is a meaningful local privilege-escalation / sandbox-escape primitive (memory corruption in a long-lived, often elevated process) but not a drive-by remote threat, so it should be patched on multi-user or sandboxed hosts yet does not carry the emergency profile of a network-reachable unauthenticated RCE. Because it is one of seven memory-corruption bugs in a single coordinated X.Org advisory, prioritize the advisory as a bundle rather than this CVE in isolation. |
| Exploit ScenarioDerived | A local user or a confined application that holds a connection to the X server sends crafted XKB requests that change the keycode range to a value where MAP_LENGTH exceeds max_key_code+1, triggering a heap out-of-bounds write during the undersized names->keys allocation. By grooming the heap the attacker can corrupt adjacent allocations to crash the server (DoS) or potentially achieve arbitrary code execution in the X server's context. No public exploit identified at time of analysis, though the bug was reported through Trend/ZDI (ZDI-CAN series). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Heap out-of-bounds write in the X.Org X server (versions prior to xorg-server-21.1.25) and Xwayland (versions prior to xwayland-24.1.14) allows an authenticated X client to corrupt heap memory by issuing an XkbChangeKeycodeRange request that sets a keycode range where MAP_LENGTH exceeds max_key_code+1, leaving XkbAllocNames under-allocated while the subsequent memset writes MAP_LENGTH bytes. The flaw is an incomplete fix of an earlier XKB keycode-range change (commit a3171732d) and is scored locally as CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, meaning the attacker must already hold an authorized X connection - a local session, a compromised GUI application on the same display, or a forwarded X session - rather than merely reaching the host over the network. No CVSS vector, EPSS score, KEV listing, or public exploit code is present in the supplied data, so this analysis rests solely on the X.Org advisory text and no public exploit has been identified at time of analysis; the same October 7, 2026 advisory bundles six further memory-safety issues (CVE-2026-88812, -93515, -93516, -93517, -93518, -93519) fixed in the same releases.
RemediationAI
Vendor-released patch: upgrade to xorg-server-21.1.25 or xwayland-24.1.14 - the X.Org advisory states that all seven issues, including CVE-2026-93520, are fixed in exactly those versions, so distribution packages that carry the upstream patch or backport are the primary remediation; note that the advisory text as supplied is truncated for this CVE, so confirm the applicable backport in your distribution's advisory rather than assuming a single standalone commit link. Because exploitation presupposes an attacker who already holds an authorized X connection (the assessed vector is AV:L/PR:L), the highest-value compensating measures are those that shrink that access: run mutually untrusted clients under separate X displays with per-client xauth cookies rather than sharing one session, avoid exposing X sockets to remote hosts (disable TCP listening on port 6000, prefer SSH X11 forwarding with untrusted/trusted-X11 restrictions, and avoid granting the attacker a session that can issue XKB requests), and where possible migrate compositors to native Wayland backends so that Xwayland is not running and this code path is absent - the trade-off being loss of X11 application compatibility. Restricting client access via X security extensions or Mandatory Access Control (SELinux/AppArmor X server profiles) reduces the reachable attack surface but can break legitimate input-remapping and accessibility tools that legitimately call XKB, and disabling the XKB extension outright is not realistic because it underpins normal keyboard handling. Because the underlying defect is a heap out-of-bounds write, enabling compiler-level hardening (glibc heap checking, hardened allocators) may convert a silent corruption into a crash, which limits impact but provides no reliable prevention - apply the 21.1.25 / 24.1.14 update. Reference: https://seclists.org/oss-sec/2026/q4/82.
Affected ProductsAI
Affected are the X.Org X server releases prior to xorg-server-21.1.25 and Xwayland releases prior to xwayland-24.1.14, with CVE-2026-93520 being the XKB ChangeKeycodeRange heap out-of-bounds write in that set; no CPE strings were supplied with the input, so exact platform-level CPEs cannot be enumerated here, though any distribution shipping xorg-server 21.1.x below 21.1.25 or Xwayland below 24.1.14 (as part of a Wayland compositor's X11 compatibility layer) is in scope. The same advisory covers six additional X server/Xwayland memory-safety flaws - CVE-2026-88812 (XKB SetGeometry TextDoodad double free), CVE-2026-93515 (Present cross-window notify use-after-free), CVE-2026-93516 (XInput passive grab modifierDevice use-after-free), CVE-2026-93517 (GLX RenderLarge heap buffer overflow), CVE-2026-93518 (XKB ResizeKeyType numeric truncation) and CVE-2026-93519 (XFixes pointer barrier event list buffer overflow) - all fixed in the same two releases, and all reported by an anonymous researcher working with TrendAI Zero Day Initiative. The primary advisory reference is the oss-security posting at https://seclists.org/oss-sec/2026/q4/82, with related X server fix material at https://gitlab.freedesktop.org/xorg/xserver/-/commit/1b6955c3108e, https://gitlab.freedesktop.org/xorg/xserver/-/commit/ad26c26bf795 and https://gitlab.freedesktop.org/xorg/xserver/-/commit/89101a6c6618.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The X Keyboard Extension (XKB) is a core X11 protocol extension that lets clients query and reconfigure the server's keyboard mapping, including key types, symbols, and the valid keycode range. XkbChangeKeycodeRange changes the low/high bounds of allocated keycodes and, in the ChangeKeycodeRange code path, memsets the names->keys array over MAP_LENGTH entries. The allocation in XkbAllocNames(), however, still sizes names->keys using max_key_code+1 - the leftover behavior from the earlier fix in commit a3171732d - so whenever MAP_LENGTH is larger than max_key_code+1 the memset writes past the end of the heap buffer. The input data does not include a CWE identifier (CWE is recorded as N/A), but the root-cause class is plainly a heap-based out-of-bounds write (CWE-787) enabled by an incomplete prior fix, and like the sibling CVEs in this advisory the vulnerable surface is the X server's own request-parsing/marshalling logic in xkb/xkb.c. Because the bug is reachable through ordinary XKB protocol requests over an established X connection, no non-default extension or special configuration is needed - standard XKB support suffices. The advisory entry for this CVE is truncated in the supplied input after 'denial of s', yet the mechanism (undersized XkbAllocNames allocation versus MAP_LENGTH-wide memset in the ChangeKeycodeRange path) is fully stated, and the code-level references supplied alongside this advisory show closely related X server hardening, including the present_notify.c fix that unlinks notify entries from the per-window list before freeing window_priv (present_clear_window_notifies / present_free_window_notify).
Know when Gitlab 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
Exploitation needs an authorized X client speaking the local X protocol (AV:L, PR:L), is reliably triggerable (AC:L), and memory corruption in the X server yields full confidentiality, integrity and availability impact.
Description PRE-NVD
Articles & Coverage 1
Zero Day Initiative Advisories
Executive ViewAI
A critical heap memory-corruption flaw affects the X.Org X server (all versions prior to 21.1.25) and Xwayland (all versions prior to 24.1.14), the software that renders graphical sessions on Linux and Unix workstations, VDI desktops, and X11-forwarded connections. Any user or application that already holds an authorized X connection - a local session, a compromised GUI application on the same display, or a forwarded X session - can corrupt the display server's memory, crashing sessions and potentially enabling code execution within the server process itself. Because no vendor-released patch was identified at the time of analysis, every unpatched engineering, trading, and remote-access desktop in the estate carries elevated risk, and leadership should expect repeated session outages plus a credible path from a single compromised application to control of the user's graphical environment.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce strict X authorization (xauth, no unauthenticated xhost entries), restrict/disallow X11 forwarding and network X listeners to trusted hosts only, confine GUI applications with SELinux/AppArmor, run untrusted or third-party GUI software in an isolated nested X server or Wayland session instead of the primary display, remove or disable the XKB extension where operationally feasible, and monitor X.Org and distribution advisories for backported fixes (target versions xorg-server-21.1.25 / xwayland-24.1.14).
Threat Intelligence Overview
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.
What every action level means
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
An issue has been discovered in GitLab CE/EE affecting all versions starting from 11.9. Rated critical severity (CVSS 10
An issue has been discovered in GitLab CE/EE affecting all versions from 16.1 prior to 16.1.6, 16.2 prior to 16.2.9, 16.
When requests to the internal network for webhooks are enabled, a server-side request forgery vulnerability in GitLab af
Unauthenticated arbitrary file read in GitLab CE/EE lets remote attackers retrieve files from the GitLab server via the
The SSH key upload feature (lib/gitlab_keys.rb) in gitlab-shell before 1.7.3, as used in GitLab 5.0 before 5.4.1 and 6.x
A vulnerability in GitLab CE/EE affecting all versions from 11.10 prior to 15.1.6, 15.2 to 15.2.4, 15.3 to 15.3.2 allows
Remote code execution in GitLab CE/EE (all versions from 19.2 before 19.2.8, 19.3 before 19.3.5, and 19.4 before 19.4.2)
Sensitive credential and configuration disclosure in GitLab Enterprise Edition allows an authenticated user with Duo Cha
The Kubernetes integration in GitLab Enterprise Edition 11.x before 11.2.8, 11.3.x before 11.3.9, and 11.4.x before 11.4
Authenticated code execution on the GitLab server is possible in GitLab CE/EE 19.2 through 19.4.0, where an integer over
Authenticated users who can define or modify a CI/CD configuration can achieve remote code execution on GitLab CE/EE ser
Unauthenticated path traversal in the @zereight/mcp-gitlab Model Context Protocol server prior to version 2.1.27 allows
CVE.org
GitHub PoC
Exploit-DB