Description
FreeRDP before 3.28.0 (affected <=3.27.1) contains a heap-based buffer overflow in crypto_rsa_common() (libfreerdp/crypto/crypto.c). The function writes the modular-exponentiation result into the caller's output buffer via BN_bn2bin() and only afterward checks output_length > out_length, so out-of-bounds bytes are written before the bounds check. On the server side, when a client selects RDP Standard Security, the encrypted client random is decrypted into a fixed 32-byte buffer. Because the server publishes its RSA public key, an unauthenticated attacker can forge a ciphertext whose decrypted value is up to the full modulus length (e.g. 256 bytes for RSA-2048), overflowing the 32-byte heap buffer by up to ~224 attacker-controlled bytes pre-authentication, resulting in denial of service.
Published: 2026-07-20
Score: 9.3 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A buffer overflow occurs on the server side when decrypting a client‑supplied random value using RSA. The crypto_rsa_common function writes the result of a modular exponentiation into the caller's buffer before performing a bounds check, allowing an attacker to overflow a 32‑byte heap buffer with up to 224 bytes of data. The overflow can corrupt heap memory and cause the server to crash, resulting in a denial‑of‑service condition before any authentication has taken place. This flaw is a classic example of CWE‑122, a heap‑buffer overflow vulnerability.

Affected Systems

Versions of FreeRDP up to and including 3.27.1 are affected. The vulnerability resides in e.g. 3.27.1 and earlier releases of the FreeRDP project. Any deployment of FreeRDP that uses a pre‑3 build, regardless of platform, is subject to this flaw.

Risk and Exploitability

The CVSS score of 9.3 indicates a critical severity. The EPSS score of 0.00578 (approximately 0.58%) shows a low probability of exploitation at this time. The lack of a KEV listing suggests publicly known exploits are not yet widespread. The vulnerability is triggered before authentication and can be leveraged by sending crafted RDP packets that cause the server to decrypt an attacker‑crafted ciphertext. This leads to a heap buffer overflow that can crash the server, causing a denial‑of‑service. Because the overflow writes to heap memory, there is a theoretical risk of arbitrary code execution if an attacker can chain the overflow with further payloads, but no remote code execution has been reported.

Generated by OpenCVE AI on July 30, 2026 at 19:30 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to FreeRDP 3.28.0 or later, as the commit 1f7a716d39b5605bb8a83b0c3c97a6ce386609ef fixes the overflow.
  • If an upgrade is not immediately possible, disable 'RDP Standard Security' on the server or force the use of TLS security to avoid RSA decryption on the server side.
  • Monitor the server for abnormal crashes or repeated out‑of‑bounds exceptions that could indicate a replay attack, and investigate any such incidents promptly.
  • Restrict RDP connections to a trusted network segment or apply firewall rules to limit the number of simultaneous connection attempts from untrusted hosts.

Generated by OpenCVE AI on July 30, 2026 at 19:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 21 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-120
References
Metrics threat_severity

None

threat_severity

Important


Mon, 20 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 20 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Description FreeRDP before 3.28.0 (affected <=3.27.1) contains a heap-based buffer overflow in crypto_rsa_common() (libfreerdp/crypto/crypto.c). The function writes the modular-exponentiation result into the caller's output buffer via BN_bn2bin() and only afterward checks output_length > out_length, so out-of-bounds bytes are written before the bounds check. On the server side, when a client selects RDP Standard Security, the encrypted client random is decrypted into a fixed 32-byte buffer. Because the server publishes its RSA public key, an unauthenticated attacker can forge a ciphertext whose decrypted value is up to the full modulus length (e.g. 256 bytes for RSA-2048), overflowing the 32-byte heap buffer by up to ~224 attacker-controlled bytes pre-authentication, resulting in denial of service.
Title FreeRDP before 3.28.0 Heap Buffer Overflow via crypto_rsa_common
First Time appeared Freerdp
Freerdp freerdp
Weaknesses CWE-122
CPEs cpe:2.3:a:freerdp:freerdp:*:*:*:*:*:*:*:*
Vendors & Products Freerdp
Freerdp freerdp
References
Metrics cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 9.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-21T11:08:25.119Z

Reserved: 2026-07-20T11:58:54.524Z

Link: CVE-2026-64620

cve-icon Vulnrichment

Updated: 2026-07-20T19:27:29.369Z

cve-icon NVD

No data.

cve-icon Redhat

Severity : Important

Publid Date: 2026-07-20T12:04:53Z

Links: CVE-2026-64620 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T19:45:06Z

Weaknesses
  • CWE-120

    Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

  • CWE-122

    Heap-based Buffer Overflow