CVE-2026-23533: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-23533 is a heap-based buffer overflow vulnerability in FreeRDP's RDPGFX ClearCodec decode path, specifically in the clear_decompress_residual_data function. A malicious RDP server can send crafted residual data that causes out-of-bounds writes during color output processing on the client side. All FreeRDP versions prior to 3.21.0 are affected. The vulnerability was disclosed on January 19, 2026, with a patch released the same day in FreeRDP 3.21.0. It carries a CVSS v3.1 base score of 9.8 (Critical) and a CVSS v4.0 base score of 7.7 (High) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is a heap-based buffer overflow (CWE-122) in libfreerdp/codec/clear.c. In the clear_resize_buffer function (line 336), the size calculation ((width + 16) * (height + 16) * FreeRDPGetBytesPerPixel(clear->format)) uses 32-bit arithmetic that can overflow when the server-controlled nWidth and nHeight values approach 0xFFFF, resulting in an undersized heap allocation. Subsequently, the write loop in clear_decompress_residual_data (lines 268–281) iterates up to runLengthFactor times, writing color data past the end of the allocated buffer. The attack is triggered via a WIRE_TO_SURFACE_PDU_1 packet routed through rdpgfx_recv_wire_to_surface_1_pdu → rdpgfx_decode → the ClearCodec path, requiring no user interaction or authentication beyond a client connecting to a malicious server. The fix involves using UINT64 for the size and TempSize variables to prevent integer overflow (GitHub Advisory, FreeRDP Source).

Impact

Successful exploitation causes a client-side heap buffer overflow, resulting in application crash (Denial of Service) and potential heap corruption. Depending on the allocator behavior and surrounding heap layout, an attacker may achieve arbitrary code execution on the connecting client system. Since the attack originates from a malicious or compromised RDP server, users connecting to untrusted RDP endpoints are at risk of full client-side compromise, including confidentiality, integrity, and availability impacts (GitHub Advisory, Red Hat Bugzilla).

Exploitability

A proof-of-concept exploit (AddressSanitizer crash reproducer) is publicly available in the GitHub Security Advisory, demonstrating the heap-buffer-overflow condition. The vulnerability requires no authentication, no user interaction, and is exploitable over the network, making it highly accessible to attackers. The EPSS score is approximately 0.093%, indicating a currently low but non-negligible probability of exploitation in the wild. There is no evidence of active in-the-wild exploitation or CISA KEV catalog listing as of the time of this report. No specific threat actor attribution has been identified (GitHub Advisory, Feedly).

Exploitation steps

  1. Set up a malicious RDP server: Deploy a rogue RDP server (e.g., a modified FreeRDP server build or a custom implementation) that supports the RDPGFX Graphics Pipeline Extension and ClearCodec.
  2. Lure or redirect a client: Convince a target user running a vulnerable FreeRDP client (version ≤ 3.20.2) to connect to the malicious server, or perform a man-in-the-middle attack on an existing RDP session.
  3. Negotiate RDPGFX channel: During the RDP session setup, negotiate the rdpgfx dynamic virtual channel to enable the Graphics Pipeline Extension.
  4. Craft a malicious WIRE_TO_SURFACE_PDU_1: Send a WIRE_TO_SURFACE_PDU_1 packet using the ClearCodec codec type, with nWidth and nHeight values near 0xFFFF to trigger integer overflow in clear_resize_buffer, causing an undersized heap allocation.
  5. Trigger out-of-bounds write: Include residual data with a runLengthFactor value that causes the write loop in clear_decompress_residual_data to iterate beyond the allocated buffer boundary, corrupting adjacent heap memory.
  6. Achieve DoS or code execution: The overflow causes an immediate crash (DoS) or, with heap layout manipulation, may enable arbitrary code execution on the client system (GitHub Advisory).

Indicators of compromise

  • Process: FreeRDP client process (xfreerdp, wfreerdp, or similar) crashing unexpectedly, particularly after connecting to an external or untrusted RDP server; crash dumps referencing clear_decompress_residual_data, FreeRDPWriteColor, or clear_resize_buffer in stack traces.
  • Logs: AddressSanitizer reports (if enabled) showing heap-buffer-overflow at FreeRDPWriteColor_int in color.h; application logs showing errors from rdpgfx_recv_wire_to_surface_1_pdu or rdpgfx_decode.
  • Network: Outbound RDP connections (TCP port 3389 or custom) to unfamiliar or suspicious server IPs, especially followed by immediate client process termination; unusual RDPGFX channel traffic with large nWidth/nHeight values in surface PDUs.
  • File System: Core dump files generated by the FreeRDP client process in the working directory or system crash directory shortly after an RDP connection attempt (GitHub Advisory).

Mitigation and workarounds

Upgrade FreeRDP to version 3.21.0 or later, which contains the fix for this vulnerability (FreeRDP Release). Red Hat has issued multiple errata addressing this issue across RHEL 7, 8, 9, and 10 (RHSA-2026:2048, RHSA-2026:2081, RHSA-2026:2222, and others); users of affected RHEL versions should apply the relevant errata (Red Hat Bugzilla). Ubuntu, SUSE, Fedora, Rocky Linux, AlmaLinux, and other distributions have also released updated packages. As a workaround for systems that cannot be immediately patched, restrict FreeRDP client connections to trusted, verified RDP servers only, and implement network segmentation to prevent connections to untrusted endpoints.

Community reactions

The vulnerability was reported by security researcher ehdgks0627, who was credited in the FreeRDP 3.21.0 release notes for discovering multiple client-side vulnerabilities (CVE-2026-23530 through CVE-2026-23534 and others) (FreeRDP Release). Red Hat classified the issue as high severity and promptly issued errata for all supported RHEL versions within weeks of disclosure (Red Hat Bugzilla). Coverage appeared across Linux security news outlets including LinuxSecurity.com and Pro-Linux.de, reflecting broad distribution-level attention to the patch.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

freerdp2

Affected

sid

freerdp3: 3.21.0+dfsg-1

Fixed

trixie

freerdp3: 3.15.0+dfsg-2.1+deb13u1

Fixed

Ubuntu

Fixed

bionic (esm-apps)

freerdp

Unknown

bionic (esm-infra)

freerdp2: 2.2.0+dfsg1-0ubuntu0.18.04.4+esm3

Fixed

devel

freerdp3

Not Affected

focal (esm-infra)

freerdp2: 2.6.1+dfsg1-0ubuntu0.20.04.2+esm1

Fixed

jammy

freerdp2: 2.6.1+dfsg1-3ubuntu2.8

Fixed

noble

freerdp2

Affected

noble (esm-apps)

freerdp2: 2.11.5+dfsg1-1ubuntu0.1~esm3

Fixed

questing

freerdp3: 3.16.0+dfsg-2ubuntu0.3

Fixed

RHEL / CentOS

Fixed

RHEL 8

:appstream:freerdp-2:2.11.7-2.el8_10.src

Fixed

RHEL 9

:appstream:freerdp-2:2.4.1-3.el9_0.src

Fixed

RHEL 10

freerdp-2:3.10.3-3.el10_0.1.src

Fixed

Alpine

Fixed

edge

freerdp: 3.21.0-r0

Fixed

v3.23

freerdp: 3.22.0-r0

Fixed

Source: This report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-116199CRITICAL9.2
  • NixOS logoNixOS
  • cpe:2.3:a:snipeitapp:snipe-it
NoYesOct 25, 2026
CVE-2026-116201HIGH8.7
  • NixOS logoNixOS
  • cpe:2.3:a:snipeitapp:snipe-it
NoYesOct 25, 2026
CVE-2026-116200HIGH8.2
  • NixOS logoNixOS
  • cpe:2.3:a:snipeitapp:snipe-it
NoYesOct 25, 2026
CVE-2026-2270MEDIUM5.9
  • NixOS logoNixOS
  • kubernetes
NoYesOct 26, 2026
CVE-2026-76654MEDIUM5.8
  • NixOS logoNixOS
  • cpe:2.3:a:kubernetes:kubernetes
NoYesOct 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management