CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2019-0708
9.894.45%

CVE-2019-0708: Unauthenticated Remote Code Execution in Windows Remote Desktop Services (BlueKeep)

Alon Barad
Alon Barad
Software Engineer

May 3, 2026·6 min read·11 visits

Active ExploitationCISA KEV ListedRansomware Use

Executive Summary (TL;DR)

BlueKeep is a pre-authentication, wormable remote code execution vulnerability in Windows Remote Desktop Services. Attackers trigger a use-after-free in termdd.sys by manipulating RDP virtual channel binding during the initial connection sequence.

A critical use-after-free (UAF) vulnerability exists in the Windows kernel driver termdd.sys, which processes Remote Desktop Protocol (RDP) connections. The flaw allows an unauthenticated attacker to execute arbitrary code with systemic privileges by binding the internal MS_T120 virtual channel to an arbitrary static index.

Vulnerability Overview

CVE-2019-0708, commonly referred to as BlueKeep, is a critical use-after-free vulnerability located in the Windows Remote Desktop Services (RDS) component. It resides specifically within the Windows kernel driver termdd.sys, which handles the negotiation and management of the Remote Desktop Protocol (RDP). The vulnerability triggers prior to authentication and requires zero user interaction.

The issue affects older versions of the Windows operating system, including Windows 7, Windows Server 2008, and Windows Server 2008 R2. Microsoft issued out-of-band patches for unsupported operating systems such as Windows XP and Windows Server 2003 due to the severity of the flaw. Embedded systems utilized in medical and industrial sectors running these legacy operating system versions inherit the vulnerability.

Successful exploitation yields unauthenticated Remote Code Execution (RCE) with kernel-level privileges. An attacker can execute arbitrary code, install programs, view, change, or delete data, or create new accounts with full system rights. The flaw is classified as wormable, meaning a successful exploit can propagate laterally between vulnerable systems automatically using the same RDP vector.

Root Cause Analysis

The root cause of the vulnerability is a use-after-free (UAF) condition within the termdd.sys driver. RDP utilizes virtual channels to handle specific data streams such as audio routing, clipboard sharing, and printer redirection. These virtual channels negotiate and initialize during the early stages of an RDP connection sequence.

One specific internal channel is MS_T120, which is utilized for the Multipoint Communication Service (MCS) and internal conference control. Under normal operation, the Windows system assigns the MS_T120 channel to internal slot index 31. The vulnerability occurs because the server does not restrict an unauthenticated client from manually binding the MS_T120 channel to an arbitrary static index during the MCS Connect Initial phase.

Binding the internally managed MS_T120 channel to a static channel index requested by the client creates a dual-reference state. The system establishes two pointers to the identical channel object in memory. When the client disconnects or issues a channel release command, the termdd.sys driver invokes the IcaFreeChannel function.

The double reference forces IcaFreeChannel to free the identical memory allocation twice. Attackers manipulate the memory layout using kernel heap grooming techniques before triggering the secondary free or a subsequent use of the freed object. Controlling the contents of this freed memory block allows the attacker to hijack the kernel execution flow and redirect it to attacker-controlled shellcode.

Code & Architecture Analysis

The structural flow of the vulnerability execution highlights the interaction between external network inputs and internal kernel memory management. The vulnerability targets the kernel-level components responsible for processing early RDP protocol negotiations before authentication verification occurs.

Network scanners identify the vulnerability without crashing the system by initiating the binding sequence and cleanly terminating the connection before heap corruption occurs. The auxiliary/scanner/rdp/cve_2019_0708_bluekeep module in Metasploit tests the system response to the MS_T120 static binding request. Systems returning standard channel acceptance confirm vulnerability status.

The patch implemented by Microsoft modifies termdd!IcaBindVirtualChannel to enforce strict string comparisons. The updated code validates the requested channel name against a hardcoded list of internal channels. If a client attempts to bind the MS_T120 string to a static channel, the driver rejects the connection, preventing the dual-reference initialization entirely.

Exploitation

Exploitation sequences begin with standard network discovery to identify hosts exposing RDP on TCP port 3389. The attacker initiates a standard RDP connection handshake by sending an X.224 Connection Request. The server responds with a Connection Confirm, entering the MCS negotiation phase.

During the MCS Connect Initial phase, the attacker constructs a crafted packet requesting the server to bind the MS_T120 channel to a static, attacker-defined index, such as index 4. The vulnerable server processes this request and binds the channel, establishing the dual-reference condition required for the vulnerability.

Attackers then execute heap grooming to control the kernel memory layout. This process involves transmitting large volumes of specific RDP Protocol Data Units (PDUs), typically utilizing the Sound or Bitmap virtual channels. The objective is to allocate attacker-controlled data blocks precisely where the MS_T120 channel object resides in memory after the initial free operation.

To trigger the payload, the attacker sends a disconnect command or a channel close PDU. The termdd!IcaFreeChannel function executes, causing the system to dereference the attacker-controlled memory block. If the heap spray aligned correctly, the kernel context executes the embedded shellcode, granting system compromise.

Impact Assessment

The CVSS v3.1 base score for CVE-2019-0708 is 9.8 (CRITICAL), reflecting the pre-authentication network vector and the resulting total loss of confidentiality, integrity, and availability. Exploitation grants attackers NT AUTHORITY\SYSTEM privileges directly in kernel space, bypassing standard user-mode security controls entirely.

The vulnerability is highly persistent and actively exploited. The EPSS score of 0.94454 places it in the 99.99th percentile for exploitation probability. The Cybersecurity and Infrastructure Security Agency (CISA) added BlueKeep to the Known Exploited Vulnerabilities (KEV) catalog due to widespread deployment by threat actors and advanced persistent threat (APT) groups.

Secondary exposure heavily impacts industrial and medical environments. Vendors including Siemens and Huawei documented numerous specialized devices running embedded versions of vulnerable Windows operating systems. These devices often lack standardized update mechanisms, extending the vulnerability lifespan significantly across critical infrastructure.

Ransomware operators leverage BlueKeep as an initial access vector and for lateral movement. The wormable nature of the vulnerability facilitates rapid autonomous proliferation across segmented internal networks. Compromised systems frequently exhibit BugCheck (Blue Screen of Death) events if the kernel heap spray fails, resulting in severe denial-of-service conditions.

Remediation

Complete remediation requires applying the specific KB updates provided by Microsoft for the affected operating systems. Microsoft released patches in the May 2019 update cycle covering Windows 7, Server 2008, and Server 2008 R2. Administrators managing legacy environments must apply the out-of-band updates published for Windows XP and Windows Server 2003.

Enabling Network Level Authentication (NLA) serves as an effective configuration mitigation against unauthenticated attacks. NLA mandates user authentication prior to establishing the RDP session and initiating the virtual channel negotiation phase. This configuration prevents an attacker without valid credentials from reaching the vulnerable termdd.sys code path.

Administrators must enforce strict network access controls to reduce the exposed attack surface. RDP services must remain inaccessible from the public internet. Firewalls should drop incoming connections to TCP port 3389 originating from untrusted networks.

Network segmentation isolates vulnerable endpoints in scenarios where patching is technically infeasible. Vulnerable industrial or medical devices must operate on isolated virtual LANs (VLANs). Security teams should deploy Intrusion Detection Systems (IDS) configured with specific Snort or Suricata rules to monitor for MS_T120 channel bind attempts in MCS Connect Initial packets.

Official Patches

MicrosoftMicrosoft Security Guidance for CVE-2019-0708

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
94.45%
Top 0% most exploited

Affected Systems

Windows 7Windows Server 2008Windows Server 2008 R2Windows XPWindows Server 2003Siemens Medical DevicesHuawei Embedded Systems

Affected Versions Detail

Product
Affected Versions
Fixed Version
Windows 7
Microsoft
SP1KB4499175
Windows Server 2008 R2
Microsoft
SP1KB4499175
Windows Server 2008
Microsoft
SP2KB4499180
Windows XP
Microsoft
SP3KB4500331
Windows Server 2003
Microsoft
SP2KB4500331
AttributeDetail
CWE IDCWE-416
Attack VectorNetwork (Pre-authentication RDP)
CVSS v3.19.8 CRITICAL
EPSS Score0.94454 (99.99%)
ImpactSystem-level RCE
Exploit StatusActive Exploitation
KEV ListedYes

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1068Exploitation for Privilege Escalation
Privilege Escalation
T1210Exploitation of Remote Services
Lateral Movement
CWE-416
Use After Free

Referencing memory after it has been freed, which can cause a program to crash, use unexpected values, or execute code.

Known Exploits & Detection

MetasploitMetasploit BlueKeep Scanner and RCE Module
GitHubPython-based PoC
GitHubPre-auth RCE PoC for Windows 7
GitHubC-based scanner for identifying BlueKeep at scale

Vulnerability Timeline

Microsoft releases patches for CVE-2019-0708 and issues an unusual out-of-band warning.
2019-05-14
Detailed technical analysis published by MalwareTech and other researchers.
2019-05-31
NSA and CISA issue advisories urging users to patch.
2019-06-04
Metasploit releases a public, weaponized exploit module.
2019-09-06
First reports of BlueKeep exploitation in the wild.
2019-11-02
Added to CISA KEV catalog.
2021-11-03

References & Sources

  • [1]Microsoft Security Advisory
  • [2]ZDI Technical Analysis
  • [3]Palo Alto Unit 42 Analysis
  • [4]CISA KEV Catalog

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.