CVE-2026-109941 in FreeRDPinfo

Summary

by MITRE • 10/13/2026

FreeRDP from 2.3.0 before 3.32.0 contains an infinite loop vulnerability in http_chuncked_read that allows malicious RD Gateways to hang clients by sending incomplete chunked responses. Attackers can send a partial chunk-size line or footer followed by a clean TLS shutdown, causing zero-byte reads to loop forever and freeze the client decoder thread.

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

Analysis

by VulDB Data Team • 10/13/2026

The vulnerability identified in FreeRDP versions ranging from 2.3.0 up to but not including 3.32.0 represents a significant availability risk within Remote Desktop Protocol implementations that utilize HTTP-based tunneling through RD Gateways. This flaw is located specifically within the http_chunked_read function, which is responsible for parsing and processing chunked transfer encoding responses received from remote servers. Chunked transfer encoding is a data format used in HTTP messaging to allow web servers to send dynamically generated content without knowing its size beforehand. The protocol relies on a series of chunks, each preceded by a header indicating the length of that specific chunk, followed by the data payload and terminated by a final zero-length chunk with optional trailer headers. In this vulnerable implementation, the parsing logic fails to correctly handle edge cases involving incomplete or malformed chunked responses, leading to an infinite loop condition when processing these anomalies.

The technical root cause stems from how the decoder thread handles partial reads during TLS shutdown scenarios. When a malicious RD Gateway sends a response that includes only a partial chunk-size line or footer and then immediately initiates a clean Transport Layer Security (TLS) connection termination, the FreeRDP client enters an erroneous state. Instead of recognizing the abrupt closure as a signal to stop processing or handle it gracefully, the internal loop logic continues to attempt reading data from the socket. Because the TLS layer has closed the connection, subsequent read operations return zero bytes indicating no more data is available. However, due to the flawed conditional logic within http_chunked_read, these zero-byte returns do not trigger an exit condition for the parsing loop. Consequently, the function enters a tight infinite loop where it repeatedly attempts to process non-existent data, consuming CPU resources and blocking the decoder thread indefinitely.

From an operational perspective, this vulnerability allows remote attackers with access to a malicious RD Gateway or man-in-the-middle position capable of injecting malformed HTTP responses to cause a denial-of-service condition against FreeRDP clients. The primary impact is the freezing of the client application's user interface and processing capabilities. Since the decoder thread becomes unresponsive, users experience a complete hang where no further input can be processed and visual updates cease until the process is manually terminated by an administrator or system watchdog. This effectively denies service to legitimate users attempting to connect through compromised infrastructure. The attack vector requires interaction with a malicious gateway rather than direct exploitation of the client software itself, which limits the scope but increases the potential impact in enterprise environments where RD Gateways are commonly used for secure remote access.

This vulnerability aligns with CWE-835, known as Loop with Unreachable Exit Condition (Infinite Loop), and specifically relates to improper input validation during protocol parsing. It also maps to MITRE ATT&CK technique T1499, Endpoint Denial of Service, where an adversary disrupts the availability of monitored components by exploiting software vulnerabilities or resource exhaustion mechanisms. The specific mechanism here involves exhausting computational resources via a logic error rather than flooding with traffic, making it particularly insidious as it does not generate high network volume but instead creates local processing bottlenecks that are difficult to detect without monitoring thread behavior.

Mitigation strategies primarily involve upgrading the FreeRDP installation to version 3.32.0 or later, where this logic error has been addressed by developers who implemented proper checks for zero-byte reads and ensured that TLS closure events correctly terminate the chunked parsing loop. For environments unable to upgrade immediately, network-level controls such as deep packet inspection firewalls can be configured to detect and block malformed HTTP responses containing incomplete chunk headers followed by abrupt connection terminations. Additionally, implementing application watchdogs or health checks that monitor thread responsiveness can help automatically restart hung FreeRDP processes, thereby minimizing the duration of service disruption while permanent patches are deployed. Security teams should also review their RD Gateway configurations to ensure they do not expose internal services to untrusted networks where such malformed responses could be injected by adversaries.

Responsible

VulnCheck

Reservation

10/13/2026

Disclosure

10/13/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Want to know what is going to be exploited?

We predict KEV entries!