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

CVE-2026-67299: FreeRDP Use-After-Free Vulnerability

CVE-2026-67299 is a heap use-after-free flaw in FreeRDP client that allows malicious RDP servers to trigger memory corruption and crashes. This post covers technical details, affected versions, and mitigation steps.

Published:

CVE-2026-67299 Overview

CVE-2026-67299 is a client-side heap use-after-free vulnerability in FreeRDP versions before 3.29.0. The flaw resides in the asynchronous update message proxy for WINDOW_ICON_ORDER when AsyncUpdate is enabled, such as when a user runs xfreerdp /async-update. A malicious or compromised Remote Desktop Protocol (RDP) server can send a crafted Remote Application Integrated Locally (RAIL) Window Alternate Secondary Order with WINDOW_ORDER_ICON to trigger memory corruption in the connecting client. The vulnerability is tracked under CWE-416: Use After Free.

Critical Impact

A remote RDP server can corrupt client memory and crash xfreerdp sessions with async updates enabled, disrupting remote desktop availability.

Affected Products

  • FreeRDP versions prior to 3.29.0
  • xfreerdp client when launched with the /async-update flag
  • Applications embedding FreeRDP with AsyncUpdate enabled

Discovery Timeline

  • 2026-08-01 - CVE-2026-67299 published to the National Vulnerability Database (NVD)
  • 2026-08-03 - Last updated in NVD database

Technical Details for CVE-2026-67299

Vulnerability Analysis

The vulnerability affects FreeRDP's asynchronous update pipeline for RAIL window icon updates. When AsyncUpdate is enabled, incoming order parsing runs on the parser thread while dispatch runs on the update thread. FreeRDP queues a copy of the order data so the parser can free its own buffers safely.

In update_message_WindowIcon(), FreeRDP performs a shallow CopyMemory() from the parser-owned windowIcon structure into a freshly allocated lParam. The copy duplicates the outer structure but not the nested iconInfo pointer that it owns. Both structures now reference the same underlying heap allocation.

After the parser callback returns, update_recv_window_info_order() invokes cleanup that frees window_icon.iconInfo. The queued asynchronous message still holds the stale pointer and later dereferences it during dispatch, producing the use-after-free condition.

Root Cause

The root cause is a shallow copy of a structure containing owned heap pointers. The message proxy duplicates the container object but transfers ownership of the inner iconInfo buffer implicitly. When the original parser path frees iconInfo, the queued message retains a dangling reference to the same allocation.

Attack Vector

Exploitation requires a client to connect to an attacker-controlled or compromised RDP server with /async-update enabled. The server sends a crafted RAIL Window Alternate Secondary Order carrying the WINDOW_ORDER_ICON bit. No authentication or user interaction is required beyond initiating the RDP session.

text
// Patch metadata from FreeRDP release-3.28.0
- set(RAW_VERSION_STRING "3.27.2-dev0")
+ set(RAW_VERSION_STRING "3.28.0")

Source: FreeRDP commit 5370fb26. The upstream fix bumps the version and corrects the ownership handling of iconInfo so the async message retains its own copy of the parsed icon data.

Detection Methods for CVE-2026-67299

Indicators of Compromise

  • Unexpected xfreerdp process crashes or SIGSEGV signals following an RDP session establishment
  • Client-side core dumps that reference update_message_WindowIcon or window_icon.iconInfo frames
  • RDP sessions initiated to untrusted or newly observed servers while /async-update is in use
  • Repeated short-lived RDP connections from client hosts followed by process termination logs

Detection Strategies

  • Inventory endpoints running FreeRDP and flag installations with a version lower than 3.29.0
  • Alert on xfreerdp invocations that include the /async-update command-line argument
  • Enable Address Sanitizer (ASan) in test or canary environments to surface the use-after-free during triage
  • Monitor outbound RDP (TCP 3389) connections from workstations to non-corporate destinations

Monitoring Recommendations

  • Collect process crash telemetry from Linux and Windows endpoints running the FreeRDP client
  • Baseline expected RDP destinations and alert on connections to previously unseen external hosts
  • Ingest FreeRDP client logs into a central data lake for correlation with process termination events
  • Track command-line arguments passed to xfreerdp to identify hosts with async updates enabled

How to Mitigate CVE-2026-67299

Immediate Actions Required

  • Upgrade FreeRDP to version 3.29.0 or later on all endpoints and container images
  • Restrict outbound RDP connections from client workstations to a vetted list of trusted servers
  • Disable the /async-update flag on affected clients until patching is complete
  • Rebuild and redistribute any downstream applications that statically link FreeRDP

Patch Information

The fix is available in FreeRDP 3.29.0 and later. Distribution maintainers should backport the change referenced in FreeRDP commit 5370fb26. Additional detail is available in the FreeRDP Security Advisory GHSA-34hq-hwjw-q8v3 and the Vulncheck Advisory.

Workarounds

  • Launch xfreerdp without the /async-update argument to bypass the vulnerable code path
  • Connect only to trusted RDP servers under organizational control
  • Enforce egress firewall rules to block RDP traffic to unknown destinations
  • Isolate high-risk users behind an RDP gateway that validates server identity
bash
# Verify installed FreeRDP version and remove the vulnerable flag
xfreerdp --version

# Recommended invocation without async-update until patched
xfreerdp /v:trusted-server.internal /u:analyst

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.