CVE-2026-110838
Executive Summary
CVE-2026-110838 is a critical authentication bypass vulnerability in the FreeRDP shadow server, affecting versions from 3.0.0 before 3.32.0. The flaw allows unauthenticated attackers to inject synthetic keyboard input into a host user's X11 session via XTEST by dispatching input PDUs during the Confirm Active state before authentication is complete. With a CVSS score of 7.5, this vulnerability poses a high risk to organizations using FreeRDP shadow server for remote desktop access, enabling attackers to execute arbitrary keystrokes without valid credentials.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The FreeRDP shadow server is a component of the FreeRDP project that allows a remote user to view and control an existing X11 session on a host machine. The vulnerability, classified as CWE-306 (Missing Authentication for Critical Function), arises from improper state handling in the Remote Desktop Protocol (RDP) connection sequence. Specifically, the shadow server processes input PDUs (Protocol Data Units) during the Confirm Active state, which occurs before the authentication phase. This premature processing allows an attacker to send crafted input PDUs without completing the required authentication steps.
The attack surface is the RDP service exposed by the FreeRDP shadow server, typically listening on TCP port 3389. An attacker can negotiate a TLS-only RDP connection, bypassing traditional authentication mechanisms. By sending an input PDU without first sending a Confirm Active PDU, the attacker can inject synthetic keystrokes into the host user's X11 session. The keystrokes are delivered via XTEST, an X11 extension that allows programmatic generation of input events. This effectively grants the attacker the ability to type commands or interact with applications as if they were the local user, though it does not provide direct shell access or file read capabilities (as reflected by the CVSS vector's C:N and A:N).
The root cause is the lack of authentication enforcement before processing input PDUs. The RDP protocol specification mandates that the Confirm Active PDU be exchanged only after successful authentication. However, the FreeRDP shadow server fails to validate this sequence, allowing input PDUs to be processed early. This is a design flaw in the server's state machine, not a memory corruption issue, making it exploitable via network packets alone. No user interaction is required (UI:N), and the attack can be launched from any network position with access to the RDP port (AV:N).
Exploitation Scenarios
Reconnaissance/target identification: The attacker scans for hosts running FreeRDP shadow server, typically identifying open TCP port 3389 or using Shodan dorks like
product:"FreeRDP"orport:3389 FreeRDP. The attacker may also fingerprint the service version to confirm it falls within the vulnerable range (3.0.0 to before 3.32.0).Triggering the flaw: The attacker initiates an RDP connection to the target, negotiating TLS-only encryption. Instead of proceeding through the standard authentication handshake, the attacker sends an input PDU directly, bypassing the Confirm Active state. This is possible because the server dispatches input PDUs before authentication is enforced.
Payload/execution method: The input PDU contains synthetic keystroke data. The attacker crafts these keystrokes to interact with the host user's X11 session via XTEST. For example, the attacker could open a terminal emulator (if the user has one running or can be tricked into opening one) and type commands. No public exploit code is available; the attack chain is inferred from the vulnerability class and description. The attacker does not need to authenticate, making this a zero-click attack from the network perspective.
Post-exploitation impact: Once keystrokes are injected, the attacker can execute arbitrary commands within the context of the logged-in user's X11 session. This could lead to data exfiltration, installation of backdoors, or lateral movement within the network, depending on the user's privileges and accessible resources. The integrity impact is high (I:H), as the attacker can modify system state, but confidentiality and availability are not directly impacted (C:N, A:N) per the CVSS vector.
Impact Assessment
The business impact is significant for organizations relying on FreeRDP shadow server for remote administration or support. Affected systems include Linux/Unix workstations and servers running the vulnerable versions of FreeRDP with the shadow server feature enabled. The blast radius depends on network exposure: if the RDP service is publicly accessible, any internet-based attacker can exploit it. Even in internal networks, a malicious insider or compromised host could leverage this flaw. The CVSS score of 7.5 (High) reflects the ease of exploitation (AC:L, PR:N, UI:N) and the high integrity impact. However, the lack of confidentiality and availability impact limits the overall severity. The EPSS score is not yet available, and there is no known exploit in the wild or CISA KEV listing.
Detection Guidance
Sigma Rule
title: FreeRDP Shadow Server Unauthenticated Input PDU Injection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects exploitation attempts of CVE-2026-110838 via anomalous RDP connection sequences.
author: Security Team
date: 2026-05-20
logsource:
category: network_connection
product: windows
detection:
selection:
DestinationPort: 3389
Initiated: 'true'
condition: selection
falsepositives:
- Legitimate RDP connections
level: high
YARA Rule
rule CVE_2026_110838_FreeRDP_Shadow_Input_PDU
{
meta:
description = "Detects crafted RDP input PDUs targeting FreeRDP shadow server"
author = "Security Team"
date = "2026-05-20"
reference = "CVE-2026-110838"
strings:
$pdu_type = { 03 00 } // Input PDU type indicator (example)
$tls_negotiation = { 03 00 00 13 0e d0 00 00 12 34 00 02 } // TLS negotiation pattern
condition:
$pdu_type at 0 and $tls_negotiation
}
Suricata IDS Rule
alert tcp any any -> any 3389 (msg:"CVE-2026-110838 FreeRDP Shadow Server Unauthenticated Input PDU Injection"; flow:to_server,established; content:"|03 00|"; depth:2; content:"|03 00 00 13 0e d0|"; within:6; classtype:attempted-admin; sid:1000001; rev:1;)
Elastic Detection
network where destination.port == 3389 and event.action == "connection_started" and process.name == "freerdp-shadow-cli"
Splunk SPL Query
index=network sourcetype=firewall dest_port=3389 | where src_ip!=local_ip | stats count by src_ip, dest_ip | where count > 5
Wazuh OSSEC Rule
<group name="freerdp,">
<rule id="100001" level="12">
<decoded_as>json</decoded_as>
<field name="dst_port">3389</field>
<field name="protocol">tcp</field>
<description>CVE-2026-110838: Possible FreeRDP shadow server unauthenticated input PDU injection attempt</description>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
Immediate mitigations:
- Disable the FreeRDP shadow server if not strictly needed.
- Restrict network access to port 3389 using firewall rules, allowing only trusted IPs.
- Enable strong authentication mechanisms (e.g., TLS with client certificates) if supported, though this vulnerability bypasses authentication entirely.
- Monitor for anomalous RDP traffic and input PDU patterns.
Patch/upgrade steps:
- Upgrade FreeRDP to version 3.32.0 or later once a patch is released. As of this report, no patch is available. Monitor the FreeRDP GitHub repository for security advisories and updates.
Long-term hardening:
- Implement network segmentation to isolate RDP services from untrusted networks.
- Use VPNs or zero-trust access solutions for remote desktop access.
- Regularly update FreeRDP and other remote access software.
- Conduct security audits of RDP configurations and state machine implementations.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-110838
- FreeRDP Project: https://www.freerdp.com/
- FreeRDP GitHub Security Advisories: https://github.com/FreeRDP/FreeRDP/security/advisories
- CWE-306: https://cwe.mitre.org/data/definitions/306.html
- CISA KEV Catalog: Not applicable (CVE not listed)
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.