CVE-2026-22858: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-22858 is a global buffer overflow vulnerability in FreeRDP's Base64 decoding path (crypto_base64_decode), affecting all versions prior to 3.20.1. The flaw was discovered during RDP fuzzing and disclosed on January 14, 2026, by researcher ehdgks0627 (GitHub Advisory). It affects FreeRDP-based clients and the FreeRDP proxy component (for load-balanced server redirection scenarios); FreeRDP-based servers are not affected (FreeRDP Release). The vulnerability carries a CVSS v3.1 base score of 9.1 (Critical) and a CVSS v4.0 base score of 5.6 (Medium) (Red Hat CVE).

Technical details

The root cause is implementation-defined char signedness behavior (CWE-758) combined with an out-of-bounds read (CWE-125) in libfreerdp/crypto/base64.c. On Arm/AArch64 builds, plain char is treated as unsigned, so the intended guard c <= 0 — designed to reject negative values and NUL — is legally optimized by the compiler into a simple c != 0 check. This allows non-ASCII bytes in the range 0x80–0xFF to bypass the range restriction and be used as an index into a global Base64 lookup table, causing an out-of-bounds read. The vulnerability is triggered during processing of a server redirection PDU (rdp_redirection_read_base64_wchar → crypto_base64_decode), meaning a malicious RDP server can deliver a crafted packet to exploit a connecting client (GitHub Advisory). The fix involves explicitly casting the character to signed char before comparison or enforcing -fsigned-char at the compiler level (FreeRDP Release).

Impact

A malicious RDP server can trigger a client-side global buffer overflow, resulting in a crash (denial of service) and potential information disclosure from adjacent global memory regions. The confidentiality and availability impacts are both rated HIGH under CVSS v3.1, with no integrity impact (GitHub Advisory). The vulnerability specifically affects FreeRDP clients and the FreeRDP proxy on Arm/AArch64 architectures; x86/x64 systems where char defaults to signed are not affected by this specific code path (Red Hat CVE).

Exploitability

A proof-of-concept (PoC) AddressSanitizer trace is included in the official GitHub Security Advisory, demonstrating the global-buffer-overflow in base64_decode_char (GitHub Advisory). The CVSS v4.0 exploit maturity is rated PROOF_OF_CONCEPT. No evidence of active in-the-wild exploitation has been reported, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score is approximately 0.044%, indicating a low current probability of exploitation (Red Hat CVE). Exploitation requires the victim client to connect to a malicious or compromised RDP server, and the issue is architecture-specific (Arm/AArch64).

Exploitation steps

  1. Set up a malicious RDP server: The attacker deploys a rogue RDP server (or compromises a legitimate one) capable of sending crafted server redirection PDUs during the RDP session establishment phase.
  2. Lure the victim client: The attacker tricks a FreeRDP-based client running on an Arm/AArch64 system (version ≤ 3.20.0) into connecting to the malicious server, e.g., via phishing, DNS poisoning, or a compromised load balancer.
  3. Send a crafted redirection PDU: During the connection, the server sends a Server Redirection PDU containing Base64-encoded data with non-ASCII bytes (0x80–0xFF) embedded in the targetCert or related fields processed by rdp_redirection_read_base64_wchar.
  4. Trigger out-of-bounds read: The FreeRDP client passes the malicious Base64 data to crypto_base64_decode → base64_decode → base64_decode_char. On AArch64, the compiler-optimized guard (c != 0 instead of c <= 0) allows the non-ASCII byte to be used as an array index into the global lookup table, causing an out-of-bounds read.
  5. Achieve DoS or information leak: The out-of-bounds access crashes the client process (DoS) or may expose adjacent global memory contents, depending on the specific byte values and memory layout (GitHub Advisory).

Indicators of compromise

  • Process: FreeRDP client process (xfreerdp, wfreerdp, or similar) crashing unexpectedly, particularly on Arm/AArch64 systems, with SIGABRT or SIGSEGV signals during or shortly after RDP server connection.
  • Logs: AddressSanitizer output (if ASan-enabled builds are used) referencing base64_decode_char in libfreerdp/crypto/base64.c:406 and crypto_base64_decode in the stack trace; application crash logs from FreeRDP clients.
  • Network: Unexpected or unsolicited RDP Server Redirection PDUs received from an RDP server, especially from servers not previously known to use load balancing or redirection; connections to unfamiliar RDP endpoints.
  • File System: Core dump files generated by the FreeRDP client process in the working directory or system crash dump location (GitHub Advisory).

Mitigation and workarounds

The vulnerability is fixed in FreeRDP version 3.20.1, released January 14, 2026 (FreeRDP Release). All users of FreeRDP ≤ 3.20.0 on any architecture should upgrade immediately, with particular urgency for Arm/AArch64 deployments. Red Hat has issued patches across multiple RHEL versions (7, 8, 9, 10) via errata RHSA-2026:3067, RHSA-2026:3068, RHSA-2026:3334, and several EUS/SAP advisories (Red Hat Bugzilla). As a temporary workaround where patching is not immediately possible, restrict FreeRDP client connections to trusted RDP servers only, and disable or limit RDP proxy redirection features. Organizations can also compile FreeRDP with -fsigned-char to enforce consistent char signedness as a build-level mitigation.

Community reactions

The vulnerability was reported by security researcher ehdgks0627, who was credited in the FreeRDP 3.20.1 release notes for uncovering multiple medium-severity vulnerabilities through code review and fuzzing (FreeRDP Release). Red Hat triaged the issue as high severity and issued patches across all supported RHEL versions within approximately six weeks of disclosure (Red Hat Bugzilla). Downstream Linux distributions including openSUSE, Fedora, AlmaLinux, Rocky Linux, Oracle Linux, Ubuntu, and Debian also issued security updates addressing this CVE. The vulnerability received coverage from security news aggregators and Linux security advisory services, though no major independent researcher commentary or significant social media discussion was observed beyond routine CVE tracking.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

freerdp2

Affected

sid

freerdp3: 3.20.2+dfsg-1

Fixed

trixie

freerdp3: 3.15.0+dfsg-2.1+deb13u1

Fixed

Ubuntu

Fixed

bionic (esm-apps)

freerdp

Unknown

bionic (esm-infra)

freerdp2

Unknown

devel

freerdp3: 3.20.2+dfsg-1

Fixed

focal (esm-infra)

freerdp2

Unknown

jammy

freerdp2

Unknown

noble

freerdp3: 3.5.1+dfsg1-0ubuntu1.4

Fixed

noble (esm-apps)

freerdp2

Unknown

questing

freerdp3: 3.16.0+dfsg-2ubuntu0.3

Fixed

RHEL / CentOS

Fixed

RHEL 8

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

Fixed

RHEL 9

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

Fixed

RHEL 10

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

Fixed

Alpine

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