CVE-2026-109948 Overview
FreeRDP versions 3.0.0 through 3.31.x contain an uninitialized memory disclosure vulnerability in the smartcard redirection channel. The flaw resides in smartcard_Transmit_Call, which processes SCardTransmit requests from the RDP server. A malicious server can send a transmit request with an invalid card handle and a nonzero receive length. This causes smartcard_pack_transmit_return to serialize up to 66,560 bytes of uninitialized heap memory back to the server. The condition allows attackers controlling a hostile RDP server to read client-side memory contents, potentially exposing credentials, session tokens, or other sensitive data residing on the heap. The issue is tracked as [CWE-200] information exposure.
Critical Impact
A malicious RDP server can read up to 66,560 bytes of uninitialized heap memory from a connected FreeRDP client when smartcard redirection is active.
Affected Products
- FreeRDP 3.0.0 through 3.31.x (fixed in 3.32.0)
- Applications and distributions bundling vulnerable FreeRDP libraries
- Downstream RDP clients with smartcard redirection enabled
Discovery Timeline
- 2026-10-13 - CVE-2026-109948 published to NVD
- 2026-10-14 - Last updated in NVD database
Technical Details for CVE-2026-109948
Vulnerability Analysis
FreeRDP implements PC/SC smartcard redirection so a remote session can access a smartcard physically attached to the client. The smartcard_Transmit_Call function handles SCardTransmit IOCTL messages arriving from the server. When the function receives a request referencing an invalid card handle, it still proceeds to construct a return packet. The packet construction routine smartcard_pack_transmit_return allocates a response buffer sized by the attacker-supplied cbRecvLength field. This buffer is never zeroed or populated with meaningful data before serialization. The library then transmits the buffer contents to the server over the Dynamic Virtual Channel. Because cbRecvLength can reach 66,560 bytes, each malicious transmit call leaks a sizable region of client heap memory.
Root Cause
The root cause is missing output buffer initialization combined with incomplete input validation. The error path for invalid card handles does not short-circuit response serialization. The response allocator relies on the caller's length field without zeroing memory returned from the heap allocator.
Attack Vector
Exploitation requires a user to connect a FreeRDP-based client to an attacker-controlled RDP server with smartcard redirection enabled. The server crafts repeated SCardTransmit requests containing invalid handles and the maximum permitted receive length. Each response reveals previously freed or uninitialized heap contents. Attackers can iterate to harvest larger portions of client memory.
Vulnerability mechanism (prose, not executable):
1. Client connects to malicious RDP server with smartcard redirection
2. Server sends SCardTransmit IOCTL with invalid hCard and cbRecvLength = 66560
3. smartcard_Transmit_Call reaches smartcard_pack_transmit_return without zeroing output buffer
4. Up to 66,560 bytes of uninitialized heap are serialized back to the server
Refer to the GitHub Security Advisory for the authoritative technical description.
Detection Methods for CVE-2026-109948
Indicators of Compromise
- Outbound RDP sessions from workstations to untrusted or newly registered RDP endpoints with smartcard redirection negotiated.
- Elevated volume of SCardTransmit IOCTL responses over the rdpdr or rdpsnd virtual channels during a single session.
- Client processes (xfreerdp, wlfreerdp, or embedded FreeRDP consumers) exhibiting unusually large virtual channel egress.
Detection Strategies
- Inventory installed FreeRDP binaries and library versions across endpoints to identify versions earlier than 3.32.0.
- Inspect RDP client telemetry for sessions negotiating the smartcard redirection channel against servers outside sanctioned infrastructure.
- Hunt for FreeRDP-derived applications sending high volumes of virtual channel data to internet-reachable hosts.
Monitoring Recommendations
- Log outbound TCP/3389 and RDP-over-HTTPS gateway connections and correlate against an allow-list of known-good servers.
- Alert when smartcard redirection is enabled toward non-corporate destinations.
- Monitor process behavior of RDP client binaries for abnormal network write volumes within short time windows.
How to Mitigate CVE-2026-109948
Immediate Actions Required
- Upgrade FreeRDP to version 3.32.0 or later across all endpoints and bundled applications.
- Audit third-party software that embeds FreeRDP and apply vendor-supplied updates once available.
- Restrict outbound RDP connections to approved internal and partner destinations.
Patch Information
The FreeRDP maintainers fixed the vulnerability in release 3.32.0. Details are documented in the GitHub Security Advisory GHSA-f554-v4xw-5j39 and the VulnCheck Memory Disclosure Advisory. Rebuild and redistribute any downstream products that statically link or vendor FreeRDP source.
Workarounds
- Disable smartcard redirection on FreeRDP clients until patched binaries are deployed.
- Prohibit connections to untrusted RDP servers through firewall and egress policies.
- Isolate workstations that require smartcard authentication from arbitrary outbound RDP paths.
# Launch FreeRDP without smartcard redirection as a temporary mitigation
xfreerdp /v:<server> /cert:tofu -smartcard
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

