Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to FreeRDP shadow server
-
DeliveryComplete audin/rdpgfx DVC channel creation
-
ExploitSend drdynvc DATA PDU with zero-length payload
-
ExecutionReader loops without consuming queued message
-
ImpactCPU core exhaustion until client disconnects
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
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 | Requires an authenticated RDP session (PR:L) to a FreeRDP shadow server specifically (e.g. freerdp-shadow-cli), not an ordinary FreeRDP client deployment. The server must have opened the dynamic virtual channel and the client must complete channel creation on audin (started per-client by stock shadow) or rdpgfx (started when graphics is negotiated); an unknown or unopened channel never reaches the vulnerable queue. The attacker must emit a drdynvc DATA PDU with a valid channel ID and zero-length payload - which the stock xfreerdp client refuses to produce, so a modified client or post-serialization PDU shaper (as in the advisory PoC) is required. Limiting factors: valid credentials needed, shadow-server deployment mode required, only audin/rdpgfx readers are reachable in stock shadow (ainput, disp, echo, telemetry and others use the same pattern but are not started), and the spin ends immediately on client disconnect. |
| Impact | This is a genuine but bounded availability risk, not a widespread emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the 7.1 score are driven entirely by availability impact (VC:N/VI:N/VA:H) - the advisory explicitly states no crash, memory corruption, or disclosure was demonstrated, so confidentiality and integrity are untouched. PR:L confirms the attacker must be an authenticated RDP client, which meaningfully limits exposure versus an unauthenticated flaw. No EPSS score and no CISA KEV entry were provided in the input, so there is no evidence of active exploitation; the only exploitation signal is the detailed proof-of-concept bundled in the vendor GHSA advisory. The vuln.today decision label is 'this_week' (not act_now/emergency), consistent with an authenticated, impact-limited DoS. A notable caveat: the impact is CPU exhaustion of one-to-two cores per malicious session (measured ~1 and ~2 cores for audin and rdpgfx respectively), and the advisory states no many-session exhaustion test was run - so full-server denial of service at scale is plausible but unverified. Overall this warrants prompt patching where FreeRDP shadow server is deployed, but it is a lower-urgency, availability-only issue rather than a drop-everything critical. |
| Exploit ScenarioDerived | An authenticated user connects to a FreeRDP shadow server (freerdp-shadow-cli), lets the server open the audin and/or rdpgfx dynamic channels, then sends a drdynvc DATA PDU carrying a valid channel ID but zero application payload. The server queues the empty message, FreeRDP_WTSVirtualChannelRead never consumes it, and the reader thread spins a full CPU core until the client disconnects. A complete proof-of-concept - an LD_PRELOAD PDU shaper plus a loopback runner - is published in the vendor advisory, since the stock xfreerdp client refuses to send zero-length DVC writes and must be mutated post-serialization. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
CPU exhaustion in FreeRDP's shadow server (through 3.32.1) lets an authenticated RDP client pin roughly one to two server CPU cores by sending drdynvc DATA PDUs that carry a valid dynamic-channel ID but zero application payload on the audin or rdpgfx channels; the shadow reader never consumes the zero-byte message and loops until the client disconnects. Only shadow-server deployments such as freerdp-shadow-cli are affected - not ordinary FreeRDP client installations - and because the stock xfreerdp client refuses to serialize a zero-length DVC write, exploitation requires a modified client or a post-serialization PDU shaper. There is no CISA KEV entry and no confirmed active exploitation; a public PoC reference exists in the form of the advisory's LD_PRELOAD shaper and loopback runner, but the input does not record it as confirmed working exploit code. No crash, memory corruption or data disclosure was demonstrated, and the advisory's own testing did not include a many-session exhaustion run.
RemediationAI
Vendor-released patch: upgrade to FreeRDP 3.32.2, which addresses the zero-length drdynvc DATA handling that leaves the shadow-server read queue permanently signaled - see the advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-fqcj-rwww-2498. Until the upgrade can be applied, the practical compensating controls all carry trade-offs on a shadow server: restrict who can reach the shadow listener (network ACLs, VPN or jump-host placement) so only fully trusted, credentialed operators can open an RDP session, accepting that the flaw remains reachable for any admitted client; monitor shadow-server processes for sustained single- or dual-core CPU burn in threads associated with a connected session and terminate the offending session, which immediately ends the spin but disrupts that user's session and requires active monitoring rather than prevention; and avoid exposing the shadow server to broad or untrusted client populations where a modified client could be introduced. Note that the stock xfreerdp client cannot emit the malformed zero-length DVC write, so the attacker must control the client implementation, but this is not a defensible restriction against a determined party.
Affected VersionsENISA
Affected Packages
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
The flaw is an uncontrolled resource consumption / infinite-loop condition (CWE-400, CWE-835) in FreeRDP's dynamic virtual channel (drdynvc) server-side plumbing. In libfreerdp/core/server.c, wts_read_drdynvc_data() queues a DATA payload even when Stream_GetRemainingLength(s) is zero, so a PDU consisting only of the command byte plus channel ID produces a zero-byte wtsChannelMessage. FreeRDP_WTSVirtualChannelRead() peeks at the queue with removal disabled and returns success for a length query without dequeuing the empty head, leaving the queue event permanently signaled; the audin and rdpgfx readers, which query this way and interpret zero returned bytes as no data, then spin. Stock shadow starts audin per client and rdpgfx when graphics is negotiated, so both are reachable; the same reader pattern exists in ainput, disp, location, echo, telemetry, rdpemsc, rdpecam and the unused drdynvc server plugin, but stock shadow does not start those readers. Encomsp has a related zero-length static-channel variant when joined, while rdpsnd and rdpei consume empty messages through non-null reads and are unaffected. The vulnerability requires an already-established dynamic channel: the server must have opened the DVC and the client must complete channel creation, so an unknown or unopened channel never reaches the queue.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable (AV:N), low complexity once a client exists (AC:L), but requires an authenticated RDP session (PR:L); impact is availability-only CPU exhaustion (A:H, C:N/I:N) with no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
FreeRDP before 3.32.2 contains a denial of service vulnerability in the shadow server that allows authenticated RDP clients to spin server threads by sending zero-length drdynvc DATA PDUs. Attackers can send empty DATA messages on opened audin or rdpgfx channels, so that FreeRDP_WTSVirtualChannelRead never consumes them, consuming full CPU cores until disconnect.
Technical POC Analysis
CWE-400 (Uncontrolled Resource Consumption), with the advisory also tagging CWE-835 (unreachable exit loop).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
FreeRDP's shadow server (versions through 3.32.1) is vulnerable to a denial-of-service condition where a malicious authenticated RDP client can consume 1-2 CPU cores per connection, potentially exhausting server resources and disrupting remote support sessions. Only organizations hosting FreeRDP shadow servers (e.g., freerdp-shadow-cli) are affected, not standard client installations. Leadership should prioritize patching or mitigating shadow server deployments that support external or untrusted users.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting shadow-server access to trusted networks, disabling audin and rdpgfx dynamic channels where not required, deploying a network filter to drop zero-length DVC writes, enforcing session concurrency limits, and monitoring CPU usage for anomalous spikes.
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
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Use-after-free in FreeRDP xf_clipboard_format_equal before 3.23.0. Clipboard format comparison uses freed memory. Fifth
Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Surface-to-window update triggers memory corrupti
Use-after-free in FreeRDP xf_SetWindowMinMaxInfo before version 3.23.0. X11 client window management triggers memory cor
Use-after-free in FreeRDP xf_cliprdr_provide_data clipboard handling before 3.23.0. Clipboard data exchange triggers mem
FreeRDP IRP thread handler has a use-after-free where the IRP is freed by Complete() then accessed on the error path. Fi
FreeRDP drive read heap overflow when server-controlled read length exceeds IRP output buffer. Fixed in 3.20.1. PoC avai
FreeRDP client before 3.20.1 has a heap buffer overflow in AUDIN format processing. A malicious RDP server can corrupt m
Use-after-free in FreeRDP xf_AppUpdateWindowFromSurface before 3.23.0. Different code path from CVE-2026-25953. PoC and
FreeRDP is a free implementation of the Remote Desktop Protocol. Rated critical severity (CVSS 9.8), this vulnerability
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Rated critical
EUVD-2026-115936
GHSA-26v7-mr7m-fqqx
NVD
CVE.org
Exploit-DB