Skip to main content

FreeRDP Shadow Server CVE-2026-121407

| EUVDEUVD-2026-115939 HIGH
Improper Input Validation (CWE-20)
2026-11-03 VulnCheck GHSA-m4pj-hpxh-pqp3
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to FreeRDP shadow server
  2. Exploit
    Join remdesk virtual channel
  3. Execution
    Send 8192-byte PDU declaring 8-byte length
  4. Impact
    Trigger 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).

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

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

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

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

Vendor (VulnCheck) PRIMARY 7.1 HIGH
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
vuln.today AI 6.5 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/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
Low
User Interaction
None
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 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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

Prevalence
Medium
FreeRDP widely used, but vulnerable shadow-server mode is a niche deployment
Data Quality
3 sources
Confidence: Low

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
High

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