CVE-2026-23884
📋 TL;DR
CVE-2026-23884 is a use-after-free vulnerability in FreeRDP clients where offscreen bitmap deletion leaves a pointer to freed memory. A malicious RDP server can exploit this to cause client crashes (DoS) and potentially achieve remote code execution depending on heap conditions. All FreeRDP clients prior to version 3.21.0 are affected.
💻 Affected Systems
- FreeRDP
📦 What is this software?
Freerdp by Freerdp
⚠️ Risk & Real-World Impact
Worst Case
Remote code execution on client systems, allowing attacker to take full control of the FreeRDP client machine.
Likely Case
Client crash/denial of service with potential heap corruption visible in crash dumps.
If Mitigated
No impact if patched version is used or if connections are restricted to trusted servers.
🎯 Exploit Status
Exploitation requires a malicious RDP server that the client connects to. The vulnerability is triggered by specific update packets sent during RDP sessions.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 3.21.0
Vendor Advisory: https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-cfgj-vc84-f3pp
Restart Required: Yes
Instructions:
1. Download FreeRDP 3.21.0 or later from official repositories. 2. Uninstall previous versions. 3. Install the patched version. 4. Restart any running FreeRDP processes or the system.
🔧 Temporary Workarounds
Restrict RDP connections
allOnly allow FreeRDP connections to trusted, verified RDP servers
Network segmentation
allIsolate FreeRDP clients from untrusted networks using firewalls
🧯 If You Can't Patch
- Implement strict network controls to only allow FreeRDP connections to trusted internal servers
- Monitor for crash events in FreeRDP processes and investigate any unexpected terminations
🔍 How to Verify
Check if Vulnerable:
Check FreeRDP version with 'xfreerdp --version' or equivalent command. If version is below 3.21.0, the system is vulnerable.
Check Version:
xfreerdp --version
Verify Fix Applied:
After patching, verify version is 3.21.0 or higher using 'xfreerdp --version'
📡 Detection & Monitoring
Log Indicators:
- FreeRDP process crashes
- Segmentation fault errors in system logs
- Unexpected FreeRDP termination
Network Indicators:
- RDP connections to unknown/untrusted servers
- Unusual RDP traffic patterns
SIEM Query:
process_name:"xfreerdp" AND (event_type:crash OR exit_code:139 OR exit_code:-1073741819)
🔗 References
- https://github.com/FreeRDP/FreeRDP/blob/3370e30e92a021eb680892dda14d642bc8b8727c/libfreerdp/cache/offscreen.c#L114-L122
- https://github.com/FreeRDP/FreeRDP/blob/3370e30e92a021eb680892dda14d642bc8b8727c/libfreerdp/cache/offscreen.c#L87-L91
- https://github.com/FreeRDP/FreeRDP/releases/tag/3.21.0
- https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-cfgj-vc84-f3pp