Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-67293

CVE-2026-67293: FreeRDP Certificate Validation Vulnerability

CVE-2026-67293 is an improper certificate hostname validation flaw in FreeRDP that weakens TLS authentication by incorrectly matching wildcard certificates. This post covers technical details, affected versions, and mitigation.

Published:

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.
bash
# 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.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.