CVE-2024-32460
High · 8.1CVSS
8.1
EPSS
1.9%
Published
Apr 22, 2024
CISA due date
—
Cloudanix analysis
A flaw in remote desktop software can let attackers read parts of a computer's memory when users connect using an old display setting, which might expose private information or cause the connection to fail.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds read in the legacy GDI drawing path when handling 32-bit-per-pixel color depth in RDP clients, allowing access to memory beyond allocated buffers.
Why it matters to the business
Potential exposure of sensitive client memory contents or denial-of-service during remote desktop sessions, disrupting secure access and increasing risk for organizations relying on FreeRDP for remote connectivity.
How an attack unfolds
An attacker hosts a malicious RDP server and waits for a vulnerable client to connect using the legacy /bpp:32 GDI path. The server sends specially crafted drawing commands that trigger the out-of-bounds read, potentially leaking memory or causing a crash.
How to fix it
Upgrade FreeRDP to version 3.5.0 or 2.11.6 (commit dee7e7e7c609c5192273cf8c20540c729ddcb3b0). As a temporary mitigation, switch to modern drawing paths such as /rfx or /gfx, which require server-side support.
How to confirm the fix worked
Verify client version is 3.5.0 or newer, confirm modern drawing paths are active in connection settings, and test connections against a patched server to ensure no OOB reads occur under legacy conditions.
Typical attack path
- Attacker configures a malicious RDP server to respond to incoming connections
- Victim initiates a client connection using the legacy GDI drawing path with /bpp:32
- Server transmits crafted bitmap or drawing data exceeding expected buffer boundaries
- Client processes the data, performing an out-of-bounds memory read
- Attacker observes crash or extracts leaked memory contents for further exploitation
How to detect it
Review RDP client logs for connections using legacy GDI paths, monitor for unexpected crashes or memory-related errors during RDP sessions, and inspect network traffic for anomalous drawing command sequences from untrusted servers.
What your security team should do
- Immediately upgrade all FreeRDP installations to the fixed versions
- Audit and disable legacy /bpp:32 GDI paths in client configurations where possible
- Monitor for any remaining legacy-mode connections and enforce modern drawing options
- Prioritize patching in environments with high remote access usage due to potential memory disclosure
The record
FreeRDP is a free implementation of the Remote Desktop Protocol. FreeRDP based based clients using `/bpp:32` legacy `GDI` drawing path with a version of FreeRDP prior to 3.5.0 or 2.11.6 are vulnerable to out-of-bounds read. Versions 3.5.0 and 2.11.6 patch the issue. As a workaround, use modern drawing paths (e.g. `/rfx` or `/gfx` options). The workaround requires server side support.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | freerdp2 | 0 | No fix |
| Debian:11 | freerdp2 | 0 | 2.3.0+dfsg1-2+deb11u2 |
| Debian:12 | freerdp2 | 0 | No fix |
| Debian:13 | freerdp2 | 0 | No fix |
| Mageia:9 | freerdp | 0 | 2.11.7-1.mga9 |
| Red Hat:enterprise_linux:9::appstream | freerdp | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | freerdp-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | freerdp-debugsource | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | freerdp-devel | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | freerdp-libs | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | freerdp-libs-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | libwinpr | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | libwinpr-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::appstream | libwinpr-devel | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp-debugsource | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp-devel | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp-libs | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | freerdp-libs-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | libwinpr | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | libwinpr-debuginfo | 0 | 2:2.11.7-1.el9 |
| Red Hat:enterprise_linux:9::crb | libwinpr-devel | 0 | 2:2.11.7-1.el9 |
| Rocky Linux:9 | freerdp | 0 | 2:2.11.7-1.el9 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP5 | freerdp | 0 | 2.4.0-150400.3.29.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | freerdp | 0 | 2.1.2-12.44.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP5 | freerdp | 0 | 2.1.2-12.44.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP5 | freerdp | 0 | 2.4.0-150400.3.29.1 |
| Ubuntu:16.04:LTS | freerdp | 0 | No fix |
| Ubuntu:18.04:LTS | freerdp | 0 | No fix |
| Ubuntu:20.04:LTS | freerdp2 | 0 | 2.6.1+dfsg1-0ubuntu0.20.04.1 |
| Ubuntu:22.04:LTS | freerdp2 | 0 | 2.6.1+dfsg1-3ubuntu2.6 |
| Ubuntu:23.10 | freerdp2 | 0 | 2.10.0+dfsg1-1.1ubuntu1.2 |
| Ubuntu:24.04:LTS | freerdp2 | 0 | No fix |
| Ubuntu:24.04:LTS | freerdp3 | 0 | 3.5.0+dfsg1-0ubuntu1 |
| Ubuntu:24.10 | freerdp2 | 0 | No fix |
| Ubuntu:24.10 | freerdp3 | 0 | 3.5.0+dfsg1-0ubuntu1 |
| Ubuntu:Pro:16.04:LTS | freerdp | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | freerdp | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | freerdp2 | 0 | No fix |
| Ubuntu:Pro:24.04:LTS | freerdp2 | 0 | 2.11.5+dfsg1-1ubuntu0.1~esm1 |
| openSUSE:Leap 15.5 | freerdp | 0 | 2.4.0-150400.3.29.1 |
| openSUSE:Leap 16.0 | freerdp | 0 | 3.22.0-160000.1.1 |
| openSUSE:Tumbleweed | freerdp | 0 | 3.5.1-1.1 |
| openSUSE:Tumbleweed | freerdp2 | 0 | 2.11.7-1.1 |
Related vulnerabilities
- CVE-2024-32459 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp2
- CVE-2024-32039 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp2
- CVE-2024-32041 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp2
- CVE-2024-32458 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp2
- CVE-2024-32040 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp2
- CVE-2022-24883 FreeRDP is a free implementation of the Remote Desktop Protocol (RDP). Also affects freerdp2
- CVE-2026-24684 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp
- CVE-2026-24682 FreeRDP is a free implementation of the Remote Desktop Protocol. Also affects freerdp