Skip to main content

X.Org X11 Libraries CVE-2026-109088

CRITICAL
2026-10-16
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Lure client to malicious or compromised X server
  2. Exploit
    Server sends crafted protocol reply/event
  3. Execution
    Trigger out-of-bounds access in X client library
  4. Impact
    Crash client or disclose process memory

Vulnerability Assessment

Exploitation Conditions

Exploitation requires the victim's X11 client to establish a connection to an attacker-controlled, compromised, or man-in-the-middled X server; the flaw triggers only when that server returns a maliciously crafted reply or event (e.g. inconsistent length, count, or class-metadata fields) that the client library parses without adequate bounds checking. Limiting factors that reduce real-world risk: the X server is normally a local, trusted component, so exploitation presupposes an abnormal trust relationship such as X forwarding to a hostile host or a rogue display server; the observed impact across the advisory family is primarily a client crash (denial of service) with at most limited memory disclosure, not confirmed code execution for this component.

Impact

No CVSS vector, EPSS score, KEV entry, POC, or SSVC decision point was provided for CVE-2026-109088 specifically, so quantitative exploitation signals are absent and risk must be inferred from the X.Org advisory class it belongs to. IMPORTANT DATA CONFLICT: the identifier CVE-2026-109088 does not appear anywhere in the provided advisory text, which enumerates CVE-2026-88806, 94283, 94284, 94285 (libX11) and 93541-93545 (libXi); the references and the two linked code diffs instead point to libXrender (XRenderQueryFormats bounds hardening in Xrender.c) and libXtst (XRecord.c parse_reply_call_callback, a follow-up to CVE-2016-7952) - verify the exact affected component and CVSS with the vendor. Across this entire advisory family the sibling CVEs score MEDIUM (5.3-6.5) and share one threat model: a malicious, compromised, or MITM'd X server sends crafted replies/events that trigger out-of-bounds reads/writes in the X CLIENT library, overwhelmingly producing a crash (A:H) rather than code execution. That model is the dominant risk-limiting factor: in typical deployments the X server is local and trusted, so remote unauthenticated mass exploitation is not realistic - the attacker must first control or interpose on the X protocol connection (e.g. SSH X-forwarding to a hostile host). Net assessment: real-world priority is LOW-to-MODERATE despite the ubiquity of the affected libraries - patch via normal distro channels, but there is no evidence of active exploitation or weaponization. Sibling OOB-write CVE-2026-88806 is the one theoretically higher-impact member, but 109088's own impact cannot be confirmed from the supplied data.

Exploit ScenarioDerived

An attacker controls or compromises an X server (for example a rogue display server, or a malicious host reached via SSH X11 forwarding) that a victim's X11 client connects to. The server returns a crafted protocol reply or event with inconsistent length/count fields, driving the client's X library to read or write past a buffer, crashing the client and potentially disclosing adjacent process memory. No public exploit identified at time of analysis.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 16, 2026

Out-of-bounds reads and writes in the X.Org X client libraries (libX11, libXi, libXpm, libXrender and libXtst) can be triggered when a connecting X11 client parses crafted replies or events returned by a malicious, compromised, or man-in-the-middled X server, causing client crashes and, in a subset of cases, limited memory disclosure. The lead issue in the advisory is an out-of-bounds write in libX11's XKB action parser when a XkbGetMap reply contains keycode values above max_keycode + 1; the family also includes multiple out-of-bounds reads in libXi's XI2 class parsing and XQueryDeviceState/XListInputDevices replies, all of which are fixed in libX11 1.8.14, libXi 1.8.4, libXpm 3.5.20, libXrender 0.9.13 and libXtst 1.2.6. The assessed vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, 6.5) indicates exploitation is unauthenticated but requires user interaction, with impact limited to denial of service rather than confirmed code execution; no public exploit identified at time of analysis, and no KEV entry or EPSS score was supplied.

RemediationAI

Vendor-released patch: upgrade to libX11 1.8.14, libXi 1.8.4, libXpm 3.5.20, libXrender 0.9.13 and libXtst 1.2.6, or apply your distribution's backported equivalents, since many of these libraries are dynamically linked by a very large number of X clients and only the link-time version matters at runtime. Where immediate upgrades are not possible, the effective compensating control is to shrink the trust boundary rather than patch behaviour: stop forwarding X11 sessions to hosts you do not control by disabling SSH X11 forwarding (ssh -X/-Y) in client and server sshd_config, trading away the ability to display remote GUI applications; restrict X server access with host-based access control and per-client xauth cookies (XAUTHORITY/xhost) so that only trusted local clients can connect, which does not help against a genuinely malicious display server; and treat the exposure as availability-only, since the assessed impact is client crash with at most limited memory disclosure, so patching can generally be scheduled with normal maintenance rather than emergency change. Do not rely on the X11 SECURITY extension or sandboxing of the server alone to contain a hostile server, because the vulnerable parsing happens in the client process; running affected X clients as an unprivileged, isolated user and under container or seccomp confinement limits the blast radius of a crash but does not prevent the out-of-bounds access itself. Full technical detail and commit references are in the X.Org advisory at https://seclists.org/oss-sec/2026/q4/212 and the upstream commits https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/924fc91f0, https://gitlab.freedesktop.org/xorg/lib/libxrender/-/commit/0564bce54 and https://gitlab.freedesktop.org/xorg/lib/libxtst/-/commit/ac60f5f47.

Affected ProductsAI

X.Org X client libraries prior to the fixed releases: libX11 before 1.8.14 (XKB action parser, XIM attribute parser, XIM trigger-key registration parser and the byte-oriented codeset parser for multibyte locales such as GBK/Big5), libXi before 1.8.4 (XQueryDeviceState, XI2 class parsing via size_classes()/copy_classes(), XIQueryDevice reply parsing, and XListInputDevices), plus libXpm before 3.5.20, libXrender before 0.9.13 and libXtst before 1.2.6, which the same advisory fixes. The advisory text provided was truncated before the individual libXpm and libXtst issue write-ups, so their per-issue details are not confirmed in this data set. No CPE strings were supplied for any of these components. The authoritative advisory is the X.Org Security Advisory of October 16, 2026, mirrored at https://seclists.org/oss-sec/2026/q4/212, with upstream fix references at https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/924fc91f0, https://gitlab.freedesktop.org/xorg/lib/libxrender/-/commit/0564bce54 and https://gitlab.freedesktop.org/xorg/lib/libxtst/-/commit/ac60f5f47; the libX11 1.8.14 and libXi 1.8.4 releases also carry additional hardening changes without CVE identifiers that maintainers cherry-picking fixes are advised to include.

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 X11 protocol is asymmetric: the server owns the display, keyboard and pointer and the client libraries (libX11, libXi, libXrender, libXtst, libXpm) parse whatever the server sends back. That trust relationship is normally benign because the X server is a local, trusted component, but it inverts when a client connects across a trust boundary - SSH X11 forwarding to a hostile host, a rogue or spoofed display, or a machine-in-the-middle on the X11 socket. The advisory family consists of classic protocol-parser defects: no CWE identifier was supplied in the input, but the root-cause classes map to out-of-bounds read (CWE-125) and out-of-bounds write (CWE-787) caused by trusting length, count and class-metadata fields taken directly from wire replies. In libX11 the affected parsers are the XKB action parser (writes past an allocated array when keycode exceeds max_keycode + 1), the XIM attribute parser and trigger-key registration parser (read past the packet buffer on inconsistent nested lengths, crash in memcpy), and the byte-oriented codeset parser byteM_parse_codeset(), which over-reads when the final input byte is a valid lead byte for a multi-byte locale such as GBK or Big5. In libXi the vulnerable surfaces are XQueryDeviceState() (unvalidated num_valuators in a ValuatorClass reply), the size_classes()/copy_classes() helpers and XIQueryDevice()/XI_DeviceChanged handling (overlong num_classes, zero or oversized per-class lengths, button/key counts exceeding class bytes), and XListInputDevices() (name length byte larger than the remaining reply). The supplied fix diffs corroborate the pattern: src/Xrender.c in libXrender adds a bounds check that rep.numSubpixel <= rep.numScreens alongside numDepths/numVisuals and INT_MAX-shift limits before allocation in XRenderQueryFormats(), and src/XRecord.c adds validation that datum_bytes is within INT_MAX>>2, non-zero, and actually advances the parse index - explicitly described as a follow-up to the earlier CVE-2016-7952 livelock/underflow fix. Fixes are published as upstream commits on gitlab.freedesktop.org, for example libX11 commit 924fc91f0, libXrender commit 0564bce54 and libXtst commit ac60f5f47.

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

vuln.today AI 6.5 MEDIUM

Malicious X server reply crashes the client over a (possibly forwarded) network connection with no authentication, but the victim must initiate the connection (UI:R); impact is availability-only DoS.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

CVE-2026-109088 affects the X.Org X client libraries (libX11, libXi, libXpm, libXrender, and libXtst) used across Linux and Unix graphical environments, enabling a malicious or compromised X server to crash connecting client applications and potentially disclose limited memory. Exploitation is unauthenticated but requires user interaction, and no public exploit has been identified at time of analysis. Because these libraries are widely deployed on user workstations, security and IT teams should prioritize updating affected systems to avoid user-session disruptions.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
High
core X.Org client libraries shipped on virtually all Linux/Unix X11 desktops
Data Quality
1 sources
Confidence: Low

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS N/A
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

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.

More in Gitlab

View all
CVE-2021-22205 CRITICAL POC
10.0 Apr 23

An issue has been discovered in GitLab CE/EE affecting all versions starting from 11.9. Rated critical severity (CVSS 10

CVE-2023-7028 CRITICAL POC
10.0 Jan 12

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.

CVE-2021-22175 CRITICAL POC
9.8 Jun 11

When requests to the internal network for webhooks are enabled, a server-side request forgery vulnerability in GitLab af

CVE-2026-85706 CRITICAL POC
10.0 Sep 12

Unauthenticated arbitrary file read in GitLab CE/EE lets remote attackers retrieve files from the GitLab server via the

CVE-2013-4490 MEDIUM POC
6.5 May 13

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

CVE-2022-2992 CRITICAL POC
9.9 Oct 17

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

CVE-2026-97229 CRITICAL POC
10.0 Oct 13

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)

CVE-2026-87719 CRITICAL POC
9.9 Sep 12

Sensitive credential and configuration disclosure in GitLab Enterprise Edition allows an authenticated user with Duo Cha

CVE-2018-18843 CRITICAL POC
10.0 Dec 04

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

CVE-2026-93577 CRITICAL POC
9.9 Sep 23

Authenticated code execution on the GitLab server is possible in GitLab CE/EE 19.2 through 19.4.0, where an integer over

CVE-2026-89078 CRITICAL POC
9.9 Sep 23

Authenticated users who can define or modify a CI/CD configuration can achieve remote code execution on GitLab CE/EE ser

CVE-2026-61560 CRITICAL POC
9.8 Sep 15

Unauthenticated path traversal in the @zereight/mcp-gitlab Model Context Protocol server prior to version 2.1.27 allows

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy