CVE-2026-110829
Executive Summary
CVE-2026-110829 is a null pointer dereference (CWE-476) in the FreeRDP rdpsnd audio channel affecting all versions from 3.0.0 up to (but excluding) 3.32.0. A malicious or compromised RDP server can send a malformed rdpsnd PDU on a fresh channel — one that sets CHANNEL_FLAG_LAST without CHANNEL_FLAG_FIRST — causing the client to dereference a null pointer and crash, resulting in client-side denial of service. The vulnerability requires user interaction (the victim must connect to the attacker-controlled RDP server) and has no impact on confidentiality or integrity, yielding a CVSS 3.1 base score of 6.5 (Medium).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The rdpsnd channel is FreeRDP's implementation of the RDP Audio Output Virtual Channel, used to transport audio playback data from a remote RDP server to the local client. In the RDP virtual channel protocol, a channel data fragment is described by a header carrying flag bits. Two of the most semantically significant are CHANNEL_FLAG_FIRST, marking the first fragment of a logical channel message, and CHANNEL_FLAG_LAST, marking the final fragment. In well-formed traffic, CHANNEL_FLAG_FIRST precedes or coincides with CHANNEL_FLAG_LAST, and receivers scope each message by observing the FIRST marker when the reassembly buffer is initialized.
CVE-2026-110829 arises from the client's failure to validate flag sequencing. When a fragment arrives that carries CHANNEL_FLAG_LAST but not CHANNEL_FLAG_FIRST on a channel that has not yet been initialized by a FIRST fragment, the receiving code path processes a channel state that was never allocated or populated. The NVD description states this results in a null pointer dereference. The essential mechanism is a state-machine validation gap: the parser assumes that any fragment reaching the reassembly logic has a valid context, and the LAST-without-FIRST ordering bypasses that assumption. Rather than rejecting the malformed fragment as a protocol violation, the client dereferences invalid state.
The attack surface is the RDP client's virtual channel demultiplexer as it is exposed to server-originated rdpsnd traffic over the established RDP connection. Critically, the flaw is triggerable on a "fresh channel" — meaning the malicious server does not need prior legitimate audio traffic to prime the channel before delivering the malformed PDU. This removes any requirement for an established benign session state and lowers the bar for reliable triggering. The vulnerability is entirely client-side and server-triggered: exploitation depends on the victim initiating an RDP session to a server under attacker control.
Because the impact is a crash (availability loss on the client endpoint) and the CVSS vector carries C:N/I:N, there is no evidenced path to memory corruption, code execution, or data disclosure from this specific flaw.
Exploitation Scenarios
No public proof-of-concept, exploit code, or Nuclei template is available for CVE-2026-110829. The attack chain below is inferred strictly from the vulnerability class and the NVD description; no specific function names, endpoints, or code patterns beyond those in the description are claimed.
Reconnaissance / target identification. The attacker requires a target user (or automated RDP client deployment) to connect to an RDP server the attacker controls. The attack is therefore not a scan-and-exploit mass campaign against exposed services; it is a client-side or social-engineering-driven scenario. Typical vectors: a malicious RDP server offered via phishing, a typosquatted or attacker-registered remote-desktop host, a compromised or hostile cloud/RDP-broker endpoint, or a supply-chain/interposition position on the network between client and server (e.g., an on-path adversary able to inject server responses).
Precondition establishment. The victim initiates a FreeRDP client connection (3.0.0 ≤ version < 3.32.0) to the malicious server and completes enough of the RDP handshake for virtual channel negotiation, including the
rdpsndaudio channel, to occur.Triggering the specific flaw class. The malicious server sends a malformed
rdpsndchannel PDU in which the fragment flags setCHANNEL_FLAG_LASTwithoutCHANNEL_FLAG_FIRST, delivered on a freshrdpsndchannel with no preceding FIRST fragment. This presents a LAST-terminated fragment to the client's reassembly/dispatch path before any channel context for that message exists. Per the description, the client dereferences a null pointer and crashes.Post-exploitation impact. The outcome is a client-side crash — denial of service. FreeRDP terminates (or the hosting application embedding the client aborts). The exploit does not, per available data, yield code execution, lateral movement, or data theft. An attacker could repeatedly target a user or an automated client to achieve persistent denial of service against remote-desktop workflows.
Impact Assessment
The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H scores 6.5 (Medium). Interpretation:
- AV:N (Network): the malformed PDU travels over the network as part of the RDP session.
- AC:L (Low): the description indicates a simple flag-ordering condition reliably triggers the defect; no race or complex grooming is described.
- PR:N (None): the attacker needs no privileges on the target.
- UI:R (Required): the victim must connect to the attacker-controlled server — this is the principal limiting factor.
- S:U (Unchanged): impact stays within the client process boundary.
- C:N/I:N/A:H (High availability impact): a successful trigger crashes the client but does not disclose or alter data.
Blast radius. Any application or environment using an affected FreeRDP version as an RDP client: standalone xfreerdp/wlfreerdp sessions, thin clients, virtual desktop infrastructure gateways, jump hosts, build/CI agents that spawn RDP sessions, and products embedding FreeRDP. Because exploitation requires an outbound connection to a hostile server, the risk concentrates on users who connect to untrusted, unknown, or externally influenced RDP endpoints.
Business impact. Loss of user productivity and interruption of remote administration or automation tasks; potential operational disruption if RDP-connected thin clients, kiosks, or automated sessions are repeatedly crashed. Severity is moderated by the absence of confidentiality/integrity impact and the user-interaction requirement.
Detection Guidance
Sigma Rule
title: FreeRDP rdpsnd Null Pointer Dereference DoS Attempt (CVE-2026-110829)
id: 5f2c9a41-0d7b-4e88-9a63-0bd1f7a1c6e2
status: experimental
description: Detects crash or abnormal termination of FreeRDP clients consistent with a malformed rdpsnd PDU (CHANNEL_FLAG_LAST without CHANNEL_FLAG_FIRST) sent by a malicious RDP server.
author: Valters IT Threat Intelligence
date: 2026-01-01
logsource:
category: process_creation
product: windows
detection:
selection_proc:
Image|endswith:
- '\wfreerdp.exe'
- '\xfreerdp.exe'
- '\freerdp.exe'
selection_err:
CommandLine|contains:
- 'rdpsnd'
condition: selection_proc and selection_err
falsepositives:
- Legitimate use of the rdpsnd audio channel against trusted servers
level: low
tags:
- attack.t1499
- cve.2026-110829
YARA Rule
rule CVE_2026_110829_FreeRDP_rdpsnd_Malformed_Fragment
{
meta:
author = "Valters IT Threat Intelligence"
description = "Detects FreeRDP rdpsnd channel handling related to CHANNEL_FLAG_FIRST / CHANNEL_FLAG_LAST flag validation (CVE-2026-110829). Heuristic string match; verify context before alerting."
cve = "CVE-2026-110829"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-110829"
date = "2026-01-01"
strings:
$ch_a = "CHANNEL_FLAG_FIRST" ascii
$ch_b = "CHANNEL_FLAG_LAST" ascii
$rdp1 = "rdpsnd" ascii nocase
$rdp2 = "FreeRDP" ascii nocase
condition:
uint16(0) == 0x5A4D and 2 of ($ch_*) and $rdp1
or 3 of them
}
Suricata IDS Rule
alert tcp any any -> any 3389 ( \
msg:"CVE-2026-110829 FreeRDP rdpsnd malformed fragment (CHANNEL_FLAG_LAST without FIRST) DoS attempt"; \
flow:established,from_server; \
content:"|02 00 00 00|"; depth:4; \
flowbits:isset,rdp.conn; \
threshold:type limit, track by_src, count 1, seconds 60; \
classtype:attempted-dos; \
reference:cve,2026-110829; \
reference:url,nvd.nist.gov/vuln/detail/CVE-2026-110829; \
sid:2026110829; rev:1; )
Elastic Detection
sequence by process.entity_id with maxspan=5s
[process where process.name in ("xfreerdp","wlfreerdp","wfreerdp","freerdp") and process.command_line : "*rdpsnd*"]
[process where event.type == "end" and process.exit_code != 0 and process.name in ("xfreerdp","wlfreerdp","wfreerdp","freerdp")]
Splunk SPL Query
index=endpoint OR index=sysmon (Image="*\\xfreerdp*" OR Image="*\\wlfreerdp*" OR Image="*\\wfreerdp*" OR Image="*\\freerdp*")
| search CommandLine="*rdpsnd*" OR CommandLine="*rdp*"
| stats count min(_time) as first_seen max(_time) as last_seen by host, Image, CommandLine, User
| where count >= 1
| sort - count
Wazuh OSSEC Rule
<group name="freerdp,cve-2026-110829,">
<rule id="1108290" level="5">
<decoded_as>json</decoded_as>
<field name="program">^FreeRDP</field>
<match>rdpsnd|null pointer|segmentation fault|invalid channel fragment</match>
<description>CVE-2026-110829: Possible FreeRDP rdpsnd null pointer dereference / crash triggered by malformed RDP server PDU</description>
<mitre>
<id>T1499</id>
</mitre>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 — UNPATCHED. No patch evidence has been identified from any tracked source; no vendor fix, workaround, or affected-version advisory metadata was supplied.
Immediate mitigations (compensating controls):
- Do not connect FreeRDP clients (3.0.0 ≤ version < 3.32.0) to untrusted, unknown, or externally controlled RDP servers. Treat connecting to a third-party RDP endpoint as a trust decision.
- Where audio output is not required, disable the
rdpsndaudio virtual channel at the client to remove the attack surface for this specific flaw. Confirm channel-restriction options for your FreeRDP build and test before broad deployment. - Restrict outbound RDP (TCP/3389) from client networks to approved server destinations via egress filtering/firewall policy.
- Enable endpoint crash/telemetry monitoring to detect abnormal FreeRDP process termination and correlate with destination RDP hosts.
- Consider application allowlisting and process supervision to auto-restart critical thin-client/thin-host sessions (resilience, not prevention).
Patch / upgrade steps:
- No confirmed patch exists as of this report. Monitor the FreeRDP project for a fix and validate any release that advances past the affected range. The description bounds the affected range as "3.0.0 before 3.32.0," implying a fixed release at or beyond 3.32.0, but no vendor patch or fixed version has been independently confirmed in the supplied data — do not treat 3.32.0 as verified until the vendor states so.
- When a fix is published: inventory all FreeRDP deployments (standalone clients, embedded SDK consumers, thin clients, VDI gateways), stage the upgrade in a test environment, then roll out. Track third-party products that embed FreeRDP separately, as they require vendor-supplied updates.
Long-term hardening:
- Maintain a software bill of materials (SBOM) that identifies FreeRDP and its embedded dependencies to speed future impact assessments.
- Standardize on connecting only to RDP endpoints over mutually authenticated, encrypted transport and to approved infrastructure.
- Adopt fuzzing/robustness testing expectations for RDP client virtual channels when selecting or embedding clients.
- Subscribe to FreeRDP project advisories and the NVD entry to receive authoritative patch status.
References
- NVD — CVE-2026-110829: https://nvd.nist.gov/vuln/detail/CVE-2026-110829
- FreeRDP Project — official repository and release advisories: https://github.com/FreeRDP/FreeRDP
- MITRE ATT&CK — T1499 Endpoint Denial of Service: https://attack.mitre.org/techniques/T1499/
- CWE-476: NULL Pointer Dereference: https://cwe.mitre.org/data/definitions/476.html
- FIRST EPSS: Not yet scored for this CVE (no EPSS value available at time of reporting)
Threat actor / exploit-in-the-wild status: No public proof-of-concept, exploit code, Nuclei template, or evidence of in-the-wild exploitation was provided. CVE-2026-110829 is not listed in CISA KEV, and no associated threat actor campaigns are known from the supplied data. All exploitation detail above is inferred from the documented vulnerability class and NVD description only.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.