Skip to main content

FreeRDP EUVDEUVD-2026-115924

| CVE-2026-121392 CRITICAL
Improper Certificate Validation (CWE-295)
2026-11-03 VulnCheck GHSA-j5xv-pp35-jwf5
9.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain certificate chaining to client-trusted CA
  2. Delivery
    Gain on-path MITM position on RDP TCP connection
  3. Exploit
    Present crafted CN/SAN certificate to FreeRDP client
  4. Execution
    Bypass tls_verify_certificate identity check silently
  5. Impact
    Relay 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available

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

Alert me

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

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

Vendor (VulnCheck) PRIMARY 9.1 CRITICAL
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
vuln.today AI 7.4 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
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:27 cve.org
CRITICAL 9.1

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
High
core open-source RDP client library embedded in many Linux remote-desktop clients
Data Quality
4 sources
Confidence: Medium

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 CRITICAL
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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