
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-23884 is a heap use-after-free (UAF) vulnerability in FreeRDP's offscreen bitmap cache, specifically in the gdi_set_bounds function. When an RDP CREATE_OFFSCREEN_BITMAP order deletes a bitmap via its deleteList, the gdi->drawing pointer is left pointing to freed memory; subsequent primary orders with ORDER_BOUNDS then dereference this dangling pointer, triggering the UAF. All FreeRDP versions up to and including 3.20.2 are affected; version 3.21.0 contains the fix. The vulnerability was disclosed on January 19, 2026, and carries a CVSS v3.1 base score of 9.8 (Critical) (GitHub Advisory, Red Hat Bugzilla).
The root cause is a CWE-416 (Use After Free) condition in libfreerdp/cache/offscreen.c. The update_gdi_create_offscreen_bitmap function processes the deleteList field of a CREATE_OFFSCREEN_BITMAP order by calling offscreen_cache_delete, which frees the rdpBitmap object without checking whether gdi->drawing still references it. If a prior SWITCH_SURFACE order had set gdi->drawing to that bitmap via update_gdi_switch_surface → bitmap->SetSurface, the pointer becomes dangling. When the server subsequently sends a primary drawing order containing ORDER_BOUNDS, update->SetBounds calls gdi_set_bounds at libfreerdp/gdi/gdi.c:569, which dereferences gdi->drawing->hdc on the freed memory. The attack requires only network access to a FreeRDP client connected to a malicious server — no authentication or user interaction is needed (GitHub Advisory, FreeRDP Source).
A malicious RDP server can trigger this vulnerability on any connecting FreeRDP client without requiring authentication or user interaction. The immediate impact is a denial of service via application crash; however, depending on heap allocator behavior and surrounding heap layout, the UAF can lead to heap corruption with potential for arbitrary code execution on the client system. Confidentiality, integrity, and availability are all rated HIGH under CVSS v3.1, reflecting the risk of full client-side compromise (GitHub Advisory, Red Hat Bugzilla).
A proof-of-concept exploit is publicly available via the FreeRDP GitHub security advisory, and the CVSS v4.0 exploit maturity is rated PROOF_OF_CONCEPT (GitHub Advisory). As of the time of disclosure, there is no evidence of active in-the-wild exploitation or threat actor attribution. The EPSS score is approximately 0.083%, indicating a currently low probability of widespread exploitation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The vulnerability is fully network-exploitable with no privileges or user interaction required, making it attractive for future weaponization (Feedly).
SWITCH_SURFACE alternate secondary order referencing a specific offscreen bitmap ID, causing the client's gdi->drawing pointer to be set to that bitmap's memory address.CREATE_OFFSCREEN_BITMAP order whose deleteList includes the bitmap ID used in step 3, triggering offscreen_cache_delete and freeing the bitmap memory while gdi->drawing still points to it.ORDER_BOUNDS, causing gdi_set_bounds to dereference the now-freed gdi->drawing->hdc pointer, triggering the heap-use-after-free.xfreerdp, wlfreerdp, or embedded FreeRDP) crashes unexpectedly, particularly during or shortly after establishing an RDP session to an external or untrusted server.heap-use-after-free at gdi_set_bounds in libfreerdp/gdi/gdi.c:569; crash dumps referencing update_recv_primary_order, fastpath_recv_orders, or offscreen_cache_delete in the stack trace.CREATE_OFFSCREEN_BITMAP orders with non-empty deleteList fields immediately following SWITCH_SURFACE orders targeting the same bitmap ID; connections to unexpected or newly registered RDP server IP addresses.core.*) generated by the FreeRDP client process in the working directory or /var/crash/, potentially containing heap memory artifacts (GitHub Advisory).Upgrade FreeRDP to version 3.21.0 or later, which contains the patch for this vulnerability (FreeRDP Release). Red Hat has issued multiple errata addressing this issue across RHEL 7–10 (RHSA-2026:2048, RHSA-2026:2081, RHSA-2026:2222, RHSA-2026:2714, and others) (Red Hat Bugzilla). As an interim workaround until patching is complete, restrict FreeRDP client connections to only trusted, known-good RDP servers and avoid connecting to untrusted or externally hosted RDP endpoints. Fedora, SUSE, Ubuntu, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux 2, Debian, and Mageia have also released updated packages.
The vulnerability was credited to researcher ehdgks0627, who reported multiple client-side vulnerabilities addressed in the FreeRDP 3.21.0 release (FreeRDP Release). Red Hat classified the issue as high severity and tracked it through Bugzilla, issuing over a dozen errata across supported RHEL versions (Red Hat Bugzilla). Coverage appeared on Linux security news aggregators including linuxsecurity.com and pro-linux.de, and the vulnerability was picked up by Nessus and Qualys scanner plugins shortly after disclosure. No significant social media controversy or broad public debate has been observed.
Fix availability across major Linux distributions and their releases.
bookworm
freerdp2
sid
freerdp3: 3.21.0+dfsg-1
trixie
freerdp3: 3.15.0+dfsg-2.1+deb13u1
bionic (esm-apps)
freerdp
devel
freerdp3
noble
freerdp3: 3.5.1+dfsg1-0ubuntu1.4
questing
freerdp3: 3.16.0+dfsg-2ubuntu0.3
resolute
freerdp3
xenial (esm-infra-legacy)
freerdp
RHEL 8
:appstream:freerdp-2:2.11.7-2.el8_10.src
RHEL 9
:appstream:freerdp-2:2.4.1-3.el9_0.src
RHEL 10
freerdp-2:3.10.3-3.el10_0.1.src
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."