Skip to main content

FreeRDP CVE-2026-121396

| EUVDEUVD-2026-115928 MEDIUM
Reachable Assertion (CWE-617)
2026-11-03 VulnCheck GHSA-q6j5-jc7p-hf9x
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Victim connects through attacker-controlled RD Gateway
  2. Delivery
    Gateway completes NTLM challenge exchange
  3. Exploit
    Send crafted RTS PDU with inconsistent auth padding
  4. Execution
    Padding assertion fails in rts_read_auth_verifier
  5. Impact
    Client 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

FreeRDP 3.0.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 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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/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
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
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
MEDIUM 5.3

DescriptionCVE.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

Prevalence
High
de-facto open-source RDP client, widely bundled across Linux and embedded clients
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
High
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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