Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim connects through attacker-controlled RD Gateway
-
DeliveryGateway completes NTLM challenge exchange
-
ExploitSend crafted RTS PDU with inconsistent auth padding
-
ExecutionPadding assertion fails in rts_read_auth_verifier
-
ImpactClient process aborts (SIGABRT, denial of service)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V16 - Security Logging and Error Handling Reachable assertion handling
|
| Exploitation Conditions | Exploitation requires ALL of: (1) the FreeRDP client binary was compiled with WITH_VERBOSE_WINPR_ASSERT=ON - this is not the default for release-style builds, and with it disabled the same packet is rejected cleanly via the ordinary connection-error path with no crash; (2) the victim configures and initiates a client connection through an RD Gateway (type:rpc, RPC-over-HTTP) that the attacker operates, or that the attacker can MITM using a gateway certificate the client accepts; and (3) the vulnerable path is reached only by client-role processes - FreeRDP server, proxy, and shadow roles never enter the gateway RTS parser and are unaffected. No privilege on the client is required (PR:N), but the victim-initiated gateway connection is a mandatory user-interaction gate, and the non-default build option is the dominant real-world limiting factor. |
| Impact | This is a genuinely low-to-medium real-world risk despite a network attack vector. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L, score 5.3) and the GHSA's suggested 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, 6.5) agree on the core mechanism - a single deterministic packet, no privilege, but required user interaction - and disagree only on availability magnitude (VA:L vs A:H), reflecting that the impact is confined to aborting one connecting client process. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a non-urgent but real issue. Three strong limiting signals suppress real-world risk: (1) the crash only occurs on builds compiled with WITH_VERBOSE_WINPR_ASSERT=ON, which is NOT the default for release-style builds - with it disabled the malformed packet is rejected through the normal connection-error path; (2) the attacker must operate (or MITM with an accepted certificate) the exact RD Gateway the victim configures; and (3) only client-role processes are affected - server, proxy, and shadow roles never enter this parser. No EPSS score and no KEV status were provided in the input, so widespread-exploitation probability cannot be quantified from the data here; absence of KEV means no confirmed active exploitation. A public proof-of-concept reproducer is published in the GHSA advisory. CWE-617 (reachable assertion) and the impact classification confirm this is a pure denial of service with no memory corruption, data disclosure, or code execution. |
| Exploit ScenarioDerived | An attacker who controls or can impersonate (via an accepted gateway certificate) the RD Gateway a user has configured waits for the victim to initiate an RDP connection through that gateway. After completing the HTTP NTLM challenge exchange, the gateway sends one crafted RPC-over-HTTP RTS PDU whose declared fragment/auth lengths pass header checks but whose authentication padding byte is inconsistent, aborting the client process. A working PoC reproducer (Python + OpenSSL + Xvfb against an assert-enabled xfreerdp build) is published in the advisory, but exploitation only crashes clients built with verbose WinPR assertions enabled. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Remote denial of service against FreeRDP client processes in versions 3.0.0 through 3.32.1: an attacker who operates (or intercepts with an accepted certificate) the Remote Desktop Gateway a user connects through can send a single crafted RPC-over-HTTP RTS PDU whose authentication padding contradicts the lengths declared in the header, tripping a reachable assertion in rts_read_auth_verifier and aborting the client. The abort is only reachable in builds compiled with WITH_VERBOSE_WINPR_ASSERT=ON, which is not the default for release-style builds; with the option disabled the same packet is rejected through the ordinary connection-error path with no crash, and FreeRDP server, proxy and shadow roles never enter this parser. No confidentiality or integrity impact and no memory corruption is involved, exploitation requires the victim to initiate the gateway connection (PR:N but user interaction required), and no in-the-wild exploitation has been confirmed; a public PoC reference exists in the form of an inline reproducer published in the upstream advisory, and it is not independently verified here as working exploit code.
RemediationAI
Upgrade to FreeRDP 3.32.2 or later, which is the fixed version identified in the package metadata and the advisory range; the underlying fix is to stop using an assertion to reject peer-controlled protocol input, keep the padding equality as an ordinary conditional and return a parse failure when the peer padding does not match the header-derived value, while preserving current safe behavior when verbose assertions are off. Where an immediate upgrade is not possible, the most direct compensating control is to rebuild the client with WITH_VERBOSE_WINPR_ASSERT=OFF, which removes the abort and restores clean rejection of the malformed PDU - at the cost of losing assertion-based diagnostics in development builds. Because exploitation requires the attacker to control or intercept the configured RD Gateway, restricting users to a known, tightly scoped gateway with certificate validation pinned to an expected certificate (rather than /cert:ignore or blanket trust) removes the MITM path, though a hostile gateway operator remains able to abort such clients until patched. Regression coverage should include the CANCEL_ACK padding mismatch and the auth_length == frag_length - 8 verifier edge case on both assert-enabled and assert-disabled builds, with valid-padding PDUs continuing to parse normally.
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 a CWE-617 reachable assertion in FreeRDP's RDP Gateway RPC-over-HTTP transport. In rts_read_auth_verifier the parser derives the expected padding as header->frag_length - header->auth_length - 8, compares it against the peer-supplied auth_pad_length, asserts equality via WINPR_ASSERT, and then returns the same comparison as a Boolean. In the reproduced CANCEL_ACK the fragment length is 32, the authentication length is 1 and the verifier parser starts at byte offset 16, so the expected padding is 7 while the packet carries 0 at offset 25; all preceding length checks pass, so execution reaches the assertion. With WITH_VERBOSE_WINPR_ASSERT=ON, WINPR_ASSERT routes to winpr_int_assert, which aborts the process (SIGABRT); with the option disabled the assertion is compiled out and the false Boolean simply produces a parse failure on the normal error path, with no memory error observed in control runs. Because only FreeRDP client-role processes configured with an RD Gateway (type:rpc) reach this gateway parser, the abort is confined to the connecting client and does not cross into a server or proxy process. The general root-cause class is the use of assertions to validate peer-controlled protocol input rather than ordinary error returns.
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:L/SC:N/SI:N/SA:N
Single deterministic packet gives AC:L and no client privilege gives PR:N; victim must initiate the gateway connection (UI:R); only the one client process aborts so A:L with no C/I impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
FreeRDP clients from 3.0.0 before 3.32.2 built with verbose WinPR assertions contain a reachable assertion in rts_read_auth_verifier triggered by malformed RTS padding. Attackers controlling an RD Gateway can send a crafted RPC-over-HTTP RTS PDU with inconsistent authentication padding to abort the connecting client process.
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-115928
GHSA-q6j5-jc7p-hf9x
NVD
CVE.org
Vulnrichment
Exploit-DB