Skip to main content

FreeRDP CVE-2026-121408

| EUVDEUVD-2026-115940 MEDIUM
Race Condition (CWE-362)
2026-11-03 VulnCheck GHSA-3j7f-j9fp-cvjc
6.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Lure victim to malicious RDP server
  2. Delivery
    Client with /usb announces matching USB device
  3. Exploit
    Server sends control-channel CLOSE_REQUEST
  4. Execution
    Race frees channel during announcement
  5. Persist
    Announcement thread reads stale channel->Write
  6. Impact
    Client use-after-free crash (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Concurrency control, locking
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Exploitation requires the FreeRDP client to be started with USB redirection enabled (/usb), a matching local USB device being announced at connect time, and a malicious or compromised RDP server that sends a dynamic-virtual-channel CLOSE_REQUEST for the urbdrc control channel. The server's close must land in the narrow window between FindChannelById returning the unreferenced pointer and the announcement thread reading channel->Write, because the control-channel close path does not take the device-manager loading_lock. Limiting factors: the victim must initiate the connection and opt into USB redirection (non-default), the race is timing-dependent (AC:H/AT:P), and the demonstrated outcome is only a client crash - no confidentiality, integrity or code execution was shown. The device-channel variant is serialized by a separate lock and is not affected.

Impact

The input CVSS 4.0 vector (CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N, score 6.0/MEDIUM) describes a network-reachable but hard-to-trigger flaw: AC:H plus AT:P reflect the CWE-362 race window between the lookup and the write, and UI:P reflects that the victim must connect to the malicious server and have USB redirection active. Impact is availability-only (VA:H; VC/VI = N), consistent with the advisory which states no confidentiality loss, no integrity loss and no demonstrated RCE - the demonstrated outcome is a client crash. The vuln.today Decision label is 'this_month' (not act_now/emergency), VulnCheck is the reporter, and the source is a FreeRDP GHSA advisory. No EPSS score is provided in the input and the CVE is not listed in CISA KEV, so there is no confirmed active exploitation. A public PoC reference exists in the form of a focused ASan harness that includes the real drdynvc translation unit and reproduces the heap-use-after-free read of the eight-byte Write pointer (and a harness-forced same-slot indirect call); it is not verified as working end-to-end exploit code, and the advisory explicitly says a live USB race and server-directed memory reclamation have not been shown. On balance this is a real but lower-tier priority: the attack requires a malicious/compromised server, a non-default client configuration, a matching local USB device and a precise timing race, and yields a crash rather than code execution - matching the 'this_month' triage rather than an emergency.

Exploit ScenarioDerived

A victim running FreeRDP with USB redirection (/usb) enabled connects to an attacker-controlled or compromised RDP server while a matching local USB device is being announced. The server sends a dynamic-virtual-channel CLOSE_REQUEST for the USB redirection control channel, timed to race the libusb announcement thread so the channel is freed before the thread reads channel->Write, producing a use-after-free and a client crash. A focused ASan harness publicly demonstrates the use-after-free using real FreeRDP code, but no end-to-end stock-client exploit has been observed.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

Client-side use-after-free in FreeRDP's urbdrc USB redirection channel lets a malicious RDP server crash a connecting client that runs with /usb enabled while a matching local USB device is being announced. FindChannelById returns a raw channel pointer without taking a reference, and the control-channel CLOSE_REQUEST path frees that channel without holding the device manager's loading_lock, so the libusb announcement thread can read channel->Write from freed memory. Triggering requires the victim to initiate the connection with USB redirection active and to win a narrow timing window (AC:H/AT:P); a PoC harness shipped with the vendor advisory demonstrates the use-after-free under AddressSanitizer, but it is not an end-to-end RDP reproduction and is not verified as working exploit code, and no active exploitation has been reported.

RemediationAI

Vendor-released patch: FreeRDP 3.32.2. Upgrade affected clients to 3.32.2 or later per the GitHub advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-w897-ffhv-5j7g; no other branch fix version is identified in the supplied data. Where an immediate upgrade is not possible, the effective compensating control is to stop starting the client with /usb (USB redirection disabled), which removes the urbdrc channel from the session entirely and therefore eliminates the race, at the cost of losing USB passthrough for that user population. Because exploitation requires the victim to connect to a malicious or compromised RDP server, restricting client connections to trusted RDP endpoints also reduces exposure, though that does not fix the underlying lifetime bug and depends on reliable endpoint allow-listing. Upstream remediation guidance in the advisory is to give each cross-thread channel lookup an owned reference and release it only after the write completes, or to serialize control-channel close with the full announcement and write operation, plus add a two-thread regression test that pauses announcement after lookup, closes the control channel, and verifies the write never touches freed memory.

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 dynamic virtual channel (drdynvc) client manager maintains a channelsById hash table of DVCMAN_CHANNEL objects with reference-counted lifetimes. The urbdrc USB redirection plugin obtains its channel through FindChannelById, which resolves via dvcman_get_channel_by_id(..., FALSE) and returns the bare IWTSVirtualChannel* without extending the object's lifetime; a separate libusb announcement thread later invokes channel->Write through that stale pointer. The server-driven dynamic-channel thread handles a virtual-channel CLOSE_REQUEST by running dvcman_channel_unref -> HashTable_Remove -> channelByIdCleanerFn -> dvcman_channel_free, and this control-channel close branch does not acquire the device-manager loading_lock that the announcement path holds, giving a classic CWE-362 race that produces CWE-416 use-after-free. AddressSanitizer reports an eight-byte heap-use-after-free read of the Write function pointer after dvcman_channel_free; a harness-forced same-size reclamation showed a controlled indirect call, but that replacement was created by the local test harness and server-directed replacement contents plus a live USB hotplug race have not been shown. The device-channel variant is serialized by a separate lock and is not affected. Validation found the same unreferenced lookup, announcement write and close/free path in the 3.27.1, 3.28.0, 3.31.1 and 3.32.0 sources, but source history did not establish an introducing or fixing commit.

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 6.0 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Network-reachable malicious server but a timing race gives AC:H; victim must connect and enable USB redirection so UI:R; impact is client crash only, hence C:N/I:N/A:H.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:P/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
High
Attack Requirements
Present
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
MEDIUM 6.0

DescriptionCVE.org

FreeRDP before 3.32.2 contains a use-after-free in the urbdrc USB redirection channel because FindChannelById returns a channel pointer without a reference and the control-channel close path does not take the device manager's loading_lock. A malicious RDP server can send a control-channel CLOSE_REQUEST while the client announces a USB device, freeing the channel before the announcement thread reads channel->Write and crashing the client.

Threat Intelligence Overview

Prevalence
High
de facto open-source RDP client embedded in Remmina, GNOME and many Linux 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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Race conditions occur when multiple concurrent requests exploit the brief time gap between checking a condition and acting upon it (TOCTOU - Time of Check, Time of Use).

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