Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain certificate chaining to client-trusted CA
-
DeliveryGain on-path MITM position on RDP TCP connection
-
ExploitPresent crafted CN/SAN certificate to FreeRDP client
-
ExecutionBypass tls_verify_certificate identity check silently
-
ImpactRelay and intercept full RDP session (keystrokes, clipboard, screen, input injection)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
|
| Exploitation Conditions | Exploitation requires BOTH an on-path man-in-the-middle position on the RDP TCP connection AND possession of a certificate that chains to a CA the FreeRDP client already trusts (a misissuing public CA, or a compromised/rogue/private CA). Given that, two concrete trigger paths exist: Case 2 - a leaf certificate whose Common Name equals the target hostname while its dNSName SAN entries are all non-matching, because FreeRDP consults CN via an unconditional OR even when SAN entries are present (violating RFC 6125 §6.4.4); and Case 3 - an IP-literal target (e.g. 127.0.0.1) matched as a plain string against a CN or DNS-type SAN equal to that IP, because FreeRDP never reads true iPAddress SAN entries. Limiting factors: the attacker cannot bypass a validly-issued, correctly-scoped certificate - the attack depends specifically on trust-chain anomalies (misissuance, rogue/private CA); affected versions are FreeRDP <= 3.32.1, fixed in 3.32.2; AutoDenyCertificate=TRUE is never consulted because hostname_match is wrongly set, so no non-default hardening setting mitigates it. Vendor remediation is to update to 3.32.2 (the advisory's direction is to delegate identity validation to OpenSSL's X509_check_host()/X509_check_ip_asc()). |
| Impact | The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N, VC:H/VI:H/VA:N) and the act_now priority label both point to a genuinely serious identity-verification bypass, but the real-world risk is gated by a specific precondition rather than being a trivial remote break. AC:H and AT:P correctly capture that the attacker needs two things that are not under their sole control: an on-path (MITM) position on the RDP TCP connection AND a certificate that chains to a CA the FreeRDP client already trusts (a misissuing public CA, or a compromised/rogue/private CA). It is NOT a no-precondition bypass of a correctly-issued, correctly-scoped certificate. PR:N is accurate - no authentication to FreeRDP itself is required. No EPSS score is provided in the input, and there is no CISA KEV listing, so the exploitation signal rests on the VulnCheck/GHSA PoC and the act_now decision label rather than on observed in-the-wild activity. The most notable risk amplifier is that this is an incomplete-fix case: GHSA-43hh-p3vw-hfx3's metadata claims these cases were fixed in 3.29.0, but the advisory demonstrates Cases 2 and 3 remained byte-identical and unpatched - meaning defenders who believed they were already protected are not. Net: a real priority within environments that use private/enterprise CAs or are exposed to CA-misissuance, given per the act_now label, but lower spray-and-pray risk than the 9.1 headline alone would suggest because of the trusted-CA-certificate precondition. |
| Exploit ScenarioDerived | An attacker on the network path between an RDP client and server (e.g. via ARP/DNS spoofing or a malicious relay) presents a TLS certificate that chains to a CA the FreeRDP client already trusts, crafted so that either its Common Name equals the target hostname while the SAN lists only non-matching names (Case 2), or its CN/DNS-SAN string equals the target IP literal (Case 3). FreeRDP's tls_verify_certificate() wrongly sets hostname_match=TRUE and silently accepts the connection with no prompt, letting the attacker fully intercept the session - screen content, keystrokes, clipboard, and input injection. A detailed PoC/reproduction is documented in the GHSA advisory, though it is a direct-function reproduction harness rather than a published end-to-end network exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
FreeRDP clients through 3.32.1 silently accept a server certificate whose identity does not match the RDP target, letting an on-path attacker impersonate the RDP server and read or alter the session - keystrokes, clipboard, screen content, and injected input - without any client-side prompt. The defect is an incomplete fix for GHSA-43hh-p3vw-hfx3: tls_verify_certificate() still consults the Common Name via an unconditional OR even when non-matching dNSName SAN entries are present, and still matches IP-literal targets as plain strings against CN/DNS entries because true iPAddress SANs are never parsed. FreeRDP 3.32.2 is the vendor-fixed release; a detailed public proof-of-concept reproduction exists at function level with isolating control cases (not demonstrated end-to-end over a live RDP handshake), no confirmed active exploitation (not in CISA KEV), and the issue carries an act_now priority label - but exploitation is gated on both an on-path position and a certificate chaining to a CA the client already trusts (misissuance, or a rogue/private CA).
RemediationAI
Vendor-released patch: FreeRDP 3.32.2. Upgrade any client at or below 3.32.1 to 3.32.2 or later, per the advisory at https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-jq25-3374-4262. There is no configuration workaround: the assessment confirms that hostname_match is wrongly set to TRUE, so AutoDenyCertificate=TRUE and AuthenticationLevel=2 are never consulted and no non-default hardening setting mitigates the bug. Because the attack requires a certificate chaining to a CA in the client's trust store, the only meaningful interim risk reduction is shrinking that precondition - remove public root CAs from the FreeRDP client's trust store and pin or restrict trust to the organization's own CA, so a misissued public certificate cannot satisfy the chain check; this breaks any deployment that legitimately connects to servers using public-CA certificates and does nothing against a compromised private CA, so it is a stopgap, not a fix. RDP traffic carried inside a VPN or SSH tunnel with a trusted endpoint raises the cost of the on-path requirement but does not repair the identity check itself. Verify the 3.32.2 build actually adopts the vendor's stated direction of delegating validation to OpenSSL X509_check_host()/X509_check_ip_asc() rather than another partial hand-rolled fix, given that the 3.29.0 release shipped an incomplete remediation for the parent advisory.
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 root cause is CWE-295 (improper certificate validation) inside libfreerdp/crypto/tls.c and libfreerdp/crypto/x509_utils.c, reached from the client TLS handshake path at tls.c:1093. tls_verify_certificate() computes hostname_match as the OR of a Common Name check (x509_utils_get_common_name() fed to tls_match_hostname()) and a loop over dNSName SAN entries; there is no RFC 6125 §6.4.4 rule making the CN irrelevant once any dNSName SAN is present, so CN=<target> with an all-non-matching SAN list still yields a match (Case 2). Separately, x509_utils_get_dns_names() calls map_subject_alt_name(xcert, GEN_DNS, ...) and extract_string_generic()'s switch silently skips every type other than GEN_URI/GEN_DNS/GEN_EMAIL, so GEN_IPADD (iPAddress) SAN entries are never read by any code path; when the RDP target is an IP literal FreeRDP therefore matches that literal as a string against CN or a DNS-type SAN, and a certificate with SAN=DNS:127.0.0.1 and no real iPAddress entry is accepted (Case 3). Of the three commits shipped in 3.29.0 for the original advisory, af7f2280f only tightens wildcard depth, c5a7325f1 only restricts accepted X.509 purposes to X509_PURPOSE_SSL_SERVER, and b7db8d222's check_string_is_host_or_ip() only fixes the embedded-NUL truncation case; the OR-logic block and the missing GEN_IPADD handling are byte-identical from the 3.29.0 tag through current HEAD. The vendor's stated remediation direction is to delegate identity validation to OpenSSL's X509_check_host()/X509_check_ip_asc(), which already implement both missing behaviors.
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:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network MITM with no auth to the client (PR:N, UI:N), but AC:H because the attacker must hold a certificate chaining to a client-trusted CA; full session confidentiality/integrity loss (C:H/I:H), no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
FreeRDP before 3.32.2 contains an improper certificate validation vulnerability in tls_verify_certificate() that accepts Common Name fallback despite non-matching SAN entries and matches IP literals against DNS strings. Man-in-the-middle attackers holding a certificate from a client-trusted CA can bypass server identity checks to intercept RDP sessions, including keystrokes, clipboard, and screen content.
Executive ViewAI
A critical vulnerability in FreeRDP clients up to 3.32.1 allows an on-path attacker to impersonate an RDP server without triggering client-side warnings, potentially exposing keystrokes, clipboard data, screen content, and allowing input injection during RDP sessions. Organizations relying on FreeRDP for remote access are at risk of session hijacking and data theft, though exploitation requires a network man-in-the-middle position and a certificate that chains to a trusted root, reduces the likelihood of widespread opportunistic attacks but still warrants urgent remediation for high-value targets.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-115924
GHSA-j5xv-pp35-jwf5
NVD
CVE.org
Exploit-DB