Skip to main content

FreeRDP CVE-2026-121400

| EUVDEUVD-2026-115932 HIGH
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-11-03 VulnCheck GHSA-4c29-wc44-6c3g
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Victim client connects via attacker-controlled RD Gateway
  2. Delivery
    Complete RDG tunnel-open handshake to RDG_CLIENT_STATE_OPENED
  3. Exploit
    Send eight-byte keepalive header with packetLength 0xFFFF
  4. Execution
    Withhold declared packet body
  5. Impact
    No-progress read loop pins one client thread at full CPU

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a deployment that uses an RD Gateway (the FreeRDP /gateway option with HTTP/WebSocket transport, e.g. type:http) AND an attacker who controls, has compromised, or can machine-in-the-middle that gateway. The attacker must first complete the RDG tunnel-open exchange (HANDSHAKE_RESPONSE, TUNNEL_RESPONSE, TUNNEL_AUTH_RESPONSE, CHANNEL_RESPONSE success replies) so the tunnel reaches RDG_CLIENT_STATE_OPENED, then send a non-data control packet - an eight-byte header with packetLength=0xFFFF - and withhold the body. Limiting factors that reduce realistic risk: the victim client must itself initiate the connection through the malicious gateway (UI:P/UI:R), direct RDP connections without a gateway are not affected, and impact is confined to CPU exhaustion of one client thread (a user-requested abort is still polled; no process crash). The non-WebSocket transport also reproduces the spin, so the condition is not limited to the WebSocket transport.

Impact

This is a client-side denial-of-service with availability-only impact. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H) yields 7.1, but that score is driven almost entirely by VA:H - there is no confidentiality or integrity impact and no demonstrated crash, data access, or code execution (confirmed by the advisory). The real-world precondition materially tempers the raw score: exploitation requires the victim FreeRDP client to connect through an RD Gateway that the attacker controls, has compromised, or can machine-in-the-middle (reflected in UI:P / UI:R - the connection must be operator-initiated). No CISA KEV listing and no EPSS score were provided, so there is no confirmed active-exploitation or exploitation-probability signal; exploitation status is therefore 'no public exploit identified at time of analysis' except that the GHSA advisory itself publishes a full fake-gateway reproduction harness (a public PoC reference exists; it is not verified as a weaponized working exploit). The vuln.today decision label is 'this_week', indicating prioritized but non-emergency remediation. Net assessment: a genuine but bounded issue - the high-ish CVSS reflects reliable CPU exhaustion, but impact is limited to spinning one client thread at ~100% CPU, and the attacker must already occupy or impersonate the gateway. With EPSS missing and KEV absent, no signal supports widespread opportunistic exploitation; treat as positional/targeted rather than mass-exploitable.

Exploit ScenarioDerived

An attacker who controls, has compromised, or can machine-in-the-middle an RD Gateway waits for a FreeRDP client (<= 3.32.1) to connect; after completing the RDG tunnel-open exchange and reaching RDG_CLIENT_STATE_OPENED, the gateway sends an eight-byte keepalive control header with packetLength=0xFFFF and withholds the declared body. rdg_process_control_packet then retries a no-progress rdg_socket_read whenever BIO_should_retry is true with no wait, backoff, or limit, pinning one client thread at full CPU (measured at 99.8% of one core with 65,527 bytes remaining). The GHSA advisory publishes full C reproduction source (a disposable TLS fake-gateway in 'ctlspin' mode); it is a reproduction harness and not labeled a confirmed weaponized exploit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

CPU exhaustion in FreeRDP 3.32.1 and earlier allows a malicious or compromised RD Gateway to pin one client thread at 100% of a core by completing the RDG tunnel-open exchange and then sending an eight-byte keepalive control header that declares a 65,535-byte body which is never delivered. Only clients that explicitly connect through a gateway (the /gateway option with HTTP or WebSocket transport) are affected; direct RDP connections are not, and the victim must initiate the session, so the practical attack surface is users routed through an untrusted or machine-in-the-middled gateway. Impact is availability-only - the upstream advisory and reproduction confirm CPU spin and a runnable thread, not a crash, memory corruption, data access, or code execution - and the issue is fixed in FreeRDP 3.32.2. The upstream advisory (GHSA-x4x6-2hrm-hvq9) ships a complete proof-of-concept gateway harness that reproduces the spin, but the flaw is not listed in CISA KEV.

RemediationAI

Upgrade FreeRDP to 3.32.2 or later, the vendor-released fix for this issue, as documented in GHSA-x4x6-2hrm-hvq9; downstream distributions tracking c/FreeRDP should pick up the 3.32.2 package when their maintainers publish it. Until then, the exposure is bounded by who operates the gateway: restrict /gateway usage to RD Gateways your organisation controls over trusted paths and avoid connecting through third-party or unvetted gateway endpoints, since exploitation requires an attacker to control, compromise, or intercept that gateway and to complete the tunnel-open handshake first. Note that routing around the gateway by connecting directly to the RDP host does avoid this code path but changes your network architecture and may bypass gateway-enforced access controls, so treat it as a scoping decision rather than a general workaround. When a client is hit, the operation can be aborted because the client still polls a user-requested abort, so terminating the session recovers the thread; there is no vendor-provided configuration flag that disables keepalive control processing. Remediation should be scheduled on a this-week cadence: the flaw is remote-triggerable without authentication and yields high availability impact, but it is availability-only, limited to one client thread, and not known to be actively exploited.

Affected VersionsENISA

FreeRDP 0 <3.32.2

Affected Packages

euvd freerdp fix: 3.32.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

FreeRDP's RD Gateway (RDG) client implements the MS-TSGU-style tunnel that wraps RDP inside HTTPS or WebSocket when the /gateway option is used. After the tunnel reaches RDG_CLIENT_STATE_OPENED, rdg_read_data_packet dispatches any packet whose type is not a data packet to rdg_process_control_packet. That function reads the declared body by repeatedly calling rdg_socket_read and retrying whenever OpenSSL's BIO_should_retry is true, with no wait, backoff, or retry ceiling. A gateway that sends the 0x000D keepalive control header with packetLength set to 0xFFFF and then stalls leaves the read loop making no forward progress while remaining runnable, producing the CWE-835 (infinite loop) condition upstream also classifies under CWE-400 (uncontrolled resource consumption). Independent measurement recorded 200 CPU ticks in 2.0035 seconds at HZ=100 (99.8% of one core) and a debugger repeatedly broke inside the real rdg_socket_read with 65,527 bytes outstanding. The audited rdg.c bytes match the 3.32.1 release source and the code path was inspected in 3.0.0, 3.20.0, 3.28.0, 3.31.1, 3.32.0 and 3.32.1; the first affected release was not established, and intermediate snapshots were not checked. The non-WebSocket transport reproduces the spin as well, so the defect is transport-independent. A user-requested abort is still polled, and the trigger does not crash the client process.

Know when Freerdp 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

Vendor (VulnCheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Remote malicious gateway, low complexity, no client privileges; the victim must initiate the gateway connection so UI:R; impact is availability-only CPU exhaustion, so C:N/I:N/A:H.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Nov 03, 2026 - 16:17 EUVD
CVE Published
Nov 03, 2026 - 14:28 cve.org
HIGH 7.1

DescriptionCVE.org

FreeRDP before 3.32.2 contains a denial-of-service vulnerability in rdg_process_control_packet that allows a malicious RD Gateway to exhaust client CPU by sending an incomplete keepalive control packet. Attackers completing the RDG tunnel-open exchange then send an eight-byte header with packetLength 0xFFFF and withhold the body, causing an unbounded no-progress read loop that spins one client thread at full CPU.

Executive ViewAI

Why It Matters

FreeRDP 3.32.1 and earlier contain a CPU exhaustion vulnerability that affects only clients connecting through an RD Gateway, allowing a malicious or compromised gateway to pin a client thread at 100% CPU. This could degrade or deny remote access for employees using untrusted gateways, but impact is limited to availability and requires user-initiated connections, so leadership should prioritize patching to avoid productivity loss and potential service disruption.

Business Impact: Medium
Compensating Controls

Vendor-released patch: 3.32.2

Threat Intelligence Overview

Prevalence
High
de facto open-source RDP client, bundled across Linux distributions and tools
Data Quality
4 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-25997 CRITICAL POC
9.8 Feb 25

Use-after-free in FreeRDP xf_clipboard_format_equal before 3.23.0. Clipboard format comparison uses freed memory. Fifth

CVE-2026-25953 CRITICAL POC
9.8 Feb 25

Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Surface-to-window update triggers memory corrupti

CVE-2026-25952 CRITICAL POC
9.8 Feb 25

Use-after-free in FreeRDP xf_SetWindowMinMaxInfo before version 3.23.0. X11 client window management triggers memory cor

CVE-2026-25959 CRITICAL POC
9.8 Feb 25

Use-after-free in FreeRDP xf_cliprdr_provide_data clipboard handling before 3.23.0. Clipboard data exchange triggers mem

CVE-2026-22857 CRITICAL POC
9.8 Jan 14

FreeRDP IRP thread handler has a use-after-free where the IRP is freed by Complete() then accessed on the error path. Fi

CVE-2026-22854 CRITICAL POC
9.8 Jan 14

FreeRDP drive read heap overflow when server-controlled read length exceeds IRP output buffer. Fixed in 3.20.1. PoC avai

CVE-2026-22852 CRITICAL POC
9.8 Jan 14

FreeRDP client before 3.20.1 has a heap buffer overflow in AUDIN format processing. A malicious RDP server can corrupt m

CVE-2026-25955 CRITICAL POC
9.8 Feb 25

Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Different code path from CVE-2026-25953. PoC and

CVE-2024-32041 CRITICAL POC
9.8 Apr 22

FreeRDP is a free implementation of the Remote Desktop Protocol. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2023-40574 CRITICAL POC
9.8 Aug 31

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical

CVE-2023-40569 CRITICAL POC
9.8 Aug 31

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical

CVE-2023-40567 CRITICAL POC
9.8 Aug 31

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical

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