CVE-2026-55193 in FreeRDPinfo

Summary

by MITRE • 08/19/2026

FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.27.0, FreeRDP clients using TS Gateway accept a server-controlled max_xmit_frag value in libfreerdp/core/gateway/rpc_bind.c without bounding it to the 4088-byte ReceiveFragment allocation. A malicious gateway can advertise 65535 and then send a response fragment of the same length, causing rpc_channel_read in libfreerdp/core/gateway/rpc.c to write up to 65535 bytes into the smaller ReceiveFragment buffer. This can crash the client and may permit code execution through attacker-controlled heap corruption. This issue is fixed in version 3.27.0.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Analysis

by VulDB Data Team • 08/19/2026

The vulnerability identified in FreeRDP prior to version 3.27.0 represents a critical memory safety flaw within the Remote Desktop Protocol implementation, specifically affecting clients that utilize Terminal Services Gateway connections. As an open-source reimplementation of Microsoft's RDP protocol, FreeRDP is widely deployed across enterprise environments for remote access and virtual desktop infrastructure. The core issue resides in the handling of network packet fragmentation during the RPC bind phase over a gateway channel. When establishing a connection through a TS Gateway, the client negotiates various parameters with the server, including the maximum transmission fragment size. In vulnerable versions, the application accepts this max_xmit_frag value directly from the remote server without applying necessary bounds checking against its own internal buffer allocations.

The technical root cause is a classic heap-based buffer overflow resulting from insufficient validation of input data derived from an untrusted source. Specifically, in the file libfreerdp/core/gateway/rpc_bind.c, the client reads the max_xmit_frag value advertised by the gateway server and stores it for subsequent use. However, this value is not constrained to match or remain below the size of the ReceiveFragment buffer allocated within the RPC channel logic. The internal ReceiveFragment buffer has a fixed allocation limit of 4088 bytes, which is designed to handle standard RDP packet sizes efficiently. By failing to cap the accepted fragment size at this threshold, the application creates a discrepancy between the expected data volume and the available memory space.

This architectural flaw allows an attacker controlling a malicious TS Gateway server to exploit the vulnerability through a targeted network interaction sequence. The adversary can advertise a max_xmit_frag value of 65535 bytes during the initial negotiation phase. Subsequently, when the client attempts to read data from this channel using rpc_channel_read in libfreerdp/core/gateway/rpc.c, it will attempt to write up to 65535 bytes into the ReceiveFragment buffer that is only 4088 bytes in size. This massive over-read and subsequent overwrite corrupts adjacent memory regions on the heap, leading to immediate instability or a complete application crash for the end user.

The operational impact of this vulnerability extends beyond simple denial of service due to the nature of heap corruption vulnerabilities. While an attacker can easily cause a client-side crash by triggering the buffer overflow, the more severe risk involves arbitrary code execution. By carefully crafting the malicious gateway response and controlling the data written into the corrupted memory space, an attacker may manipulate function pointers or object headers within the heap structure. This technique enables the injection of shellcode or the redirection of program flow to attacker-controlled addresses, potentially resulting in full compromise of the client system under the context of the FreeRDP process.

From a classification perspective, this vulnerability aligns with CWE-120: Buffer Copy without Checking Size of Input, which describes cases where data is copied into a buffer without verifying that it fits within the allocated space. Furthermore, because the attack vector requires interaction with a network service and involves manipulating protocol parameters to achieve memory corruption, it maps closely to MITRE ATT&CK technique T1190: Exploit Public-Facing Application. The exploitation relies on the client trusting input from an external server during standard protocol negotiation, highlighting the risks inherent in parsing complex binary protocols without rigorous validation layers.

Mitigation for this issue is straightforward and primarily involves software updates. Organizations utilizing FreeRDP must upgrade to version 3.27.0 or later, where the developers have implemented proper bounds checking to ensure that the max_xmit_frag value does not exceed the capacity of the ReceiveFragment buffer. Until such an update can be applied in all environments, administrators should consider restricting connections from untrusted TS Gateways and monitoring network traffic for anomalous RDP negotiation patterns indicative of exploitation attempts. Additionally, deploying endpoint detection and response solutions capable of identifying heap corruption anomalies may provide a secondary layer of defense against potential code execution exploits derived from this vulnerability.

Responsible

GitHub M

Reservation

06/16/2026

Disclosure

08/19/2026

Moderation

accepted

CPE

ready

EPSS

0.00626

KEV

no

Activities

very low

Sources

Interested in the pricing of exploits?

See the underground prices here!