CVE-2026-24491 Overview
CVE-2026-24491 is a use after free vulnerability affecting FreeRDP, a free implementation of the Remote Desktop Protocol. Prior to version 3.22.0, the video_timer component can send client notifications after the control channel is closed, dereferencing a freed callback and triggering a use after free condition. This vulnerability allows remote attackers to cause a denial of service through network-based attacks without requiring authentication or user interaction.
Critical Impact
Remote attackers can exploit this use after free vulnerability to crash FreeRDP clients, resulting in denial of service through network-based attacks that require no authentication.
Affected Products
- FreeRDP versions prior to 3.22.0
- FreeRDP-based RDP clients and implementations
- Systems utilizing FreeRDP libraries for Remote Desktop connections
Discovery Timeline
- 2026-02-09 - CVE-2026-24491 published to NVD
- 2026-02-10 - Last updated in NVD database
Technical Details for CVE-2026-24491
Vulnerability Analysis
This vulnerability is classified as CWE-416 (Use After Free), a memory corruption vulnerability that occurs when a program continues to use a memory pointer after the memory has been freed. In FreeRDP, the issue arises within the video_timer component, which manages video stream timing during Remote Desktop Protocol sessions.
The core issue is a race condition in the cleanup sequence where the video_timer component attempts to send client notifications through a callback function after the associated control channel has already been closed and deallocated. When this occurs, the code dereferences a pointer to memory that has already been freed, leading to undefined behavior that typically manifests as a crash.
The vulnerability is exploitable over the network without requiring any authentication or user interaction, making it particularly dangerous for exposed FreeRDP deployments. While the primary impact is availability (denial of service), use after free vulnerabilities can sometimes be escalated to achieve code execution in certain memory configurations.
Root Cause
The root cause is improper synchronization between the video_timer component and the control channel lifecycle management. When a Remote Desktop session terminates or the control channel closes, the callback structures are deallocated. However, the video_timer component may still have pending notifications queued that reference these now-freed callback structures. Without proper lifecycle checks or synchronization primitives, the timer attempts to invoke the freed callback, resulting in the use after free condition.
Attack Vector
The attack vector is network-based, as indicated by the vulnerability's characteristics. An attacker can trigger this vulnerability by manipulating the timing of RDP session operations to cause the control channel to close while video timer notifications are still pending. This can be achieved through:
- Malicious RDP Server - A compromised or malicious RDP server could manipulate protocol messages to trigger the race condition in connected FreeRDP clients
- Network Manipulation - An attacker with network access could inject or modify RDP traffic to cause unexpected channel closures during video playback
- Session Termination Timing - Abrupt disconnection scenarios during active video streaming could reliably trigger the vulnerable code path
The vulnerability mechanism centers on the asynchronous nature of the video timer. When the control channel closes, the cleanup code frees the callback structures, but outstanding timer events remain scheduled. When these timer events fire and attempt to invoke the callback, the dereferenced pointer points to freed memory, causing the use after free condition.
For technical implementation details, see the GitHub Security Advisory.
Detection Methods for CVE-2026-24491
Indicators of Compromise
- Unexpected FreeRDP client crashes during RDP sessions, particularly those involving video content
- Memory access violations or segmentation faults in FreeRDP process logs
- Abnormal RDP session terminations coinciding with video stream activity
- Core dumps from FreeRDP processes showing stack traces involving video_timer functions
Detection Strategies
- Monitor for FreeRDP process crashes using system crash handlers and logging infrastructure
- Implement application-level monitoring for unexpected RDP client terminations
- Deploy network monitoring to detect anomalous RDP traffic patterns that might indicate exploitation attempts
- Configure endpoint detection solutions to alert on memory corruption indicators in FreeRDP processes
Monitoring Recommendations
- Enable detailed logging for FreeRDP client connections and session lifecycle events
- Set up automated alerting for FreeRDP process crashes in production environments
- Monitor network traffic for unusual RDP protocol sequences targeting video channels
- Implement crash dump collection and analysis pipelines to identify exploitation patterns
How to Mitigate CVE-2026-24491
Immediate Actions Required
- Upgrade FreeRDP to version 3.22.0 or later immediately
- If immediate upgrade is not possible, consider restricting RDP connections to trusted servers only
- Review and limit network exposure of systems running vulnerable FreeRDP versions
- Implement network segmentation to reduce attack surface for RDP-enabled systems
Patch Information
The vulnerability is fixed in FreeRDP version 3.22.0. The fix addresses the synchronization issue between the video_timer component and control channel lifecycle, ensuring callbacks are properly invalidated before the control channel is freed. The patch can be reviewed at the GitHub Commit Details.
Organizations should prioritize upgrading to FreeRDP 3.22.0 or later. For systems using FreeRDP as a library, ensure dependent applications are rebuilt against the patched version.
Workarounds
- Disable video redirection features in FreeRDP if not required for operations (/video:off or equivalent configuration)
- Restrict RDP connections to known, trusted servers using firewall rules or connection policies
- Implement network-level controls to prevent connections to untrusted RDP endpoints
- Consider using alternative RDP clients until patching is complete
# Example: Disable video redirection when connecting
xfreerdp /v:server.example.com /video:off /u:username
# Example: Firewall rule to restrict RDP outbound to trusted servers only
iptables -A OUTPUT -p tcp --dport 3389 -d trusted.server.ip -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3389 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

