A seven-year-old wormable pre-auth RCE that Microsoft literally back-ported to Windows XP because they were scared of a WannaCry sequel
CVE-2019-0708 is a use-after-free in termdd.sys, the kernel-mode driver behind Remote Desktop Services. A remote, unauthenticated attacker sends a crafted request over channel MS_T120 during RDP protocol setup — before any credential prompt — and gains SYSTEM-level code execution in ring 0. Affected: Windows XP, Windows Server 2003, Windows 7 SP1, Windows Server 2008, and Windows Server 2008 R2. Windows 8/2012 and later are not vulnerable due to changes in how virtual channels are bound.
The vendor CRITICAL rating is entirely correct and if anything understated by the CVSS number. This bug is wormable (Microsoft compared it to EternalBlue), requires no authentication, no user interaction, and delivers kernel RCE against the single most-exposed remote-management protocol in the Windows ecosystem. Microsoft took the extraordinary step of shipping a patch for out-of-support Windows XP and Server 2003 — they only do that when they think the internet is about to burn.
4 steps from start to impact.
Discover exposed RDP
masscan or nmap -sS -p3389. Fingerprint the target as legacy Windows (7/2008/XP/2003) via the RDP negotiation banner or rdp-enum-encryption NSE script.- TCP/3389 reachable from attacker
- Target is Windows 7 / Server 2008(R2) / XP / Server 2003
- NLA (Network Level Authentication) enabled blocks the vulnerable code path
- Perimeter firewalls typically block 3389 inbound
- VPN-gated RDP access is now standard in most enterprises
bluekeep-scannerTrigger the MS_T120 UAF
exploit/windows/rdp/cve_2019_0708_bluekeep_rce or the RiskSense/zerosum0x0 PoC to send crafted virtual-channel bind requests against MS_T120. The bug frees the channel object but leaves a dangling pointer; a follow-up write reuses the freed memory with attacker-controlled data.- Vulnerable termdd.sys version
- NLA disabled or bypassed
- Reliable heap grooming (target-specific)
- The public Metasploit exploit is notoriously unstable — BSODs are the norm rather than the exception
- Reliable exploitation requires knowing the exact target build and NPP layout
Kernel code execution as SYSTEM
nt!SeCiCallbacks, then either drops to userland as SYSTEM or stays in-kernel for stealth. No token theft required — you *are* the kernel.- Successful step 2 without BSOD
- KASLR / SMEP on Server 2008 R2 forces bespoke ROP
- HVCI (not present on affected OS versions) would block but is irrelevant here
Worm propagation
watchbog was cryptomining — not because the bug wasn't wormable, but because criminals monetized before nation-states weaponized.- Multiple vulnerable hosts on reachable segments
- Payload with self-propagation logic
- Modern segmentation (VLAN isolation of legacy servers)
- EDR blocks lateral SMB/RDP from unusual sources
The supporting signals.
| In-the-wild exploitation | Confirmed. Mass cryptomining campaigns (watchbog, purple team activity) since Nov 2019. Ongoing opportunistic scanning through 2026. |
|---|---|
| CISA KEV | Listed — added 2021-11-03. Federal remediation deadline was 2022-05-03. |
| EPSS | ~0.94 (99th percentile) — one of the highest-scoring CVEs in the entire dataset. |
| Public PoC | Metasploit cve_2019_0708_bluekeep_rce (rlarabee, zerosum0x0), zerosum0x0/CVE-2019-0708, RiskSense PoC. Reliable exploitation code has been public since Sept 2019. |
| CVSS 3.1 vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 CRITICAL. Network, no auth, no user interaction, full CIA impact — the archetype of a wormable RCE. |
| Affected versions | Windows XP SP3, Server 2003, Windows 7 SP1, Server 2008 SP2, Server 2008 R2 SP1, Windows Embedded POSReady 2009, WES09. Windows 8/8.1/10 and Server 2012+ are not vulnerable. |
| Fixed versions | May 2019 Patch Tuesday: KB4499164 / KB4499175 (Win7/2008 R2), KB4499180 (2008), plus the out-of-band XP/2003 fix. Also mitigated by enabling NLA. |
| Exposure (Shodan/Censys) | Shodan still reports tens of thousands of publicly exposed RDP hosts fingerprinting as Windows 7/2008. The number has fallen ~90% since 2019 but the long tail is stubborn (OT, kiosks, unmanaged branch servers). |
| Disclosure | 2019-05-14 (Patch Tuesday). Reported to Microsoft by the UK NCSC. |
| Impact class | Pre-auth kernel RCE, wormable. Sits alongside MS17-010 (EternalBlue) and MS08-067 (Conficker) in the pantheon of wormable Windows RCEs. |
noisgate verdict.
This is a KEV-listed, wormable, pre-authentication kernel RCE in the single most-targeted remote-access protocol on Windows, with public weaponized exploits and confirmed in-the-wild exploitation. The single decisive factor is active KEV listing combined with a wormable pre-auth network vector on a still-deployed legacy OS footprint.
Why this verdict
- KEV-listed and actively exploited: CISA added this to KEV in 2021 based on confirmed in-the-wild use. Cryptomining crews weaponized it within months of disclosure.
- Pre-auth, network-adjacent, wormable: No credentials, no user interaction, one packet against TCP/3389 — the exact profile that produced WannaCry.
- Role multiplier — legacy Windows servers: In 2026 the affected OS footprint is disproportionately RDP jump boxes, OT/HMIs, medical imaging consoles, ATMs, POS controllers, and unmanaged Server 2008 R2 line-of-business hosts. Compromise of any one of these is fleet-scale or safety-scale, not local.
- Role multiplier — domain-joined legacy hosts: SYSTEM on a domain-joined Server 2008 R2 is a straight path to cached credentials, DPAPI secrets, and lateral movement to a DC. The chain ends in domain compromise. Floor is CRITICAL.
- Friction is limited: NLA mitigates but is not universally deployed on the affected OS versions; the Metasploit exploit is unreliable, but nation-state and mature crime groups don't use the public module.
Why not higher?
CRITICAL / 9.8 is already the top of the scale under CVSS 3.1. There is no higher bucket to promote to.
Why not lower?
Downgrading would require ignoring KEV status, ignoring the wormable pre-auth vector, and ignoring the concentration of the affected OS footprint in high-value roles (OT, jump boxes, domain-joined legacy servers). Even in 2026, the Shodan long tail and the OT reality make this a legitimate CRITICAL. The unreliability of the public Metasploit module is a speed bump, not a mitigation.
What to do — in priority order.
- Enable Network Level Authentication (NLA) on every remaining RDS host — NLA forces CredSSP authentication before the vulnerable virtual-channel setup runs, breaking the exploit path. Set via GPO
Computer Configuration → Admin Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Security → Require user authentication for remote connections by using NLA. Deploy within 3 days per the noisgate CRITICAL mitigation SLA. - Block TCP/3389 at the perimeter and force RDP through a bastion/VPN with MFA — Removes internet-reachable exposure entirely. Confirm via external attack-surface tooling (Censys, Shodan Monitor) that no 3389/UDP-3389 endpoints resolve to your ASN. Complete within 3 days.
- Segment legacy Windows OT / medical / kiosk hosts onto isolated VLANs — The 2026 vulnerable population is concentrated in OT, medical, retail, and industrial fleets that cannot be patched. Wrap them in strict east-west ACLs so only named jump hosts can reach 3389. Complete within 30 days.
- Disable Remote Desktop Services where not required —
Set-Service TermService -StartupType Disabled; Stop-Service TermServiceon hosts that don't need it. Fastest permanent fix. - Apply KB4499164 / KB4499175 / KB4499180 (or the XP/2003 out-of-band patch) — The permanent fix. Remediate every affected host within 90 days per the noisgate CRITICAL remediation SLA.
- Windows Firewall rules that allow 3389 from 'trusted' subnets — any compromised workstation inside the trusted subnet becomes the launchpad for wormable propagation.
- Changing the RDP port to something other than 3389 — the vulnerability is in the protocol, not the port.
masscan --bannersfinds RDP on any port in minutes. - Relying on EDR alone on Server 2008 / Windows 7 — kernel-mode telemetry on these EOL OS versions is patchy at best, and the exploit runs in ring 0.
- Account lockout policies — the bug triggers pre-authentication, before any password is ever tried.
Crowdsourced verification payload.
Run on the target Windows host as a local Administrator (needed to read installed hotfixes and the RDP NLA registry setting). Invoke: powershell -ExecutionPolicy Bypass -File .\Check-BlueKeep.ps1. For fleet-wide use, wrap in Invoke-Command -ComputerName (Get-Content hosts.txt) -FilePath .\Check-BlueKeep.ps1.
#requires -RunAsAdministrator
# Check-BlueKeep.ps1 — CVE-2019-0708 (BlueKeep) presence check
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN / not applicable
$ErrorActionPreference = 'Stop'
try {
$os = Get-CimInstance Win32_OperatingSystem
$ver = [Version]$os.Version
$caption = $os.Caption
# Only XP, 2003, Win7, Server 2008, Server 2008 R2 are vulnerable
$affected = $false
if ($ver.Major -eq 5) { $affected = $true } # XP / 2003
elseif ($ver.Major -eq 6 -and $ver.Minor -in 0,1) { $affected = $true } # Vista/2008/Win7/2008R2
if (-not $affected) {
Write-Host "PATCHED — $caption is not in the affected OS family"
exit 0
}
# Fixing KBs from MS advisory (May 2019 + follow-ups)
$fixKBs = @('KB4499164','KB4499175','KB4499180','KB4500331',
'KB4501226','KB4503273','KB4503292','KB4507449','KB4507456')
$installed = Get-HotFix -ErrorAction SilentlyContinue | Select-Object -ExpandProperty HotFixID
$found = $fixKBs | Where-Object { $installed -contains $_ }
# NLA state — mitigates even if unpatched
$nla = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -ErrorAction SilentlyContinue).UserAuthentication
if ($found) {
Write-Host "PATCHED — hotfix present: $($found -join ', ')"
exit 0
}
elseif ($nla -eq 1) {
Write-Host "VULNERABLE (mitigated) — no BlueKeep hotfix, but NLA is enabled. Patch anyway."
exit 1
}
else {
Write-Host "VULNERABLE — no BlueKeep hotfix and NLA disabled. Exploitable."
exit 1
}
}
catch {
Write-Host "UNKNOWN — $($_.Exception.Message)"
exit 2
}
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.