Your antivirus is the locksmith handing out master keys to anyone already inside the building
CVE-2026-50656 ("RoguePlanet") is an elevation-of-privilege flaw in mpengine.dll, the Microsoft Malware Protection Engine that powers Microsoft Defender, Defender for Endpoint, and Microsoft Security Essentials. A low-privileged local user exploits CWE-59 (improper link resolution) by racing Defender's own scan-and-remediate pipeline: the attacker plants an EICAR trigger file, redirects Defender's privileged file operations through NTFS junctions or Object Manager symlinks, and causes the engine — running as NT AUTHORITY\SYSTEM — to write attacker-controlled content into a protected system location. The result is a reliable SYSTEM shell from any unprivileged foothold. Affected: all Windows 10, Windows 11 (including 25H2), and Windows Server 2025 endpoints running Defender with any engine version. The original RoguePlanet vector was patched in engine v1.1.26060.3008 (July 2026), but the ShieldBreak bypass (CVE-2026-69414), released August 12, 2026, moves the redirect to the NT Object Manager namespace and achieves 100% success on patched systems. No fix for ShieldBreak exists as of October 2026.
Microsoft rated this HIGH (7.8) — and that label was already borderline inadequate in June when the original PoC dropped as a zero-day on Patch Tuesday. Three months later, with a confirmed full patch bypass, two public weaponized PoCs, and no remediation available, the vendor severity is dangerously understated. Defender runs as SYSTEM on effectively every Windows endpoint in every enterprise. This is not a niche application EoP — it is a universal privilege-escalation primitive that converts any low-privilege foothold (phish, compromised service account, insider) into full SYSTEM on every host the attacker touches. On domain controllers, that means domain takeover. On Hyper-V hosts, hypervisor compromise. On backup servers, ransomware operators' dream. The vendor's 7.8 reflects the CVSS base math for a local/low-priv vuln; it does not reflect the blast radius of a bug in the single most widely deployed security agent on the planet, with no patch and a public, reliable exploit.
5 steps from start to impact.
Establish local code execution
- Local code execution as any authenticated user (PR:L)
- Target runs Windows with Defender active (default on all Windows)
- Requires prior initial access — this is a post-compromise tool, not a first-stage exploit
Register rogue cloud sync provider
CfRegisterSyncRoot from the Cloud Filter API (cfapi) to register a fake cloud provider named 'Flubber' and creates a placeholder file. This is an unprivileged, documented Windows API — no elevation or special tokens needed. The placeholder file will serve as the bait that triggers Defender's scan pipeline. Tools: ShieldBreak PoC (public, by Chaotic Eclipse / Nightmare Eclipse).- Cloud Filter API available (present on Win10 1709+ and all Server 2019+)
- Defender is running and scanning (default state)
- CfApi is legitimate and widely available — no friction here
- API call is not typically monitored by most EDR rulesets
CfRegisterSyncRoot calls from non-OneDrive/non-known-provider processes. No mainstream EDR signature exists as of October 2026.Trigger Defender scan with EICAR payload
- Defender Real-Time Protection or scheduled scan is active
- EICAR detection is mandatory per industry spec — cannot be disabled
- None — EICAR detection is guaranteed behavior
Redirect via Object Manager symlinks + CLFS manipulation
\BaseNamedObjects\Restricted\ namespace using undocumented NT APIs (NtCreateDirectoryObjectEx, NtCreateSymbolicLinkObject). Simultaneously, CLFS (Common Log File System) log manipulation swaps the identity of phoneinfo.dll in System32 with a malicious DLL payload. The attacker uses a UNC loopback path (\\127.0.0.1\C$ with an Alternate Data Stream) to exploit Defender's elevated write privileges. This is the core race — and ShieldBreak reports 100% success rate because the Object Manager redirect is deterministic, not timing-dependent like the original NTFS junction race.- NT Object Manager namespace manipulation (unprivileged)
- CLFS subsystem available (all supported Windows versions)
- Defender's SYSTEM-level file operations follow the redirected path
- Microsoft's July patch hardened NTFS junctions but did NOT cover Object Manager namespace — this vector is unpatched
- Race condition in ShieldBreak is deterministic, not probabilistic
DeviceProcessEvents | where InitiatingProcessFileName =~ "MsMpEng.exe" with child shell processes at System integrity.QueueReporting task loads malicious DLL → SYSTEM shell
QueueReporting via Task Scheduler. This task runs as SYSTEM and loads the now-replaced phoneinfo.dll from System32. The malicious DLL coordinates via a named pipe (\\.\pipe\SHIELDBREAK) to deliver an interactive SYSTEM-level command shell to the attacker. Game over — full host compromise from any unprivileged account.- QueueReporting task exists and is enabled (default on all Windows)
- phoneinfo.dll has been successfully substituted in System32
- None — QueueReporting is a default scheduled task
- Named pipe coordination is reliable and well-tested in the PoC
wermgr.exe launched with -upload argument, or SYSTEM shells spawned by WER lineage. Monitor Report.wer file writes from non-SYSTEM processes in the WER ReportQueue path.C:\Windows\System32\phoneinfo.dll with a malicious DLL. Pre-placing a 0-byte placeholder file with restrictive ACLs (SYSTEM:Full Control, Administrators:Read only, deny write to Users/Everyone) blocks the file-swap mechanism. Tanium Guardian provides an automated mitigation package with rollback. Deploy within 3 days per noisgate mitigation SLA for CRITICAL. Test on a pilot group first — phoneinfo.dll is a legitimate but rarely-used system binary; the placeholder should not cause functional impact on most systems.SeCreateSymbolicLinkPrivilege from all non-administrative accounts via Group Policy (Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment → Create symbolic links). While ShieldBreak uses Object Manager symlinks rather than NTFS symlinks, reducing symlink creation rights raises the bar for both the original and variant exploitation paths. Deploy within 3 days.MsMpEng.exe spawning cmd.exe, powershell.exe, or pwsh.exe at System integrity level. (2) wermgr.exe child processes with -upload arguments. (3) Non-SYSTEM processes writing Report.wer to WER ReportQueue paths. KQL for Defender for Endpoint: DeviceProcessEvents | where InitiatingProcessFileName =~ "MsMpEng.exe" | where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe") | where ProcessIntegrityLevel == "System". These are high-fidelity, low-false-positive signals. Deploy immediately.CfRegisterSyncRoot. Monitor ETW provider Microsoft-Windows-CloudFiles-Filter for sync root registrations from unexpected processes (anything that isn't OneDrive, SharePoint, or known cloud storage clients). This is the earliest detection opportunity in the ShieldBreak chain. Deploy within 3 days.- Updating Defender engine to the latest version — Engine v1.1.26060.3008 patches the original RoguePlanet NTFS junction vector, but ShieldBreak uses Object Manager namespace manipulation that the July patch does not cover. Fully patched systems remain vulnerable.
- Signature-based AV/EDR detection of the PoC — Kudelski Security notes that "signature-based attempts to detect or block the PoC are largely ineffective because minor variations in the exploit bypass them." The exploit uses legitimate Windows APIs (CfApi, Task Scheduler, named pipes) that are not inherently malicious.
- Disabling Real-Time Protection — The original RoguePlanet PoC "works regardless if real-time protection is on or not" per the researcher. Scheduled scans can also trigger the race. Disabling RTP also removes your primary AV coverage, trading one risk for another.
- Tamper Protection — Tamper Protection prevents unauthorized changes to Defender settings, but CVE-2026-50656 does not modify Defender settings. It exploits Defender's own legitimate scanning behavior to perform privileged file operations. Tamper Protection does not prevent filesystem redirection via Object Manager symlinks.
- Network segmentation / firewall rules — This is a local privilege escalation (AV:L). It requires no network access to exploit. Segmentation limits lateral movement after SYSTEM is obtained, but does not prevent the escalation itself.
The supporting signals.
| In-the-wild exploitation | No confirmed in-the-wild exploitation per CISA KEV or Microsoft advisories. However, Microsoft rated it "Exploitation More Likely" on the Exploitability Index. Arctic Wolf notes "initial weaponization appeared in early June 2026" and the original was a zero-day (disclosed before any patch existed). The ShieldBreak bypass re-opened the attack surface in August 2026 with no fix since. |
|---|---|
| Proof-of-concept availability | Two public, functional PoCs. (1) RoguePlanet by 0xBlackash on GitHub — original NTFS junction race, patched in July. (2) ShieldBreak by Chaotic Eclipse / Nightmare Eclipse — full patch bypass via Cloud Filter API + Object Manager symlinks, released August 12, 2026. ShieldBreak claims 100% success rate on Win11 25H2 and Server 2025. Both PoCs are weaponized (shell delivery), not just DoS or crash demos. The SecureWithUmer/CVE-2026-PoCs aggregator also tracks these. |
| EPSS score | ~3.4% (varies by source; some report up to 11.36%). This places the CVE in roughly the 85th–95th percentile of all scored CVEs. EPSS likely underweights the ShieldBreak bypass since it post-dates model training data. |
| KEV status | Not listed on CISA Known Exploited Vulnerabilities catalog as of 2026-10-01. Note: KEV requires confirmed in-the-wild exploitation, and Microsoft has not acknowledged wild use. However, the availability of two public weaponized PoCs with no patch makes exploitation a question of *when*, not *if*. |
| CVSS vector interpretation | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — Local attack vector, low complexity, low privileges required, no user interaction. Temporal: E:F (functional exploit exists), RL:U (remediation level unavailable — no vendor fix for ShieldBreak), RC:C (confirmed by vendor). The temporal modifiers, particularly RL:U, are the most alarming aspect — Microsoft has had no fix for nearly 7 weeks since the bypass dropped. |
| Affected version ranges | All Windows versions running Microsoft Malware Protection Engine: Windows 10 (all supported builds), Windows 11 (21H2 through 25H2 including Canary), Windows Server 2019/2022/2025. Engine versions < 1.1.26060.3008 are vulnerable to both RoguePlanet and ShieldBreak. Engine ≥ 1.1.26060.3008 is patched for RoguePlanet but still vulnerable to ShieldBreak. |
| Fixed versions | RoguePlanet (original): Fixed in engine v1.1.26060.3008 (July 9, 2026; auto-updates via Windows Update). ShieldBreak (bypass, CVE-2026-69414): No fix available as of 2026-10-01. Microsoft stated it was "working to provide a high quality security update" with no timeline. |
| Scanning / exposure data | Not applicable for GreyNoise/Shodan/Censys — this is a local privilege escalation, not a network-exposed service. However, the installed base is enormous: Defender is the default AV on every Windows installation worldwide (~1.4 billion+ active Windows devices per Microsoft). Enterprise exposure is effectively 100% of Windows endpoints unless a third-party AV has fully replaced Defender (and even then, Defender components may remain). |
| Disclosure timeline | 2026-06-10: Nightmare Eclipse publishes RoguePlanet PoC on GitHub (same day as June Patch Tuesday). 2026-06-16: Microsoft publishes CVE-2026-50656 advisory. 2026-07-09: Microsoft releases engine v1.1.26060.3008 patch. 2026-08-12: Chaotic Eclipse releases ShieldBreak full bypass PoC. 2026-08-12: Microsoft assigns CVE-2026-69414 to ShieldBreak. 2026-10-01: Still no ShieldBreak fix. |
| Researcher / disclosure | Chaotic Eclipse (aliases: Nightmare Eclipse, NightmareEclipse, INFINITE NIGHTMARE, MSNightmare). Uncoordinated disclosure — no prior notification to Microsoft. Previously released BlueHammer, RedSun (Windows LPE), UnDefend (Defender DoS), YellowKey (BitLocker bypass), and GreenPlasma (CTFMON EoP). Described as having a personal dispute with Microsoft. Microsoft has not credited the researcher and previously warned about "pursuing cases involving criminal activity." |
Sources.
- Arctic Wolf — CVE-2026-50656 RoguePlanet / ShieldBreak Advisory
- Help Net Security — Microsoft working on patch for RoguePlanet zero-day
- The Hacker News — ShieldBreak Zero-Day PoC Claims Defender Patch Bypass
- Tanium — ShieldBreak: The Windows Defender 0-Day with No Patch
- Kudelski Security — RoguePlanet Zero Day MS Defender Privilege Escalation
- Cryptron Security — ShieldBreak In-Depth Analysis
- GitHub — 0xBlackash/CVE-2026-50656 PoC Repository
- Penligent — CVE-2026-50656 RoguePlanet Technical Walkthrough
Why this verdict
- Universal deployment surface: Microsoft Defender / Malware Protection Engine is the default AV on every Windows endpoint. This is not a niche component — it runs as SYSTEM on ~100% of the Windows installed base. Any attacker who lands *anywhere* on *any* Windows box with Defender gets this escalation primitive for free. The vendor's AV:L / PR:L friction is real but non-narrowing: it doesn't limit the *population* of reachable targets, it limits the *stage* of the kill chain. Once past initial access (the baseline assumption for every real intrusion), the entire fleet is exposed.
- Role multiplier — kernel-mode security agent (canonical high-value component): Defender is explicitly in the high-value-role catalog as an AV/EDR agent running with SYSTEM. ≥10% of installs (actually ~100%) occupy this role by definition. The chain succeeds on all tested platforms with 100% reliability. On domain controllers running Defender: SYSTEM → DCSync / credential extraction → full domain takeover (blast radius: domain → fleet). On Hyper-V hosts: SYSTEM → hypervisor escape risk / VM management compromise (blast radius: fleet). On backup servers (Veeam, Commvault on Windows): SYSTEM → backup destruction / ransomware (blast radius: fleet + DR). On CI/CD build agents: SYSTEM → supply-chain poisoning (blast radius: supply chain). Per the hard rule, the verdict floor is CRITICAL because the affected component is canonically a high-value-role component and the chain ends in domain/fleet/supply-chain compromise.
- No remediation available (RL:U): The ShieldBreak bypass (August 12, 2026) fully defeats the only available patch (engine v1.1.26060.3008). Microsoft has provided no timeline for a fix. As of October 1, 2026, every Windows endpoint running Defender is vulnerable regardless of patch level. This is now a 50-day-old unpatched zero-day with public weaponized exploit code.
- Exploit reliability eliminates AC:L friction: The original RoguePlanet used a TOCTOU race with probabilistic success. ShieldBreak replaced the race with deterministic Object Manager namespace manipulation and claims 100% success rate. The "race condition might fail" friction is gone.
- Two weaponized public PoCs lower the barrier to mass exploitation: Both RoguePlanet (GitHub) and ShieldBreak are publicly available, documented, and functional. Any red teamer, ransomware operator, or insider can download and run them today. Signature-based detection is "largely ineffective because minor variations in the exploit bypass them" per Kudelski Security.
Why not higher?
A score above 9.0 would imply unauthenticated remote code execution or wormable capability. CVE-2026-50656 requires local authenticated access (PR:L), meaning it cannot be exploited remotely without a prior foothold. It is a post-compromise amplifier, not an initial access vector. The Scope is Unchanged (S:U), so a single exploitation grants SYSTEM on the local host only — lateral movement requires additional steps. These constraints cap the score below 9.5–10.0.
Why not lower?
A HIGH (7.8) or lower rating ignores the deployment-role blast radius floor. Defender is the canonical AV/SYSTEM-privilege security agent on every Windows box — this IS the high-value-role component. The chain succeeds reliably (100%) and there is no patch available. Any downgrade below CRITICAL requires evidence that <10% of the installed base occupies a high-value role, but Defender's installed base IS the high-value role (it is the security agent). The public, weaponized, unpatched state with functional exploit code and no vendor timeline for a fix makes any rating below CRITICAL indefensible for a fleet of 10,000 Windows hosts.
Crowdsourced verification payload.
Run on each target Windows host as any local user (no admin required for read checks). Open PowerShell and execute: .\Check-CVE202650656.ps1. The script checks whether Defender is active, reports the engine version, and tests for the ShieldBreak phoneinfo.dll mitigation placeholder. Exit code 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN.
#Requires -Version 5.1
<#
.SYNOPSIS
Check-CVE202650656.ps1 — Detect exposure to CVE-2026-50656 (RoguePlanet / ShieldBreak)
.DESCRIPTION
Checks Microsoft Defender Malware Protection Engine status and version,
determines vulnerability to both the original RoguePlanet vector and the
ShieldBreak patch bypass (CVE-2026-69414).
Output: VULNERABLE / PATCHED / UNKNOWN
Exit codes: 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN
#>
$ErrorActionPreference = 'SilentlyContinue'
$result = 'UNKNOWN'
$details = @()
# Check if Defender service is running
$defenderService = Get-Service -Name WinDefend -ErrorAction SilentlyContinue
if (-not $defenderService -or $defenderService.Status -ne 'Running') {
$details += 'Microsoft Defender service (WinDefend) is not running.'
# Check if MsMpEng.exe is present at all
$mpEng = Get-Process -Name MsMpEng -ErrorAction SilentlyContinue
if (-not $mpEng) {
$details += 'MsMpEng.exe not found in running processes.'
$details += 'System may use a third-party AV — Defender engine not active.'
$result = 'UNKNOWN'
Write-Host "[*] $($details -join ' ')" -ForegroundColor Yellow
Write-Host "[$result] Cannot determine vulnerability — Defender not active." -ForegroundColor Yellow
exit 2
}
}
# Get Defender engine version via Get-MpComputerStatus
try {
$mpStatus = Get-MpComputerStatus -ErrorAction Stop
$engineVersion = $mpStatus.AMEngineVersion
$platformVersion = $mpStatus.AMServiceVersion
$rtpEnabled = $mpStatus.RealTimeProtectionEnabled
$details += "Engine version: $engineVersion"
$details += "Platform version: $platformVersion"
$details += "Real-Time Protection: $rtpEnabled"
} catch {
$details += 'Unable to query Get-MpComputerStatus (may require elevation).'
# Fallback: check registry
$regPath = 'HKLM:\SOFTWARE\Microsoft\Windows Defender\Signature Updates'
$regEngine = (Get-ItemProperty -Path $regPath -Name 'EngineVersion' -ErrorAction SilentlyContinue).EngineVersion
if ($regEngine) {
$engineVersion = $regEngine
$details += "Engine version (registry): $engineVersion"
} else {
$details += 'Cannot determine engine version.'
Write-Host "[*] $($details -join ' | ')" -ForegroundColor Yellow
Write-Host "[UNKNOWN] Cannot determine Defender engine version." -ForegroundColor Yellow
exit 2
}
}
# Parse engine version for RoguePlanet patch check
$patchedEngine = [version]'1.1.26060.3008'
try {
$currentEngine = [version]$engineVersion
$roguePlanetPatched = $currentEngine -ge $patchedEngine
} catch {
$roguePlanetPatched = $false
$details += 'WARNING: Could not parse engine version for comparison.'
}
# Check for ShieldBreak mitigation: phoneinfo.dll placeholder
$phoneInfoPath = "$env:SystemRoot\System32\phoneinfo.dll"
$shieldBreakMitigated = $false
if (Test-Path $phoneInfoPath) {
$fileInfo = Get-Item $phoneInfoPath -ErrorAction SilentlyContinue
if ($fileInfo.Length -eq 0) {
$shieldBreakMitigated = $true
$details += 'ShieldBreak mitigation: 0-byte phoneinfo.dll placeholder FOUND.'
} else {
# Check if it is the legitimate Microsoft-signed phoneinfo.dll
$sig = Get-AuthenticodeSignature $phoneInfoPath -ErrorAction SilentlyContinue
if ($sig -and $sig.Status -eq 'Valid' -and $sig.SignerCertificate.Subject -like '*Microsoft*') {
$details += "phoneinfo.dll present (legitimate, $($fileInfo.Length) bytes, Microsoft-signed). ShieldBreak mitigation NOT applied."
} else {
$details += "WARNING: phoneinfo.dll present ($($fileInfo.Length) bytes) but NOT Microsoft-signed — possible compromise indicator!"
}
}
} else {
$details += 'phoneinfo.dll not present in System32. ShieldBreak mitigation NOT applied.'
}
# Determine overall status
if (-not $roguePlanetPatched) {
$result = 'VULNERABLE'
$details += 'VULNERABLE to BOTH RoguePlanet (original) AND ShieldBreak (bypass). Engine below v1.1.26060.3008.'
} elseif ($roguePlanetPatched -and -not $shieldBreakMitigated) {
$result = 'VULNERABLE'
$details += 'RoguePlanet (original) patched, but VULNERABLE to ShieldBreak bypass (CVE-2026-69414). No vendor fix available.'
} elseif ($roguePlanetPatched -and $shieldBreakMitigated) {
$result = 'PATCHED'
$details += 'RoguePlanet patched (engine updated) and ShieldBreak mitigated (phoneinfo.dll placeholder). Note: ShieldBreak mitigation is a workaround, not a vendor fix.'
}
# Output
$color = switch ($result) {
'VULNERABLE' { 'Red' }
'PATCHED' { 'Green' }
default { 'Yellow' }
}
Write-Host ''
Write-Host '=== CVE-2026-50656 (RoguePlanet / ShieldBreak) Check ===' -ForegroundColor Cyan
foreach ($d in $details) {
Write-Host " [*] $d" -ForegroundColor Gray
}
Write-Host ''
Write-Host "[$result] CVE-2026-50656" -ForegroundColor $color
Write-Host ''
# Exit code
switch ($result) {
'VULNERABLE' { exit 1 }
'PATCHED' { exit 0 }
default { exit 2 }
}