☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Freerdp logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 🐛 CWE-122
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-63633

CVE-2026-63633 Code Execution in FreeRDP
📅 PUBLISHED: 2026-08-19 00:00 UTC 🔄 UPDATED: 2026-10-02 10:29 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.62%
👁️
0.62% probability
15.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Open Source
Affected: Freerdp — upgrade to patched release
CVSS VECTOR BREAKDOWN 9.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
9.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-63633 is a heap buffer overflow vulnerability in FreeRDP, a popular open-source implementation of the Remote Desktop Protocol. The vulnerability exists in the Opus audio decoder path, where a malicious RDP server can trigger a large decoded frame write beyond the bounds of an allocated 4096-byte destination buffer. An attacker who controls an RDP server can exploit this flaw against a client connecting to it, leading to client heap corruption, denial-of-service (crash), and potentially arbitrary code execution on the victim's machine. The flaw affects all FreeRDP clients built with WITH_OPUS enabled and WITH_DSP_FFMPEG disabled, prior to version 3.28.0. The vulnerability is remotely triggerable without authentication, requiring only user interaction in the form of initiating an RDP connection to a malicious server.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides in the audio decompression pipeline of FreeRDP's client-side audio subsystem. The specific code path involves freerdp_dsp_decode_opus located in libfreerdp/codec/dsp.c. In this function, the code calls Stream_EnsureRemainingCapacity on context->common.buffer — a check intended to ensure the output buffer is large enough for the decoded audio data. However, this check is performed on the wrong buffer. The opus_decode library function directly writes its decoded PCM audio output into a caller-supplied destination stream, not into context->common.buffer.

This mismatch becomes critical because the actual destination buffer used in the audio redirection channel (channels/rdpsnd/client/rdpsnd_main.c) is allocated from a StreamPool_Take operation that reserves a fixed 4096-byte buffer. A malicious RDP server can negotiate WAVE_FORMAT_OPUS encoding and then deliver an Opus frame that decodes to a much larger PCM sample (Opus supports decoding a single frame into up to 120ms of audio, which — at typical sample rates of 48 kHz with 16-bit stereo — can exceed 20,000 bytes). Since the capacity check is performed against the wrong buffer, the actual destination does not get resized, resulting in a heap buffer overflow when opus_decode writes beyond the 4096-byte boundary.

Attack Surface: The vulnerable function is reachable via the RDP Audio Output (rdpsnd) channel. Any FreeRDP client that connects to an RDP server and negotiates audio redirection is exposed. The attack surface is the client-side component, making this a "malicious server attacks the client" scenario — a common and dangerous pattern in network protocols where the client-side component is expected to be the trust boundary.

Preconditions:

  • FreeRDP compiled with WITH_OPUS enabled (this is the default in most distributions)
  • FreeRDP compiled with WITH_DSP_FFMPEG disabled (default in many configurations)
  • The connecting client negotiates audio redirection with WAVE_FORMAT_OPUS codec
  • The attacker controls an RDP server

Root Cause Classification (CWE-122): This is a classic heap buffer overflow where memory is written beyond the bounds of a heap-allocated buffer. The overflow is triggered by an attacker-controlled size value (the Opus frame decode size), making the vulnerable structure reminiscent of CWE-787 (out-of-bounds write) but specifically classified under CWE-122 due to the heap memory context.

Exploitation Scenarios

Step 1 — Reconnaissance/Target Identification: An attacker operates a malicious RDP server on the internet or an internal network. Target identification typically happens through network scanning (e.g., detecting FreeRDP client software via user-agent strings in other services, endpoint detection, or simply asserting that any RDP client is vulnerable since this affects all prior versions). In enterprise environments, the attacker may target internal users who are known or likely to use Linux/Unix-based RDP clients (given FreeRDP's platform focus). The attack does not require prior knowledge of the client version — the server can attempt negotiation of WAVE_FORMAT_OPUS and the flaw triggers regardless of exact minor version as long as it is < 3.28.0.

Step 2 — Flaw Trigger Mechanism: The attacker configures their RDP server to advertise WAVE_FORMAT_OPUS as a supported audio codec during the RDP connection negotiation phase. When the victim client connects and audio redirection is established, the server sends an audio packet containing a crafted Opus frame. The frame is specifically constructed to decode to a PCM output larger than 4096 bytes (e.g., using a high bitrate, large frame size, or specific channel configuration that yields an output exceeding the fixed buffer size). The client's freerdp_dsp_decode_opus function processes this frame and calls opus_decode, which writes the decoded output directly into the 4096-byte StreamPool_Take buffer without proper bounds validation (due to the incorrect capacity check target).

Step 3 — Payload/Execution Method: The overflow writes data past the heap buffer boundary. In a controlled exploitation scenario, an attacker would groom the heap to place critical data structures (such as function pointers, object metadata, or adjacent buffers) immediately after the vulnerable 4096-byte buffer. By carefully crafting the decoded PCM audio data (which is largely attacker-controlled through the Opus bitstream), the attacker can overwrite adjacent heap metadata or function pointers. A common technique for such client-side overflows involves overwriting a function pointer or an object's virtual method table entry to redirect control flow to a gadget that executes shellcode or a ROP chain. The attacker may also leverage the overflow to corrupt the heap's integrity in a way that enables a subsequent write-what-where primitive via heap metadata manipulation.

Step 4 — Post-Exploitation Impact: Post-exploitation depends on the privileges of the user running the FreeRDP client. If the client runs in the context of a standard user, the attacker gains code execution with those privileges and can install persistence mechanisms, steal credentials, escalate privileges via other local vulnerabilities, or pivot laterally. If the client runs as root/Administrator (common in thin-client deployments, VDI setups, or unattended automation), the attacker gains immediate full system control. In the absence of a full exploit, the overflow at minimum causes a crash (denial of service) of the client application.

Note: No public PoC or exploit code has been observed in the wild as of this writing. The attack chain described above is inferred from the vulnerability class and the technical details present in the NVD description. Attackers with reverse-engineering capability can develop a working exploit using standard heap-overflow exploitation techniques.

Impact Assessment

Business Impact: This vulnerability represents a significant risk to enterprises that rely on FreeRDP for remote access. The most severe impact scenario involves a compromised or malicious RDP server delivering a payload to a connecting client. This is particularly relevant in:

  • VDI environments where thin clients or automation clients connect to centralized infrastructure
  • Corporate networks where users connect to untrusted RDP endpoints (e.g., connecting outside the corporate network to public-facing servers)
  • IT administration where administrators use FreeRDP clients from high-privilege accounts to connect to other machines

Blast Radius: The entire FreeRDP client ecosystem is affected, spanning Linux, macOS, and BSD platforms (with Windows builds also affected when compiled with Opus support). Given FreeRDP's widespread adoption in open-source desktop environments, embedded systems, and cloud VDI solutions, the potential exposure is substantial. Any system running FreeRDP < 3.28.0 with Opus support is vulnerable.

CVSS Considerations: Although no official CVSS score has been assigned, characteristics of this vulnerability align with a high-severity rating: network attack vector (the attacker can be anywhere reachable from the client), low attack complexity (no special conditions beyond client connection), no privileges required, low user interaction (the user must simply initiate an RDP connection), and high confidentiality/integrity/availability impact given the potential for code execution.

Confidence: CVSS Score: N/A per the provided data. Do not override with other sources. The lack of an official score from the CNA does not diminish the severity; mitigations should be prioritized given the code-execution potential.

Detection Guidance

Sigma Rule

title: FreeRDP Client Heap Buffer Overflow Attempt (CVE-2026-63633)
id: 8b8a2e3f-6c2d-4a9b-bc2e-8d4a2f5c6a9e
status: experimental
description: Detects FreeRDP client crash events or unusual memory behavior indicative of heap overflow exploitation attempts.
author: Valtersit Threat Intel Team
logsource:
    category: application
    product: freerdp
    definition: 'Look for crash events in FreeRDP client processes'
detection:
    selection_crash:
        EventLog: Application
        Provider_Name: 'Application Error'
        Application_Name: 'xfreerdp*'
        Faulting_Module: 'libfreerdp*'
    selection_repeated_crash:
        Application_Name: 'xfreerdp*'
        | count() > 3 by Computer
        timeframe: 15m
    condition: selection_crash or selection_repeated_crash
level: high
falsepositives:
    - Legitimate FreeRDP crashes from unrelated bugs
    - Memory pressure in constrained environments
tags:
    - attack.t1203
    - cve.2026-63633
    - cwe.122

YARA Rule

rule CVE_2026_63633_FreeRDP_Opus_Overflow
{
    meta:
        author = "Valtersit Threat Intel Team"
        description = "Detects suspicious FreeRDP Opus audio packets or patterns associated with heap overflow exploitation"
        date = "2026-04-01"
        cve = "CVE-2026-63633"
        severity = "high"
    strings:
        $opus_format = { 4F 50 55 53 }  // "OPUS" in RDP audio negotiation
        $wave_format_opus = { 00 02 00 00 }  // WAVE_FORMAT_OPUS tag (0x0002)
        $opus_decode_ref = { 6F 70 75 73 5F 64 65 63 6F 64 65 }  // "opus_decode"
        $stream_pool_pattern = { 10 00 00 00 }  // 4096-byte allocation size
    condition:
        uint16(0) == 0x4D42 or  // MZ header check (PE file)
        filesize < 10MB and
        (1 of them) and
        (
            $opus_format or
            ($wave_format_opus and #opus_decode_ref > 0)
        )
}

Suricata IDS Rule

alert tcp any any -> any 3389 (msg:"ET EXPLOIT FreeRDP Opus Audio Heap Overflow Attempt (CVE-2026-63633)"; flow:to_client; content:"|00 02|"; offset:0; depth:2; content:"|4F 50 55 53|"; within:50; content:"|00 00|"; within:100; threshold:type both, track by_src, count 5, seconds 60; classtype:attempted-user; sid:63633; rev:1; metadata:created_at 2026-04-01, updated_at 2026-04-01, cve 2026-63633, mitre_attack T1203;)

Note: Due to the encrypted nature of RDP after the connection is established (TLS or the native RDP Security), the Suricata rule above is a best-effort detection baseline for pre-encryption handshake traffic. For post-handshake detection, network-level detection requires TLS interception. This limitation is noted for SOC teams.

Elastic Detection

query: |
  event.category: process AND
  process.name: (xfreerdp or freerdp or wlfreerdp) AND
  event.action: crash AND
  (process.args: "*rdpsnd*" or process.args: "*audio*") AND
  NOT process.exit_code: 0

# EQL equivalent
search_examples:
  - |
    process where event.action == "crash" and
    process.name in ("xfreerdp", "wlfreerdp", "sfreerdp") and
    wildcard(process.args, "*rdpsnd*", "*audio*")
  - |
    file where event.action in ("write", "modification") and
    process.name == "xfreerdp" and
    file.size > 4096 and
    file.extension == "pcm"

Splunk SPL Query

index=windows OR index=linux
  (source="WinEventLog:Application" AND EventCode=1000 AND Application_Name="xfreerdp*")
  OR (source="/var/log/messages" AND "segfault" AND "xfreerdp")
  OR (source="/var/log/syslog" AND "xfreerdp" AND ("heap" OR "corruption" OR "abort"))
| statistics count by host, Application_Name, Faulting_Module
| where count > 3
| sort - count
| table _time, host, Application_Name, Faulting_Module, count

Wazuh OSSEC Rule

<group name="freerdp,cve_2026_63633,exploitation,">
  <rule id="538710" level="12" frequency="3" timeframe="300">
    <if_matched_group>freerdp_alert</if_matched_group>
    <description>CVE-2026-63633: Repeated FreeRDP client crashes - possible heap overflow exploitation</description>
    <group>cve-2026-63633,exploitation,heap_overflow,</group>
    <options>no_full_log</options>
  </rule>

  <rule id="538711" level="10">
    <if_sid>63633</if_sid>
    <match>segfault|SIGSEGV|heap corruption|memory corruption|AddressSanitizer</match>
    <description>CVE-2026-63633: FreeRDP crash signature matching heap overflow pattern</description>
    <group>cve-2026-63633,exploitation,heap_overflow,</group>
  </rule>

  <rule id="538712" level="8">
    <if_sid>63633</if_sid>
    <match>opus_decode|rdpsnd|WAVE_FORMAT_OPUS</match>
    <description>CVE-2026-63633: FreeRDP Opus audio processing crash - potential exploitation attempt</description>
    <group>cve-2026-63633,exploitation,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Status: UNPATCHED in all versions prior to 3.28.0 — Patch Confidence 0/4. While the NVD description states the issue is fixed in version 3.28.0, no official vendor advisory or patch source has been verified by our tracking systems. Exercise caution and validate that the upgrade is from a trusted source.

Immediate Mitigations (without patch):

  1. Disable Opus audio negotiation — Configure FreeRDP clients to not negotiate WAVE_FORMAT_OPUS. This can be done by setting the client configuration to force a different audio codec (e.g., PCM or WAVE_FORMAT_44K16BITMONO). In most builds, this is controlled via command-line flags (e.g., -sound with specific codec options) or in the freerdp configuration file.
  2. Disable audio redirection entirely — If audio is not business-critical, launch FreeRDP clients with audio redirection disabled. Most CLI clients support flags to disable audio (e.g., -no-sound or equivalent), which removes the vulnerable code path from reach.
  3. Network segmentation / egress filtering — Restrict outbound RDP (TCP 3389) connections from client workstations to only approved internal servers. This prevents users from connecting to arbitrary malicious servers on the internet.
  4. Use a trusted RDP gateway — Route RDP connections through a mediated gateway that can filter or terminate connections to untrusted endpoints.
  5. Run FreeRDP client in a sandbox — If the use case permits, run the client in a virtual machine, container with memory limits, or with a low-privilege OS account to reduce the blast radius of a successful exploit.

Patch/Upgrade Steps:

  1. Upgrade to FreeRDP version 3.28.0 or later once the official release is confirmed and trusted.
  2. For package-managed distributions (Debian/Ubuntu, RHEL/Fedora, Arch), monitor for the updated package version and apply it through the standard package manager.
  3. For source builds, pull the referenced commit that addresses the freerdp_dsp_decode_opus buffer handling issue from the official FreeRDP git repository (github.com/FreeRDP/FreeRDP).
  4. Verify the patch by checking the version output (xfreerdp --version) and confirming it reports ≥ 3.28.0.

Long-term Hardening:

  1. Follow a vendor advisory — Subscribe to the FreeRDP security mailing list or GitHub release notifications to be alerted to future security updates.
  2. Memory-safe build options — Rebuild FreeRDP with compiler hardening flags: -fstack-protector-strong -D_FORTIFY_SOURCE=2 -pie -fPIE. Consider using AddressSanitizer (-fsanitize=address) in development/hardening builds to catch memory errors during QA.
  3. Implement client-side attack surface reduction — Evaluate whether audio redirection is necessary for all user populations. Create multiple configuration profiles: one with full features for trusted, high-value users who connect to known-good endpoints, and one with minimal features (no audio, no drive redirection, no clipboard) for lower-trust connection scenarios.
  4. Periodic code audit — Include FreeRDP in the third-party software audit list. The libfreerdp/codec/dsp.c file has been a source of multiple codec-related vulnerabilities; prioritize auditing codec implementations for buffer handling correctness.
  5. Network monitoring hygiene — Maintain visibility into RDP connections initiated from endpoints; flag anomalous connection patterns (e.g., a user connecting to many distinct servers in a short period, or connections to IPs with pre-existing threat intelligence scores).

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-63633 — Official NIST record (the primary source used for this analysis).
  2. FreeRDP GitHub Repository: https://github.com/FreeRDP/FreeRDP — The official source repository. Version 3.28.0 contains the fix; the patch can be found in the commit history of libfreerdp/codec/dsp.c.
  3. FreeRDP Release Notes: https://github.com/FreeRDP/FreeRDP/releases/tag/3.28.0 — Release notes for the patched version, when published.
  4. MITRE ATT&CK: https://attack.mitre.org/techniques/T1203/ — "Exploitation for Client Execution" technique page, providing context for this class of client-side exploitation.
  5. CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — No entry for CVE-2026-63633 at the time of this report (CISA KEV: NO).

Threat Actor Awareness: No known threat actor campaigns have been attributed to this CVE as of this writing. The vulnerability has not been observed in the wild, and no PoC or exploit code has been publicly released. However, the RDP client-side attack vector is an established technique in APT toolkits (e.g., past attacks using malicious RDP servers against outdated clients), and exploitation should be considered plausible within 30-90 days of vulnerability disclosure as reverse-engineers analyze the diff between vulnerable and fixed versions.

👁️ SHODAN DORKS (THREAT HUNTING)

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.

FreeRDP
RDP server
Remote Desktop Protocol

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-63633/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.