CVE-2026-33977: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-33977 is a Denial of Service vulnerability in FreeRDP, a free implementation of the Remote Desktop Protocol, affecting all versions prior to 3.24.2. A malicious RDP server can crash the FreeRDP client by sending IMA ADPCM audio data with an invalid initial step index value (>= 89), triggering a WINPR_ASSERT() failure and process abort via SIGABRT. The vulnerability was published on March 30, 2026, and patched in version 3.24.2. It carries a CVSS v3.1 base score of 6.5 (Medium) and a CVSS v4.0 base score of 6.9 (Medium) (GitHub Advisory, Red Hat).

Technical details

The root cause is classified as CWE-617 (Reachable Assertion) and CWE-1285 (Improper Validation of Specified Index, Position, or Offset in Input). In libfreerdp/codec/dsp.c, the function freerdp_dsp_decode_ima_adpcm() reads the initial IMA ADPCM step index directly from the server's RDPSND audio payload at lines 405 and 416 without prior validation: context->adpcm.ima.last_step[0] = (INT16)(*(src + 2));. This value (range 0–255) is then passed to dsp_decode_ima_adpcm_sample(), where WINPR_ASSERT(WINPR_CXX_COMPAT_CAST(size_t, offset) < ARRAYSIZE(ima_step_size_table)) fires at line 331 if the index is >= 89 (the table has exactly 89 entries), calling abort() and crashing the client. A clamping check does exist in the code but only executes after the first sample decode — too late to prevent the assertion failure on the initial unclamped value from the network (GitHub Advisory, Patch Commit).

Impact

Successful exploitation results in an immediate crash (SIGABRT) of the FreeRDP client process, causing a complete loss of availability for the affected session. There is no confidentiality or integrity impact — the vulnerability is purely a Denial of Service. All FreeRDP-based clients (xfreerdp, SDL client, and any third-party application using libfreerdp) that connect to a malicious RDP server with audio redirection (RDPSND) enabled are affected; since RDPSND is enabled by default, the attack surface is broad (GitHub Advisory).

Exploitability

A proof-of-concept (PoC) exploit in C (poc_adpcm.c) is publicly available in the GitHub security advisory, with complete compilation and execution instructions demonstrating the crash (GitHub Advisory). The vulnerability requires user interaction — the victim must connect to a malicious RDP server — but no privileges are required on the attacker's side. There is no evidence of in-the-wild exploitation at this time, and no threat actor attribution has been reported. The EPSS score is approximately 0.042%, indicating low probability of exploitation in the near term (Feedly). The vulnerability is not listed in the CISA KEV catalog.

Exploitation steps

  1. Set up a malicious RDP server: The attacker configures a rogue RDP server (e.g., using a custom implementation or modified FreeRDP server) that advertises support for the RDPSND (audio redirection) channel.
  2. Lure the victim to connect: The attacker tricks a user running a vulnerable FreeRDP client (version <= 3.24.1) into connecting to the malicious server, for example via a phishing link or a man-in-the-middle scenario.
  3. Negotiate RDPSND channel: During the RDP session setup, the server negotiates the RDPSND audio redirection channel, which is accepted by default in FreeRDP client configurations.
  4. Send crafted IMA ADPCM audio block: The server sends an RDPSND audio payload in IMA ADPCM format where the step index byte (at offset +2 in the block header) is set to a value >= 89 (e.g., 200). This value is read directly into context->adpcm.ima.last_step[0] without validation.
  5. Trigger WINPR_ASSERT failure: When the client attempts to decode the first audio sample, dsp_decode_ima_adpcm_sample() evaluates WINPR_ASSERT((size_t)offset < 89) with offset=200, which fails, calling abort() and terminating the client process via SIGABRT (GitHub Advisory).

Indicators of compromise

  • Process: Unexpected termination of the FreeRDP client process (xfreerdp, sdl-freerdp, or libfreerdp-based app) with a SIGABRT signal; crash dumps or core files generated by the FreeRDP process.
  • Logs: System logs (e.g., /var/log/syslog, journald) showing entries like [FATAL][com.freerdp.winpr.assert] - [winpr_int_assert]: Assertion failed followed by process abort; application crash reports referencing dsp.c:331.
  • Network: Outbound RDP connections (TCP port 3389) to unfamiliar or untrusted IP addresses, particularly if followed immediately by connection termination; repeated connection attempts to the same suspicious server.

Mitigation and workarounds

Upgrade FreeRDP to version 3.24.2 or later, which introduces a dsp_ima_clamp_step() function that validates and clamps the step index immediately after reading it from the network, before any assertion is evaluated (Patch Commit). As a workaround for users who cannot immediately upgrade, disable audio redirection (RDPSND) when connecting to RDP servers by passing the /audio-mode:2 or equivalent flag to suppress the RDPSND channel. Users should also exercise caution when connecting to untrusted or unknown RDP servers, as exploitation requires the client to initiate a connection to a malicious server (GitHub Advisory, Red Hat Bugzilla).

Community reactions

Red Hat tracked the issue via Bugzilla (Bug 2453224) and assigned it medium severity, reflecting the limited impact scope (DoS only, requires user interaction) (Red Hat Bugzilla). The vulnerability was reported by a researcher identified as "Sebasteuo" and acknowledged by FreeRDP maintainer akallabeth, who published the advisory and patch promptly (GitHub Advisory). Downstream Linux distributions including Fedora, openSUSE, Amazon Linux 2/2023, and Debian have issued security updates incorporating the fix.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

freerdp2

Affected

sid

freerdp3: 3.24.2+dfsg-1

Fixed

trixie

freerdp3: 3.15.0+dfsg-2.1+deb13u2

Fixed

Ubuntu

Fixed

bionic (esm-apps)

freerdp

Unknown

bionic (esm-infra)

freerdp2

Unknown

devel

freerdp3

Not Affected

focal (esm-infra)

freerdp2

Unknown

jammy

freerdp2

Unknown

noble

freerdp3: 3.30.0+dfsg-0ubuntu0.24.04.1

Fixed

noble (esm-apps)

freerdp2

Unknown

resolute

freerdp3

Not Affected

RHEL / CentOS

Affected

RHEL 8

freerdp.src

Affected

RHEL 9

freerdp.src

Affected

RHEL 10

freerdp.src

Affected

Alpine

Fixed

edge

freerdp: 3.24.2-r0

Fixed

v3.23

freerdp: 3.24.2-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