CVE-2026-91964
massHeap buffer overflow in FreeRDP client via malicious RDP server (pre-3.31.0)
FreeRDP versions before 3.31.0 contain a heap-based buffer overflow (CWE-122) in the nego_send_negotiation_request function, triggered when the client processes a Server Redirection PDU carrying an attacker-controlled LoadBalanceInfo field. A malicious RDP server can supply an arbitrary-length field that is written into a fixed 512-byte buffer without bounds validation, corrupting heap memory. Successful exploitation crashes the client and may allow code execution when chained with a separate memory-disclosure primitive, so an attacker who convinces a user to connect to a hostile RDP server gains high impact on confidentiality, integrity, and availability (CVSS 4.0: 8.7, user interaction required). Anyone running FreeRDP-based RDP clients older than 3.31.0, including downstream products that bundle the library, is affected. No public proof of concept is known, the flaw is not on the CISA KEV list, and there is no evidence of exploitation in the wild.
What to do: Upgrade FreeRDP to version 3.31.0 or later as soon as it is available from your distribution or vendor, and check whether bundled products (Remmina, Apache Guacamole, thin-client images, custom FreeRDP integrations) have shipped patched builds. In the interim, restrict RDP connections to known, trusted servers and gateways, since exploitation requires a user to connect to an attacker-controlled server. Watch for crashes in RDP sessions following redirection prompts as a possible indicator, and track vendor advisories for backported fixes to older branches.
| FreeRDP | before 3.31.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
FreeRDP versions before 3.31.0 contain a heap-based buffer overflow in nego_send_negotiation_request when processing Server Redirection PDU messages with attacker-controlled LoadBalanceInfo fields. A malicious RDP server can trigger the overflow by sending an arbitrary-length field that gets written to a fixed 512-byte buffer without validation, causing client crashes or potential code execution when chained with memory disclosure.
- Weakness
- CWE-122
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.