Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLure victim to malicious RDP server
-
DeliveryNegotiate classic RemoteFX session
-
ExploitInject crafted RemoteFX region (x=65535, dest left=1)
-
ExecutionTrigger 16-bit coordinate assertion in rfx_process_message
-
ImpactAbort FreeRDP client process (availability loss)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V16 - Security Logging and Error Handling Reachable assertion handling
|
| Exploitation Conditions | Exploitation requires ALL of the following: the victim's FreeRDP client must be compiled with WITH_VERBOSE_WINPR_ASSERT=ON (the advisory confirms builds with this flag OFF do not crash - a strong limiting factor, as this is not a typical release default); the user must actively connect to an attacker-controlled or attacker-redirected RDP server (UI:P); and the session must negotiate classic RemoteFX graphics (validated with /sec:rdp +rfx -gfx). The attacker then sends a RemoteFX region rectangle with x=65535 while the RDP SurfaceBits destination begins at left=1, so their sum exceeds the 16-bit coordinate assertion in rfx_process_message. Affected versions are FreeRDP 3.0.0 through 3.32.1; FreeRDP 2.x is not affected. Impact is limited to a crash of the connecting client process only - no server, other-client, data, or memory-corruption impact. Note the server-side -auth flag in the PoC is a reproduction convenience, not a precondition that deployments must disable authentication. |
| Impact | This is a client-side denial-of-service (CWE-617 reachable assertion) whose real-world priority is moderate and heavily gated by build configuration. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H) correctly captures a network-reachable, low-complexity attack with no confidentiality or integrity impact and availability loss confined to a single client process; the attacker supplies the malicious RDP server and needs no credentials of their own, but the victim must actively connect (UI:P). The score of 7.1 overstates operational urgency for two reasons grounded in the advisory: (1) the crash only occurs in clients compiled with WITH_VERBOSE_WINPR_ASSERT=ON - the advisory confirms a build with that flag OFF stayed active against the same malformed packet - and verbose WinPR assertions are not the typical release-build default; and (2) impact is explicitly limited to loss of availability of the connecting client process, with no data disclosure, no memory corruption, and no effect on the server or other clients. VulnCheck assigned a 'this_week' priority and published a validated proof-of-concept, so exploit knowledge is public. No EPSS score is provided in the input, and the CVE is not listed in CISA KEV, so there is no evidence of active exploitation - treat this as a public-PoC availability issue rather than confirmed in-the-wild abuse. Net: a legitimate but non-emergency patch item, most relevant to environments that ship or self-compile assertion-enabled FreeRDP builds. |
| Exploit ScenarioDerived | An attacker stands up (or compromises/redirects a victim to) a malicious RDP server, lures a user into connecting with a FreeRDP-based client that negotiates classic RemoteFX, and then injects a crafted RemoteFX region update. A rectangle with x=65535 combined with a SurfaceBits destination left=1 overflows a 16-bit coordinate check, tripping the assertion in rfx_process_message and terminating the client process. A complete, reporter-validated proof-of-concept relay script is published in the GHSA advisory; it reliably aborts an assertion-enabled client (exit 134) while a control input leaves the client running. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
FreeRDP 3.x clients that decode classic RemoteFX graphics and were compiled with WITH_VERBOSE_WINPR_ASSERT=ON can be aborted by a malicious RDP server that sends a crafted RemoteFX region rectangle, giving the server a client-side denial of service (CWE-617 reachable assertion). The malformed rectangle uses x = 65535 while the RDP SurfaceBits destination starts at left = 1, so their sum no longer fits the 16-bit coordinate the client asserts on in rfx_process_message; builds made with verbose WinPR assertions disabled did not crash on the same packet in the vendor's testing, so real-world exposure is gated by build configuration. Exploitation requires a user to connect to an attacker-controlled or redirected RDP server and negotiate RemoteFX (UI:R, PR:N); impact is limited to loss of availability of the connecting client process, with no data, memory-corruption, server, or other-client impact. The issue is not recorded as actively exploited in CISA KEV, while the upstream advisory does publish a detailed loopback proof-of-concept relay script.
RemediationAI
Vendor-released patch: upgrade FreeRDP to 3.32.2 or later, which is the fixed version listed for the 3.0.0 through 3.32.1 range, per the advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-7qw2-8h66-pvpw. If an immediate upgrade is not possible, the most directly effective compensating control is to rebuild the client with WITH_VERBOSE_WINPR_ASSERT=OFF, which the vendor's testing showed keeps the client alive on the same malformed packet - at the cost of losing verbose WinPR assertion diagnostics that are useful for debugging and for catching other decoder invariants. A second option is to avoid the classic RemoteFX decode path on untrusted connections, for example by not enabling +rfx and using the Graphics Pipeline channel (-gfx / +gfx) instead, since the validated trigger required RemoteFX negotiation; the trade-off is that graphics performance and compatibility may differ on servers that favor RemoteFX. Restricting users to connecting only to trusted, organization-controlled RDP servers reduces exposure to a malicious-server trigger but does not fix the underlying assertion. Note that the -auth option in the vendor's reproduction is a convenience of the isolated test setup, not a signal that disabling authentication is a mitigation, and the test server, relay and client must remain isolated to loopback. FreeRDP 2.x is not affected by this specific abort and is unsupported by the project, so upgrading to 3.32.2 is still the recommended path.
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
FreeRDP is an open-source implementation of the Remote Desktop Protocol, and the flaw sits in the classic RemoteFX (RFX) graphics decoding path, specifically rfx_process_message in libfreerdp/codec/rfx.c. A RemoteFX fastpath SurfaceBits update carries region rectangles whose x, y, width and height fields are 16-bit values; the decoder validates that a rectangle's x offset plus the SurfaceBits destination left coordinate still fits in that 16-bit coordinate space. When a server supplies x = 65535 together with a destination left of 1, that invariant is violated and the WinPR assertion macro fires, calling abort() on the client process. The root-cause class is CWE-617 (Reachable Assertion): this is a debug/consistency check that is compiled into release builds only when WITH_VERBOSE_WINPR_ASSERT=ON, which is why a matched build with assertions disabled stayed alive until the test timeout with the same malformed input, and why the vendor stresses that no data disclosure, data modification, memory corruption, server-side or cross-client impact was demonstrated. The source assertion is present in every inspected stable FreeRDP release from 3.0.0 through 3.32.1; FreeRDP 2.x is outside the project's security policy and the inspected 2.11.8 source does not contain the assertion. The affected package range is therefore >= 3.0.0, <= 3.32.1, fixed in 3.32.2 (CPE cpe:2.3:a:freerdp:freerdp).
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:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Attacker-controlled server needs no own credentials (PR:N) but victim must connect (UI:R); crafted packet deterministically trips the assertion (AC:L); only the client process availability is lost (A:H, C/I:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
FreeRDP from 3.0.0 before 3.32.2 contains a denial of service vulnerability that allows malicious RDP servers to abort clients built with verbose WinPR assertions by sending crafted RemoteFX region rectangles. Attackers can supply a rectangle with x set to 65535 alongside a SurfaceBits destination left of 1, triggering a 16-bit coordinate assertion in rfx_process_message that terminates the client process.
Executive ViewAI
CVE-2026-121393 is a high-severity vulnerability in FreeRDP 3.x clients built with verbose WinPR assertions enabled, allowing a malicious RDP server to crash the client via a crafted RemoteFX packet. This impacts users connecting to untrusted RDP servers, causing client process termination and potential disruption to remote work. Leadership should prioritize patching or mitigate exposure to untrusted RDP endpoints.
No vendor-released patch identified at time of analysis. Interim mitigations: rebuild FreeRDP without WITH_VERBOSE_WINPR_ASSERT=ON; restrict RDP connections to trusted servers; avoid connecting to untrusted RDP endpoints.
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-115925
GHSA-pmj8-2jw3-72qf
NVD
CVE.org
Vulnrichment
Exploit-DB