CVE-2026-25953
📋 TL;DR
This is a use-after-free vulnerability in FreeRDP's X11 client implementation where the RDPGFX DVC thread can access a freed window pointer while the main thread concurrently deletes the window. This allows potential memory corruption and could lead to crashes or code execution. Users of FreeRDP X11 client prior to version 3.23.0 are affected.
💻 Affected Systems
- FreeRDP
📦 What is this software?
Freerdp by Freerdp
⚠️ Risk & Real-World Impact
Worst Case
Remote code execution leading to complete system compromise of the FreeRDP client system
Likely Case
Application crash or denial of service of the FreeRDP client
If Mitigated
No impact if patched or workarounds applied
🎯 Exploit Status
Exploitation requires connecting to a malicious RDP server; race condition makes reliable exploitation challenging
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.23.0
Vendor Advisory: https://github.com/FreeRDP/FreeRDP/releases/tag/3.23.0
Restart Required: Yes
Instructions:
1. Backup current FreeRDP configuration
2. Update FreeRDP to version 3.23.0 or later using package manager
3. Restart any running FreeRDP sessions
4. Verify version with 'xfreerdp --version'
🔧 Temporary Workarounds
Disable RDPGFX channel
linuxDisable the RemoteFX graphics channel which is involved in the vulnerability
xfreerdp /gfx:off
Use alternative RDP client
allTemporarily use alternative RDP clients like rdesktop or Remmina
🧯 If You Can't Patch
- Restrict RDP connections to trusted servers only
- Monitor for FreeRDP crashes and investigate any anomalies
🔍 How to Verify
Check if Vulnerable:
Run 'xfreerdp --version' and check if version is below 3.23.0
Check Version:
xfreerdp --version
Verify Fix Applied:
Confirm version is 3.23.0 or higher with 'xfreerdp --version'
📡 Detection & Monitoring
Log Indicators:
- FreeRDP segmentation faults or crashes
- Unexpected FreeRDP process termination
- System logs showing memory access violations
Network Indicators:
- RDP connections to untrusted or suspicious servers
- Unusual RDPGFX channel activity
SIEM Query:
process.name:"xfreerdp" AND (event.action:"segmentation_fault" OR event.action:"crash")
🔗 References
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_rail.c#L1230-L1237
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_rail.c#L257-L290
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_rail.c#L643-L647
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_window.c#L1394-L1428
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_window.c#L1462-L1470
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/client/X11/xf_window.c#L1484-L1491
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/libfreerdp/gdi/gfx.c#L254-L286
- https://github.com/FreeRDP/FreeRDP/blob/5c7aae27d0417b42b4806c2a5c583ca39dd9ef1e/libfreerdp/gdi/gfx.c#L278-L279
- https://github.com/FreeRDP/FreeRDP/commit/1994e9844212a6dfe0ff12309fef520e888986b5
- https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-p6rq-rxpc-rh3p
- https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-p6rq-rxpc-rh3p