Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to FreeRDP shadow server
-
ExploitJoin remdesk virtual channel
-
ExecutionSend 8192-byte PDU declaring 8-byte length
-
ImpactTrigger fatal Stream_Seek assertion, abort server and drop sessions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | The attacker must (1) authenticate to the FreeRDP shadow server with valid credentials - the CVSS PR:L confirms authentication is required, and the server only enables the remdesk channel after an authenticated client joins it - and (2) join the remdesk static virtual channel and write an 8192-byte payload whose eight-byte header declares a PDU length of 8. Exploitation is further LIMITED to deployments actually running the FreeRDP shadow-server mode (freerdp-shadow-cli), and to default assertion-enabled builds: per the advisory's source review, an assert-disabled NDEBUG build reaches a guarded channel error instead of aborting, so such builds are not crashed. No user interaction is required (UI:N) and the attack is network-reachable with low complexity (AV:N/AC:L). |
| Impact | This is a genuine but moderate-priority availability issue rather than a high-urgency threat. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the equivalent base severity 7.1 describe a network-reachable, low-complexity flaw that nonetheless requires an authenticated client (PR:L) and impacts availability only (VA:H; VC:N/VI:N). The GHSA advisory and VulnCheck confirm the mechanism, and the advisory itself contains working reproduction code with documented crashes (process exit status 134 on both stock and ASan builds), so a usable trigger is public. However, the input provides NO EPSS score and the CVE is NOT in CISA KEV, so there is no confirmed active exploitation - exploitation is at most demonstrated in a lab, not observed in the wild. The vuln.today decision label is 'this_week' (not act_now/emergency), consistent with an authenticated, availability-only bug. Two factors meaningfully lower real-world risk below the raw score: exploitation requires valid credentials to the shadow server AND the affected component is the FreeRDP shadow-server mode specifically, not the far more common client/library usage. One important nuance: per source review, only default assertion-enabled builds abort; NDEBUG assert-disabled builds reach a guarded channel error instead - so impact is build-dependent and should be verified against your deployment. Net: patch this week on any exposed shadow-server deployment, but this is not a wormable, unauthenticated, or RCE-grade emergency. |
| Exploit ScenarioDerived | An authenticated RDP client holding valid shadow-server credentials connects to a FreeRDP shadow server, joins the remdesk static virtual channel, and sends an 8192-byte payload whose first eight bytes declare a total PDU length of eight. The inverted framing check (PduLength >= Stream_GetPosition) leaves the stream at capacity, so the subsequent Stream_Seek triggers a fatal WinPR assertion that aborts the server and drops all active sessions. The GHSA advisory ships full reproduction code and documents successful crashes, but exploitation first requires authentication (PR:L) and low attack complexity (AC:L). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Any client that can authenticate to a FreeRDP shadow server (freerdp-shadow-cli) can abort the server process and drop every active session by joining the remdesk static virtual channel and writing an 8192-byte payload whose eight-byte header declares a total PDU length of eight. FreeRDP versions up to and including 3.32.1 are affected; 3.32.2 fixes the inverted completeness comparison and the buffer management across fragmented PDUs. Exploitation requires valid credentials and the remdesk channel to be joined (CVSS PR:L), and the abort has only been demonstrated on default assertion-enabled builds - source review shows an assert-disabled NDEBUG build falls through to a guarded channel error instead of crashing. Impact is availability-only: no memory corruption, information disclosure, or code execution was demonstrated. No confirmed public exploit code exists, though the vendor advisory publishes a working LD_PRELOAD reproducer, and there is no KEV listing for this CVE.
RemediationAI
Upgrade FreeRDP to 3.32.2, which is the version recorded as fixing this issue; the patch must correct the PDU completeness comparison and also manage stream buffer capacity across fragmented PDUs, so deployments carrying local backports should verify both changes are present rather than flipping the comparison alone. The vendor advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-x8vp-ff7m-294g is the authoritative reference for the fix. Because the abort path terminates in a WinPR assertion, compiling the shadow server with assertions disabled (NDEBUG) was observed in source review to degrade the malformed input to a guarded channel error instead of a process abort - this is a partial mitigation only, it was not validated with a full binary test, it changes build behavior broadly, and it leaves the underlying inverted length check in place. Independently of the patch, exposure is bounded by the authentication prerequisite: the remdesk channel is only enabled after a client successfully authenticates, so restricting shadow-server reachability and the set of credentials that can reach it limits who can trigger the crash, but it does not remove the flaw for legitimate or compromised accounts.
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 remdesk static virtual channel carries Remote Assistance ticket data between an RDP client and the FreeRDP shadow server, and the server-side handler runs in remdesk_server_thread using WinPR's wStream (winpr/stream.h) buffering primitives. The handler reads incoming PDU fragments into a fixed 4096-byte stream and advances the write cursor with Stream_Seek, using the framing test PduLength >= Stream_GetPosition(s) to decide whether a PDU is complete. That comparison is inverted: a payload that declares a tiny length (eight bytes) while actually delivering 8192 bytes makes the completeness test fail after the first 4096-byte read, even though the stream is already at capacity. The second read copies the trailing data over the stream's allocation base - safe per the advisory's ASan run - but the following Stream_Seek finds zero remaining capacity and fires a fatal WinPR assertion, aborting the process (exit status 134). This maps to CWE-20 (improper validation of the declared length) compounded by CWE-617 (reachable assertion), i.e. an input-validation defect whose consequence is amplified into a hard process abort by an assertion in the stream API rather than by any memory-safety failure. Source inspection found the same loop in 3.32.0 and in the assessed 3.32.1-dev0 revision; the flaw lives in the shadow-server component only, which enables remdesk after an authenticated client joins the channel, and the trigger is not described in the available sources for any other deployment mode.
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
Authenticated client required (PR:L) over a network channel with low complexity (AV:N/AC:L), causing only an availability loss via process abort (A:H); no confidentiality or integrity impact and 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's remdesk_server_thread that allows authenticated clients to crash the process via an inverted PDU length check. Attackers can send an 8192-byte remdesk payload declaring an eight-byte PDU length to trigger a fatal Stream_Seek assertion, aborting the server and dropping sessions.
Technical POC Analysis
CWE-20 (Improper Input Validation), with CWE-617 (Reachable Assertion) as the mechanism that converts the bad input into a process abort.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity vulnerability in FreeRDP's shadow server (freerdp-shadow-cli) allows any authenticated user with remdesk channel access to crash the server, terminating all active sessions and disrupting remote support or collaboration services. This availability-only flaw affects organizations using FreeRDP up to version 3.32.1, and while no active exploitation has been confirmed, a vendor-provided reproducer exists, making it a realistic risk for insider or credential-compromised scenarios.
Apply vendor patch: upgrade to FreeRDP 3.32.2. If immediate patching is not possible, run NDEBUG builds to avoid the assert-triggered crash, restrict remdesk channel access to trusted users, and monitor for abnormal session terminations.
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-115939
GHSA-m4pj-hpxh-pqp3
NVD
CVE.org
Exploit-DB