CVE-2026-67293 Overview
CVE-2026-67293 is an improper certificate hostname validation vulnerability in FreeRDP versions at or below 3.28.0. The TLS hostname matcher tls_match_hostname() in libfreerdp/crypto/tls.c treats a wildcard pattern such as *.example.com as matching any hostname ending in .example.com. This behavior incorrectly accepts a wildcard certificate for multi-label subdomains like a.b.example.com, which OpenSSL's X509_check_host() correctly rejects. The flaw weakens TLS server authentication whenever a wildcard certificate is in use. The issue is tracked under [CWE-295: Improper Certificate Validation].
Critical Impact
An attacker holding a valid wildcard certificate for a single-label subdomain can impersonate arbitrary multi-label subdomains, enabling man-in-the-middle interception of FreeRDP TLS sessions.
Affected Products
- FreeRDP versions less than or equal to 3.28.0
- FreeRDP builds using the bundled tls_match_hostname() function in libfreerdp/crypto/tls.c
- Downstream RDP clients that statically link or vendor affected FreeRDP releases
Discovery Timeline
- 2026-08-01 - CVE-2026-67293 published to NVD
- 2026-08-05 - Last updated in NVD database
Technical Details for CVE-2026-67293
Vulnerability Analysis
The defect resides in FreeRDP's custom TLS hostname matcher. When validating a server certificate, tls_match_hostname() compares the peer's presented hostname against the Subject Alternative Name (SAN) or Common Name (CN) entries in the certificate. For a wildcard pattern such as *.example.com, the function reduces the check to a suffix match on .example.com. Any hostname ending with that suffix is accepted, regardless of how many labels precede the wildcard position.
RFC 6125 and OpenSSL's X509_check_host() require the wildcard * to match exactly one DNS label. Under those rules, *.example.com matches host.example.com but not a.b.example.com. FreeRDP's implementation bypasses this constraint, expanding the effective scope of every wildcard certificate presented to the client.
Root Cause
The root cause is a permissive suffix comparison substituted for a label-aware wildcard match. Rather than delegating to OpenSSL's certified hostname verification API, FreeRDP reimplemented the logic and dropped the label-boundary requirement. The function accepts additional dot-separated labels between the wildcard and the fixed suffix, violating the certificate profile expected by any compliant certificate authority.
Attack Vector
Exploitation requires a network-adjacent attacker capable of intercepting or redirecting RDP traffic, for example through DNS spoofing, ARP poisoning, or a compromised upstream router. The attacker presents a wildcard certificate legitimately issued for one subdomain of a target zone, then serves it while impersonating an unrelated multi-label host within that zone. FreeRDP accepts the certificate, completes the TLS handshake, and forwards user credentials and session data to the attacker-controlled endpoint.
Code examples in the linked patch commit address related path-handling hardening in the same release; the specific TLS matcher fix is described in the GitHub Security Advisory GHSA-5wr6-8m8j-3h7f.
Detection Methods for CVE-2026-67293
Indicators of Compromise
- RDP client connections completing to hostnames whose FQDN contains two or more labels beneath the wildcard scope of the presented certificate.
- Certificates observed on RDP ports where the SAN wildcard label does not directly match the connected hostname's leftmost label.
- Unexpected TLS session establishment to internal RDP hosts from clients running FreeRDP builds at or below 3.28.0.
Detection Strategies
- Inspect RDP TLS handshakes with a network sensor and flag sessions where the server certificate's wildcard SAN does not match the connected hostname under RFC 6125 label rules.
- Inventory FreeRDP binaries across managed endpoints and identify versions less than or equal to 3.28.0 via package metadata or embedded version strings.
- Correlate DNS resolution anomalies (recently created records, rapid TTL changes) with subsequent RDP connections from FreeRDP clients.
Monitoring Recommendations
- Log and retain full RDP TLS handshake metadata, including certificate chains, in the SIEM for retrospective hunting.
- Alert on RDP sessions where the negotiated server hostname differs from the certificate's leftmost SAN label in structure.
- Track outbound RDP connections that terminate at addresses outside the enterprise's authorized RDP infrastructure ranges.
How to Mitigate CVE-2026-67293
Immediate Actions Required
- Upgrade FreeRDP to version 3.29.0 or later on every managed system that ships or bundles the client.
- Audit third-party software that vendors FreeRDP and apply vendor updates as they become available.
- Restrict RDP client egress to known, trusted RDP gateway hosts using firewall or Zero Trust policy.
Patch Information
FreeRDP 3.29.0 corrects tls_match_hostname() behavior. Refer to the upstream fix in the FreeRDP GitHub repository and the VulnCheck Advisory for release details and downstream package tracking.
Workarounds
- Where upgrade is not immediately possible, avoid connecting to RDP servers protected only by wildcard certificates and require full-hostname certificates for TLS termination.
- Pin server certificates by fingerprint in FreeRDP's known_hosts store to prevent silent acceptance of a substituted wildcard certificate.
- Route RDP traffic exclusively through an authenticated RD Gateway or VPN tunnel to remove attacker positioning on the client-to-server path.
# Verify installed FreeRDP version and enforce known_hosts pinning
xfreerdp --version
# Store trusted server certificate fingerprints in the per-user known_hosts file
cat ~/.config/freerdp/known_hosts2
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

