/

CVE-2026-110838

Severity:

HIGH RISK

(7.5)

Missing Authentication (CWE-306) in FreeRDP Shadow Server

CVE-2026-110838

Analyzed

Vulnerability type

Category:

Missing Authentication

CWE:

CWE-306

Impact:

Unauthenticated Input Injection

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A missing authentication check in the FreeRDP shadow server allows input protocol data units to be processed during the Confirm Active state before the client is authenticated. An unauthenticated network attacker may inject synthetic keyboard input into the host user's X11 session when the shadow server accepts TLS-only RDP connections.

A missing authentication check in the FreeRDP shadow server allows input protocol data units to be processed during the Confirm Active state before the client is authenticated. An unauthenticated network attacker may inject synthetic keyboard input into the host user's X11 session when the shadow server accepts TLS-only RDP connections.

Affected context

The issue occurs in FreeRDP shadow server deployments that process client input during RDP session negotiation before authentication has completed. The affected context includes hosts exposing the shadow server to untrusted networks, using TLS-only RDP negotiation, and running an active X11 session reachable through the shadow server.

The issue occurs in FreeRDP shadow server deployments that process client input during RDP session negotiation before authentication has completed. The affected context includes hosts exposing the shadow server to untrusted networks, using TLS-only RDP negotiation, and running an active X11 session reachable through the shadow server.

Exploit preconditions

  • Attack surface: Network-accessible FreeRDP shadow server - Required access: No valid authentication credentials may be required - Trigger point: Processing of input PDUs during the Confirm Active state - Relevant condition: The server accepts the connection and handles input

before completing client authentication

  • Why exploitation is possible: Authentication state is not enforced before

client-controlled input is dispatched to the host session

  • Attack surface: Network-accessible FreeRDP shadow server - Required access: No valid authentication credentials may be required - Trigger point: Processing of input PDUs during the Confirm Active state - Relevant condition: The server accepts the connection and handles input

before completing client authentication

  • Why exploitation is possible: Authentication state is not enforced before

client-controlled input is dispatched to the host session

Why this happens

The underlying bug is an authentication-state validation failure. The shadow server permits client input to reach the session input-handling path before the connection has demonstrated that it is authorized. This behavior maps to CWE-306, Missing Authentication for Critical Function, because a security- relevant operation is exposed without first enforcing the required authentication boundary.

The underlying bug is an authentication-state validation failure. The shadow server permits client input to reach the session input-handling path before the connection has demonstrated that it is authorized. This behavior maps to CWE-306, Missing Authentication for Critical Function, because a security- relevant operation is exposed without first enforcing the required authentication boundary.

Potential impact

  • An unauthenticated attacker may inject synthetic keyboard input
  • The attacker could alter actions performed in the host user's X11 session
  • Sensitive applications or documents visible to the session may be affected
  • The issue can contribute to unauthorized actions or session disruption
  • An unauthenticated attacker may inject synthetic keyboard input
  • The attacker could alter actions performed in the host user's X11 session
  • Sensitive applications or documents visible to the session may be affected
  • The issue can contribute to unauthorized actions or session disruption

General mitigation guidance

Mitigation generally focuses on enforcing authentication and authorization before any client-controlled input is dispatched. Secure-by-default designs keep pre-authentication protocol handling limited to negotiation and reject input associated with unauthenticated sessions. Network exposure can be reduced through access controls, segmentation, and trusted-client policies. Shadow-server processes benefit from least-privilege operating-system accounts, restricted session permissions, and isolation from sensitive user sessions. Configuration and protocol-state checks should also fail closed when authentication status is incomplete or ambiguous.

Mitigation generally focuses on enforcing authentication and authorization before any client-controlled input is dispatched. Secure-by-default designs keep pre-authentication protocol handling limited to negotiation and reject input associated with unauthenticated sessions. Network exposure can be reduced through access controls, segmentation, and trusted-client policies. Shadow-server processes benefit from least-privilege operating-system accounts, restricted session permissions, and isolation from sensitive user sessions. Configuration and protocol-state checks should also fail closed when authentication status is incomplete or ambiguous.

How teams detect issues like this

Detection can include static and dynamic analysis that traces input dispatchers from protocol handlers and verifies that authentication-state checks dominate those paths. Code review should look for input processing reachable during negotiation, missing authorization guards, and state transitions that do not explicitly distinguish authenticated from unauthenticated clients. Runtime monitoring can alert on unauthenticated sessions sending input-related messages or on unexpected X11 input events. CI policy checks and automated code-review tools can help enforce authentication-before-action rules.

Detection can include static and dynamic analysis that traces input dispatchers from protocol handlers and verifies that authentication-state checks dominate those paths. Code review should look for input processing reachable during negotiation, missing authorization guards, and state transitions that do not explicitly distinguish authenticated from unauthenticated clients. Runtime monitoring can alert on unauthenticated sessions sending input-related messages or on unexpected X11 input events. CI policy checks and automated code-review tools can help enforce authentication-before-action rules.

Sources

SourceLink
github.comgithub.com/FreeRDP/FreeRDP/security/advisories/GHSA-m998-cvfm-9444
vulncheck.comvulncheck.com/advisories/freerdp-shadow-before-3.32.0-pre-authentication-input-injection-via-confirm-active-bypass

Frequently asked

questions

Yes. An attacker may exploit the issue over the network when a FreeRDP

shadow server is exposed and accepts the relevant session negotiation,

without first supplying valid credentials.

Network connectivity to the shadow server may be sufficient. The attacker

does not necessarily need an authenticated RDP account, although firewall

rules and deployment configuration affect practical reachability.

Ensure that all client-controlled input is rejected or ignored until

authentication and authorization have completed successfully. Protocol

state handling should fail closed for unauthenticated connections.

Model authentication as a mandatory state transition, test every

pre-authentication protocol path, apply network access restrictions, and

review session-input handlers for authorization checks before dispatch.

Yes. An attacker may exploit the issue over the network when a FreeRDP

shadow server is exposed and accepts the relevant session negotiation,

without first supplying valid credentials.

Network connectivity to the shadow server may be sufficient. The attacker

does not necessarily need an authenticated RDP account, although firewall

rules and deployment configuration affect practical reachability.

Ensure that all client-controlled input is rejected or ignored until

authentication and authorization have completed successfully. Protocol

state handling should fail closed for unauthenticated connections.

Model authentication as a mandatory state transition, test every

pre-authentication protocol path, apply network access restrictions, and

review session-input handlers for authorization checks before dispatch.

Find out what's already
exploitable in your codebase.