Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLure client to malicious/compromised X server
-
ExploitServer sends crafted reply with inconsistent length fields
-
ExecutionClient parser reads past buffer bounds
-
ImpactClient process crashes (denial of service)
Vulnerability Assessment
| Exploitation Conditions | Exploitation requires the victim X client to connect to and parse replies from a malicious or compromised X server (for libXtst/XRecord and libXrender parsing paths) - the attacker must control the server side of the X protocol connection, e.g. via X11 forwarding (ssh -X / -Y) to a hostile host or a compromised display server. This inverts the normal trust assumption that the X server is trusted, which is the primary limiting factor. Per the advisory's sibling CVEs the impact is confined to out-of-bounds reads causing client crashes (availability only); user interaction is effectively required (the user must launch/connect the affected client), and there is no indication of code execution or data disclosure for this read-class issue. Affected only prior to libXrender 0.9.13 / libXtst 1.2.6 (and the other listed library versions). |
| Impact | This entry (CVE-2026-109089) is part of the October 16, 2026 X.Org Security Advisory covering a batch of client-library parsing flaws in libX11, libXi, libXpm, libXrender, and libXtst. No CVSS vector, EPSS score, KEV listing, or POC is provided for this specific CVE ID in the input, so quantitative exploitation signals are MISSING and cannot be compared. The references and linked diffs tie this ID to libXrender (XRenderQueryFormats bounds-checking of numSubpixel/length in Xrender.c) and/or libXtst (XRecord parse_reply_call_callback loop-livelock/OOB hardening in XRecord.c), but the advisory text itself does not enumerate a CVE-2026-109089 line, so the exact sub-issue mapping is INFERRED from the reference commits, not confirmed. Across the entire advisory the pattern is consistent: a malicious or compromised X server (or XIM server) sends crafted replies/events that drive client-side parsers past buffer bounds, yielding out-of-bounds reads and client crashes (the sibling CVEs with vectors all score MEDIUM 5.3-6.5 with C/I mostly None and A:H). The dominant real-world limiter is the inverted trust model: these libraries normally parse data from a trusted local X server, so exploitation presupposes the client connecting to an attacker-controlled or compromised server (e.g., X11 forwarding to a hostile host). Net assessment: a real hardening priority for distributions to ship, but low practical urgency as a denial-of-service class issue absent any evidence of active exploitation or confidentiality/integrity impact in this CVE. |
| Exploit ScenarioDerived | A user runs an X11 client that connects to a malicious or compromised X server - for example via SSH X11 forwarding (ssh -X) to an untrusted remote host. The hostile server returns a crafted reply (e.g., a QueryFormats/RenderQueryFormats reply or an XRecord reply with inconsistent length fields), and the client library parses it without adequate bounds checks, reading past its buffer and crashing the client. No public exploit is identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Out-of-bounds reads in the X.Org X client libraries - libXrender before 0.9.13 and libXtst before 1.2.6 in the parsing paths covered by this entry, alongside the sibling fixes shipped in libX11 1.8.14, libXi 1.8.4 and libXpm 3.5.20 - let a malicious or compromised X server crash connecting clients by returning malformed protocol replies. The clients trust length, count and category fields supplied by the server (for example the depth, visual and subpixel counts used when building XRenderInfo, and the datum/category handling in libXtst's XRecord reply parser) without validating them against the actual received buffer, so parsing walks past the end of the packet and causes a denial of service. Per the assessed vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H (6.5), the attacker is unauthenticated from the network but exploitation requires user interaction - the victim must launch or connect an affected client to the hostile server (for example via ssh -X/-Y X11 forwarding to a compromised display) - and there is no public exploit identified at time of analysis.
RemediationAI
Vendor-released patches: upgrade to libXrender 0.9.13, libXtst 1.2.6, and - to close the companion issues from the same advisory - libX11 1.8.14, libXi 1.8.4 and libXpm 3.5.20; the upstream advisory notes that the libX11 1.8.14 and libXi 1.8.4 releases also contain additional code-hardening fixes without CVE identifiers, so distributors cherry-picking individual commits should take the full release set rather than only the CVE-tagged changes (see https://seclists.org/oss-sec/2026/q4/212 and the fix commits https://gitlab.freedesktop.org/xorg/lib/libxrender/-/commit/0564bce54 and https://gitlab.freedesktop.org/xorg/lib/libxtst/-/commit/ac60f5f47). Because the root cause is untrusted server-side reply data reaching client parsers, the practical compensating control is to stop running vulnerable clients against servers you do not control: set ForwardX11 no (or at minimum keep ForwardX11Trusted no rather than enabling ssh -Y) in the SSH client configuration when connecting to untrusted hosts, and avoid ssh -X/-Y sessions to shared or hostile systems, accepting the trade-off that remote GUI applications then cannot be displayed and users must run alternative transports such as a trusted VNC/Wayland session; for environments that only need XRecord-style functionality, avoiding the RECORD extension and the affected XRender format-query paths reduces exposure, at the cost of losing recording/format introspection features. Note that enabling trusted forwarding (ssh -Y) increases the server's privileges over the client and is not an acceptable mitigation. Until patched versions are deployed, treat X11-forwarded sessions to untrusted hosts as a denial-of-service risk to locally running clients.
Affected ProductsAI
Affected are the X.Org client library implementations prior to the October 16, 2026 security releases: libX11 before 1.8.14, libXi before 1.8.4, libXpm before 3.5.20, libXrender before 0.9.13, and libXtst before 1.2.6; the parsing defects attributed to this entry are the libXrender and libXtst paths fixed in libXrender 0.9.13 and libXtst 1.2.6 respectively. Distributions and applications ship these libraries as shared objects consumed by essentially every X11 client, so any system with an unpatched libXrender/libXtst (and the other listed libraries) that connects to an untrusted or compromised X server is exposed. No CPE strings were supplied in the source data, which should be treated as a gap to be filled from vendor/distro advisories. The full upstream advisory text, including the per-CVE fix commits, is at https://seclists.org/oss-sec/2026/q4/212, with the relevant fix commits at https://gitlab.freedesktop.org/xorg/lib/libxrender/-/commit/0564bce54, https://gitlab.freedesktop.org/xorg/lib/libxtst/-/commit/ac60f5f47, and the related libX11 hardening commit https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/924fc91f0.
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
X11 is a client-server protocol in which the X client libraries (libX11, libXi, libXrender, libXtst, libXpm, and others) parse binary replies and events generated by the X server. The normal deployment assumption is that the server side is trusted, but X11 forwarding (ssh -X / -Y) or a compromised display server inverts that trust boundary, placing the server under attacker control while the vulnerable parsing code runs in the victim's client process. This entry corresponds to the read-class defects fixed by the XRenderQueryFormats numeric sanity checks in libXrender (adding the extra guard so replies whose numDepths/numVisuals/numSubpixel/numScreens/length values cannot be valid are rejected before Xcalloc and the subsequent walk over the reply) and by the libXtst XRecord parse_reply_call_callback hardening (rejecting unknown categories, zero-length data, and malformed elements that neither grow nor advance the index, as a follow-up to the earlier CVE-2016-7952 fix). The underlying weakness class is CWE-125, Out-of-bounds Read: server-controlled length fields are consumed as loop and memcpy bounds before being checked against the size of the received packet. Because these are read-only overruns of protocol buffers, the assessed impact is limited to availability (client crash); no CPE strings, CVSS vector or CWE were attached in the raw advisory data, and the authoritative assessed vector is the one recorded by our analysis above.
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
Malicious server reply reachable over networked X11 forwarding (AV:N), no auth (PR:N), but victim must connect a client (UI:R); OOB read crashes the client, so A:H with C:N/I:N.
Description PRE-NVD
Articles & Coverage 1
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.
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