TLP:CLEARAnálisis defensivo de fuentes públicas. Mecanismo conceptual, sin pasos de explotación. Parte de la serie [Nightmare Eclipse](/posts/nightmare-eclipse/).

Resumen ejecutivo#

RoguePlanet (CVE-2026-50656) es una escalada local a SYSTEM en Microsoft Defender que, a fecha de este post, sigue sin parche (Microsoft confirmó el fallo y dijo que el fix está en desarrollo). A diferencia de BlueHammer/RedSun, Microsoft no ha reportado explotación in-the-wild: por ahora es un PoC público, aunque el índice de explotabilidad de Microsoft lo marca como “Exploitation More Likely”.

Es la cuarta pieza de la campaña que ataca a Defender y confirma la tesis de toda la serie: el actor no depende de un CVE, depende de una clase de bug. Parcheado BlueHammer, apareció RedSun; endurecida la remediación, apareció RoguePlanet por el pipeline de cuarentena. La misma primitiva —TOCTOU con oplock + junction— por una puerta nueva.

Mecanismo (nivel conceptual)#

RoguePlanet encadena varias primitivas legítimas de Windows. Cyderes lo resume bien: “abusa del pipeline de escaneo en tiempo real y cuarentena de Defender, junctions de directorio NTFS, oplocks, Volume Shadow Copy y la tarea programada QueueReporting de Windows Error Reporting.”

  1. La brecha TOCTOU. El bug vive en el hueco entre cuando Defender crea un artefacto de cuarentena y cuando valida dónde aterrizó realmente. No es corrupción de memoria y no requiere privilegios para iniciarse.
  2. La ventana determinista. Los oplocks pausan a Defender en el instante preciso; los junctions NTFS redirigen dónde se escribe. Así, una carrera probabilística se vuelve una ventana determinista.
  3. El disparo final vía WER. El exploit construye una estructura de directorios que imita System32 y convierte el directorio de trabajo en un junction hacia C:\Windows, de modo que la ruta se vuelve transparentemente idéntica a C:\Windows\System32\wermgr.exe. Luego usa el Task Scheduler para lanzar la tarea QueueReporting de Windows Error Reporting —que corre como SYSTEM— y termina ejecutando su wermgr.exe suplantado.

Requiere solo que la protección en tiempo real de Defender esté activa y que la infraestructura de tareas de WER esté presente (lo está por defecto).

flowchart TD
    A["Usuario sin privilegios"] --> B["Dispara escaneo/cuarentena de Defender (RTP activa)"]
    B --> C["Oplock congela la operación en el punto crítico"]
    C --> D["Junction: dir de trabajo → C:\\Windows
ruta ≡ C:\\Windows\\System32\\wermgr.exe"] D --> E["Task Scheduler lanza QueueReporting (WER, SYSTEM)"] E --> F["Ejecuta wermgr.exe suplantado → shell SYSTEM"]

Por qué el allowlisting por ruta no basta (y qué sí)#

El borrador del que partí citaba “WDAC en modo enforced” como el único control preventivo validado. Hay que matizarlo, porque es importante: RoguePlanet suplanta la ruta de wermgr.exe vía junction, haciendo que un binario atacante parezca estar en System32. Un allowlisting basado en ruta puede ser engañado por esa suplantación. Conclusión práctica:

  • WDAC/AppLocker sí ayuda, pero con reglas de publisher/hash, no de ruta. Una política que confíe en “cualquier cosa en System32” es precisamente lo que el junction ataca.
  • Cyderes, de hecho, no apuesta por allowlisting como control primario sino por detección comportamental contra los TTPs. Sin parche, esa es la primera línea.

Ingeniería de detección (el control real aquí)#

Sin parche, la detección comportamental es la defensa. Cuatro señales, de más a menos robusta:

1. wermgr.exe ejecutado desde una ruta no estándar (alta confianza)#

wermgr.exe legítimo vive en System32/SysWOW64. Cázalo cuando se escribe o ejecuta desde cualquier otra ruta:

DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName =~ "wermgr.exe"
| where not(FolderPath has_any (@"\Windows\System32\", @"\Windows\SysWOW64\"))
| project Timestamp, DeviceName, FolderPath, ProcessCommandLine,
          InitiatingProcessFileName, AccountName

2. Shell / conhost anómalo desde contexto SYSTEM (alta)#

El PoC deja un patrón peculiar: conhost.exe con padre de integridad SYSTEM inyectado en la sesión de usuario, sin cmd.exe en el árbol. Complementa la regla de la pieza BlueHammer (shell hijo de MsMpEng.exe).

title: RoguePlanet — conhost/shell anómalo de contexto SYSTEM
id: ne-rp-001-system-conhost
status: experimental
description: >
  conhost.exe con padre SYSTEM en sesión de usuario sin cmd.exe en el árbol,
  o shell hijo de MsMpEng.exe. Artefacto de RoguePlanet (CVE-2026-50656).
  Comportamental: no depende del nombre del named pipe del PoC.
references:
  - https://www.cyderes.com/howler-cell/rogueplanet-windows-zero-day
author: Serie Nightmare Eclipse — detección defensiva
date: 2026-07-05
tags:
  - attack.privilege_escalation
  - attack.t1068
  - attack.t1053.005
logsource:
  product: windows
  service: sysmon
detection:
  msmpeng_child:
    EventID: 1
    ParentImage|endswith: '\MsMpEng.exe'
    Image|endswith: ['\cmd.exe', '\powershell.exe', '\conhost.exe']
  wermgr_offpath:
    EventID: 1
    Image|endswith: '\wermgr.exe'
    Image|contains: '\Temp\'
  condition: msmpeng_child or wermgr_offpath
falsepositives:
  - Bajo. Validar contra baseline.
level: high

3. Enumeración de Volume Shadow Copy desde espacio de usuario (media)#

Llamadas inusuales tipo NtQueryDirectoryObject contra dispositivos HarddiskVolumeShadowCopy desde user-space son parte del patrón.

4. El named pipe del PoC (baja — solo cosmético)#

\\.\pipe\RoguePlanet existe durante toda la ejecución del PoC como canal de señal de éxito. Es un artefacto del PoC público, no un IoC de intrusión real, y se renombra en un segundo. Úsalo para detectar el PoC tal cual, jamás como control primario.

DeviceEvents
| where ActionType == "NamedPipeEvent"
| where AdditionalFields has "RoguePlanet"
| project Timestamp, DeviceName, InitiatingProcessFileName,
          InitiatingProcessAccountName, AdditionalFields

Mitigación (sin parche a 2026-07-01)#

ControlDetalle
Detección comportamentalPrimera línea: reglas #1 y #2 de arriba. Es el control real mientras no hay parche
WDAC/AppLocker por publisher/hashAyuda, pero no confíes en reglas basadas en ruta (el junction las burla)
Vigilar wermgr.exe fuera de System32Escritura o ejecución desde rutas no estándar = alta prioridad
Reducir cuentas con logon interactivo localMenos superficie para iniciar la carrera
Aplicar el parche en cuanto salgaMicrosoft lo tiene en desarrollo; priorízalo
El hilo conductor de la serie, otra vez. Cuatro CVE distintos (BlueHammer, RedSun, RoguePlanet y buena parte de la familia Plasma) son la misma primitiva: un proceso SYSTEM que valida una ruta y luego escribe/ejecuta sin revalidar, más oplock + junction para ganar la carrera. Si cazas la clase —escrituras/ejecuciones privilegiadas en rutas suplantadas, shells de contexto SYSTEM— cubres las cuatro y las que vengan. Cazar CVE por CVE es perder por diseño.

MITRE ATT&CK#

TácticaTécnica
Privilege EscalationT1068 — Exploitation for Privilege Escalation
Execution / PrivEscT1053.005 — Scheduled Task/Job (QueueReporting de WER)
Defense EvasionT1036 — Masquerading (wermgr.exe suplantado vía junction)

Referencias#