CVE-2026-64620 is a critical (CVSS 9.8) heap overflow in FreeRDP before 3.28.0. The RSA helper writes before it checks the buffer size, so an unauthenticated client can overflow a 32 byte server buffer. The record describes a denial of service. Upgrade to 3.28.0, or require TLS or NLA.
What's affected
- FreeRDP versions up to and including 3.27.1. Fixed in 3.28.0.
- Function:
crypto_rsa_common()inlibfreerdp/crypto/crypto.c. - Reachable on the server side when a client selects RDP Standard Security, according to the advisory.
- Weakness: CWE-122, heap based buffer overflow. CVSS 9.8 (critical), vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
The record states the outcome as denial of service. The advisory describes the overwrite as a strong memory corruption primitive, so treat it as more than a crash risk.
How to check if you're exposed
Find the FreeRDP version in every place it is installed or embedded.
xfreerdp --version 2>/dev/null || xfreerdp3 --version
# Debian and Ubuntu
dpkg -l | grep -i freerdp
# Red Hat family
rpm -qa | grep -i freerdp
FreeRDP is also embedded in remote desktop tools, gateways and appliances. For those, ask the vendor which FreeRDP version they ship. The free in-browser scan at gold.safeguard.sh/scan covers dependencies in your projects.
Then find out whether any FreeRDP based server is exposed: the shadow server, a proxy, or an embedded appliance. Ask whether it allows RDP Standard Security.
What to do now
- Find every FreeRDP derived server, proxy or appliance, and every client install.
- Upgrade to FreeRDP 3.28.0 or later.
- The advisory's workaround: require TLS or NLA and disable RDP Standard Security, so the vulnerable key establishment path returns early.
- Keep any FreeRDP based server off the public internet where you can.
- Ask appliance vendors which FreeRDP version they embed.
Why it matters
The helper function writes the result of a modular exponentiation into the caller's buffer first and only afterward checks whether it fit. In the server key exchange, the destination is a fixed 32 byte buffer, and the value can be as large as the key. Because the server publishes its public key, a client can craft a value that decrypts to the full length.
That is CWE-122 before any login, which is why the score is 9.8. The workaround is a policy choice: turning off the legacy Standard Security layer closes the path. The record's KEV flag is false.
Quick check
Is a login required?
No. The record and advisory describe the overflow as pre authentication.
What is the workaround?
Require TLS or NLA and disable RDP Standard Security.
Sources
- FreeRDP advisory GHSA-pjqx-v446-x7fc
- VulnCheck advisory (listed in the record)
- FreeRDP 3.28.0 release (listed in the record)
Last reviewed: 19 October 2026.