X.Org X Server CVE-2026-88812
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain authenticated X client access
-
DeliverySend crafted XkbSetGeometry with malformed TextDoodad
-
ExploitForce _CheckSetDoodad() error path (first free)
-
ExecutionTrigger _XkbClearDoodad() cleanup (second free)
-
ImpactCorrupt heap for crash or code execution
Vulnerability Assessment
| Exploitation Conditions | Requires an authenticated X client - i.e. an attacker-controlled process already able to open a connection to the target X.Org X server or Xwayland instance (typically local to the display session). The specific trigger is an XkbSetGeometry request carrying a malformed TextDoodad entry crafted to force the _CheckSetDoodad() error path; the XKB extension handling this request is standard and enabled by default. Limiting factors: exploitation is not remote or unauthenticated - it presupposes existing access to the X display, so it is primarily a local privilege/sandbox-escape or same-session corruption vector; reliable code execution (versus a crash) additionally depends on defeating heap allocator hardening. Affected only on versions prior to xorg-server-21.1.25 and xwayland-24.1.14. |
| Impact | No CVSS vector, EPSS score, KEV entry, or public POC is present in the supplied data, so quantitative exploitation signals are entirely absent and must be stated as unknown rather than inferred. Qualitatively, this is a double free in _CheckSetDoodad() (xkb/xkb.c): the error path frees doodad->text.text without NULLing it, and _XkbClearDoodad() frees it again during cleanup, yielding heap corruption that the advisory says may enable arbitrary code execution or a crash. Exploitation requires an authenticated X client (a connection to the X server / Xwayland), which points to a local, not network-facing, threat model - on most deployments the X server runs within the user's session, though on some legacy configurations it runs as root, which would raise impact. The flaw was reported through Trend/ZDI (ZDI-CAN-31221) by an anonymous researcher, indicating a credible, triaged finding, but ZDI reporting is not evidence of in-the-wild exploitation. Net assessment: a genuine memory-corruption vulnerability worth patching on multi-user or sandboxed-GUI systems, but absent EPSS/KEV/POC data it is not demonstrably under active exploitation, and real-world risk is bounded by the requirement for an already-authenticated local X client. Reliable double-free-to-code-execution against modern hardened heap allocators is non-trivial, so denial of service is the more probable practical outcome. |
| Exploit ScenarioDerived | A local, already-authenticated X client (for example a malicious or compromised application in a desktop or multi-user session) sends a crafted XkbSetGeometry request containing a malformed TextDoodad entry that forces the initial error path in _CheckSetDoodad(). The freed-but-not-NULLed doodad->text.text pointer is freed a second time during _XkbClearDoodad() cleanup, corrupting the heap to crash the server or, with careful heap grooming, attempt arbitrary code execution in the X server's context. No public exploit was identified in the provided data; the issue was reported privately via Trend/ZDI (ZDI-CAN-31221). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
A double free in the X.Org X server's XKB SetGeometry request handler (CVE-2026-88812) lets an authenticated X client that is already able to connect to the target display corrupt heap memory by sending a crafted XkbSetGeometry request containing a malformed TextDoodad entry, with outcomes ranging from a server crash to potential arbitrary code execution. Only builds of xorg-server prior to 21.1.25 and Xwayland prior to 24.1.14 are affected, and the XKB extension required for the trigger is standard and enabled by default. The assessed vector is CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, meaning exploitation presupposes an existing local/same-session X connection rather than remote or unauthenticated access, and no public exploit code, EPSS score, or CISA KEV entry appears in the supplied data, so reliable code execution additionally depends on defeating heap allocator hardening.
RemediationAI
Vendor-released patch: upgrade to xorg-server-21.1.25 or xwayland-24.1.14, which contain the fix; the authoritative upstream change for this CVE is commit https://gitlab.freedesktop.org/xorg/xserver/-/commit/0d1b1b0bad86, and the full vendor advisory is at https://seclists.org/oss-sec/2026/q4/82, so distributions that backport rather than rebase should be checked for their own patched package versions. If an immediate upgrade is not possible, the practical compensating controls are access controls rather than feature toggles: enforce xauth cookie authentication and server-side access control, avoid xhost + and -ac, and prevent untrusted or low-privilege processes from sharing the display session with privileged clients - the trade-off is that this breaks legitimate multi-user, remote-display, and su/sudo-to-root X workflows, and Xwayland clients inside a user's own Wayland session are already effectively same-session and therefore remain in scope. Disabling the XKB extension is not a viable runtime mitigation because it is compiled in and required by most toolkits; a rebuild with --disable-xkb would remove the attack surface but degrade keyboard layout and modifier handling and break many clients. Isolating clients inside nested X servers or separate user namespaces limits blast radius to that nested session, at the cost of extra complexity and a degraded user experience; given that no public exploit code was identified at the time of analysis, restricting display access to trusted clients removes the exposure path entirely.
Affected ProductsAI
X.Org X server versions prior to xorg-server-21.1.25 and Xwayland versions prior to xwayland-24.1.14 are affected; no CPE strings were provided in the input data, so identification must be done by version and package. Both the standalone Xorg server for X11 sessions and the Xwayland compatibility server used in Wayland desktops carry the vulnerable xkb/xkb.c code path, so any distribution shipping xorg-server 21.1.x or older, or Xwayland 24.1.x or older, is in scope until the fix is backported. The primary vendor advisory is https://seclists.org/oss-sec/2026/q4/82, and the reference list also points to upstream commits 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, which address sibling CVEs from the same advisory rather than CVE-2026-88812 itself.
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 flaw is a classic double free (CWE-415) in the X.Org X server's XKB extension implementation, specifically in _CheckSetDoodad() in xkb/xkb.c. When an XkbSetGeometry request carries a malformed TextDoodad, the function frees doodad->text.text on the error path but does not NULL the pointer; the error path then continues into cleanup, where _XkbClearDoodad() frees the same pointer a second time. Because the X server is a long-running privileged process that parses client-supplied request data in a single address space shared with all connected clients, the resulting double free corrupts heap allocator metadata and can be steered toward arbitrary code execution or a straightforward crash, though the latter is the more likely outcome without allocator-specific heap grooming. The vulnerable handler is shared by the standalone Xorg server and Xwayland, and the XKB extension is compiled in by default and used by essentially all toolkits, so the code path is always reachable by any client that can open a display connection. This CVE is one of a bundle of memory-safety defects patched in the same October 2026 X.Org advisory - including Present/SYNC cross-window notify use-after-free, an XInput passive grab modifierDevice use-after-free, a GLX RenderLarge heap overflow, an unsigned-short truncation in XkbResizeKeyType, and an XFixes pointer barrier overflow - which collectively show that X server request parsing and object lifetime management remain a recurring source of heap corruption; the linked diffs to present/present_notify.c and glamor/glamor_transfer.c correspond to sibling fixes in that advisory rather than to this CVE. No CPE strings or vendor-assigned CWE identifier were supplied in the input data.
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
X client access is local and already authenticated (AV:L, PR:L), the malformed request reliably triggers the error path (AC:L), and heap corruption threatens confidentiality, integrity, and availability (C/I/A:H).
Estimated by vuln.today — no official severity rating has been published for this CVE yet.
Description PRE-NVD
Zero Day Initiative Advisories
Executive ViewAI
A critical memory-corruption flaw in the X.Org X server and Xwayland (CVE-2026-88812) allows any user who can already open a session on a Linux or Unix desktop, VDI host, or container-based workspace to crash the shared display service and potentially execute code with its privileges. Because the affected XKB extension ships enabled by default and no vendor-released patch has been identified, every xorg-server deployment below 21.1.25 and every Xwayland deployment below 24.1.14 across the estate is exposed until the display stack is updated or local session access is constrained. Leadership should treat this as a priority desktop and virtualization hardening item: it is not remotely reachable, but it undermines the trust boundary between a logged-in user and the shared graphical session that hosts other users' work.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce cookie-based Xauthority access and remove xhost trust entries so only intended local users can reach the display; disable X TCP listening and remote display forwarding; confine Xwayland and X sessions with seccomp, AppArmor or SELinux confinement and run them as unprivileged, per-session users; isolate multi-user VDI and container X sockets so one session cannot address another; monitor and alert on X server and Xwayland crashes or core dumps as a possible exploitation indicator; assess disabling the XKB extension (via DisableExtensions) on hardened kiosk or single-application images where keyboard remapping is not required; and migrate eligible desktops to Wayland-native compositors to avoid the vulnerable XKB handler.
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