CVE-2026-23534: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-23534 is a heap-based buffer overflow vulnerability in FreeRDP's ClearCodec bands decode path (clear_decompress_bands_data) that allows a malicious RDP server to trigger a client-side crash or potential arbitrary code execution. It affects all FreeRDP versions prior to 3.21.0. The vulnerability was disclosed on January 19, 2026, and patched in the same-day release of 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 an off-by-one bounds check error (CWE-122: Heap-based Buffer Overflow) in libfreerdp/codec/clear.c. The clear_decompress_bands_data function computes destination pixel offsets (nXDstRel, nYDstRel) from stream-supplied xStart/xEnd/yStart/yEnd coordinates and validates them using strict greater-than comparisons (> nDstWidth and > nDstHeight). Because the check uses > instead of >=, coordinates equal to the surface dimensions pass validation, causing FreeRDPWriteColor_int to write one pixel past the end of the heap-allocated destination surface buffer. The exploit path is: rdpgfx_decode → gdi_SurfaceCommand_ClearCodec → clear_decompress_bands_data → FreeRDPWriteColor_int, triggered via a crafted WIRE_TO_SURFACE_PDU_1 message over the RDP Graphics Pipeline channel (GitHub Advisory, Source Code).

Impact

A malicious RDP server can reliably crash a connecting FreeRDP client (denial of service) by sending a crafted ClearCodec band payload. Beyond DoS, the out-of-bounds heap write introduces heap corruption that, depending on allocator behavior and surrounding heap layout, could enable arbitrary code execution on the client system. The vulnerability is entirely client-side — only users connecting to a malicious or compromised RDP server are at risk — but no user interaction beyond initiating an RDP session is required (GitHub Advisory, Red Hat Bugzilla).

Exploitability

A proof-of-concept exploit (AddressSanitizer crash reproducer) is publicly available in the GitHub security advisory, demonstrating reliable heap-buffer-overflow triggering. The CVSS v4.0 exploit maturity is rated PROOF_OF_CONCEPT. The EPSS score is approximately 0.093%, indicating low but non-zero probability of near-term exploitation. No in-the-wild exploitation has been reported, and the vulnerability is not currently listed in the CISA KEV catalog. No specific threat actor attribution is known (GitHub Advisory, Feedly).

Exploitation steps

  1. Set up a malicious RDP server: Deploy a custom or modified RDP server (e.g., using FreeRDP server components or a custom implementation) capable of sending crafted Graphics Pipeline Extension (RDPGFX) messages.
  2. Lure the victim client: Convince a user running FreeRDP < 3.21.0 to connect to the attacker-controlled server (e.g., via phishing, DNS poisoning, or man-in-the-middle on an untrusted network).
  3. Establish RDP session: Complete the standard RDP handshake and negotiate the Graphics Pipeline channel (rdpgfx) with the client.
  4. Send crafted WIRE_TO_SURFACE_PDU_1: Transmit a WIRE_TO_SURFACE_PDU_1 message using ClearCodec encoding with a bands section containing xStart/xEnd/yStart/yEnd coordinates crafted so that nXDstRel + i == nDstWidth or nYDstRel + y == nDstHeight — values that pass the flawed > bounds check but cause an out-of-bounds write.
  5. Trigger heap overflow: The client's clear_decompress_bands_data function computes an out-of-bounds destination pointer and FreeRDPWriteColor_int writes pixel data past the end of the allocated surface buffer.
  6. Achieve DoS or code execution: At minimum, the client process crashes (DoS). With heap layout manipulation (e.g., heap grooming via prior RDP messages to control adjacent allocations), an attacker may achieve controlled heap corruption enabling code execution (GitHub Advisory).

Indicators of compromise

  • Process: Unexpected crash or abort of the xfreerdp, wlfreerdp, or other FreeRDP client process immediately after connecting to an RDP server; crash dumps referencing clear_decompress_bands_data, FreeRDPWriteColor_int, or libfreerdp/codec/clear.c.
  • Logs: AddressSanitizer output (if compiled with ASan) showing heap-buffer-overflow at FreeRDPWriteColor_int in color.h:42; application crash logs or core dumps from FreeRDP client processes.
  • Network: RDP sessions to unfamiliar or unexpected server IP addresses; WIRE_TO_SURFACE_PDU_1 messages with anomalous ClearCodec band coordinate values (detectable via RDP protocol inspection tools such as Wireshark with RDP dissectors).
  • File System: Unexpected core dump files (e.g., core.*) in the working directory of the FreeRDP client process following an RDP session.

Mitigation and workarounds

The primary remediation is to upgrade FreeRDP to version 3.21.0 or later, which tightens the destination bounds checks in clear_decompress_bands_data to use exclusive upper bounds (>=) (FreeRDP Release). Red Hat has issued patches for RHEL 8 (RHSA-2026:2081), RHEL 9 (RHSA-2026:2048), RHEL 10 (RHSA-2026:2222), and extended support variants (Red Hat Bugzilla). Fedora, SUSE, Ubuntu, openSUSE, Rocky Linux, AlmaLinux, Amazon Linux 2, and Mageia have also released updated packages. As a workaround where patching is not immediately possible, restrict FreeRDP client connections to trusted, verified RDP servers only, and avoid connecting to unknown or untrusted RDP 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 fixed in that release (FreeRDP Release). Red Hat classified the issue as high severity and tracked it through multiple errata across RHEL versions. Coverage appeared on Linux security news aggregators (linuxsecurity.com, pro-linux.de, linuxcompatible.org) and vulnerability databases shortly after disclosure. No significant social media controversy or broader industry debate has been noted.

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.11.2-1.el9_4.1.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-112940HIGH7.1
  • Python logoPython
  • py3-filelock
NoYesOct 20, 2026
CVE-2026-112937MEDIUM6.1
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112936MEDIUM6.1
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112939MEDIUM4.7
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112941LOW3.3
  • Python logoPython
  • filelock
NoYesOct 20, 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