TLP:CLEARAnálisis defensivo de fuentes públicas. Sin pasos de explotación. Cierra la serie Nightmare Eclipse.

Resumen ejecutivo#

El 13 de mayo, un día después del Patch Tuesday de mayo, el actor soltó tres LPEs de golpe (junto con YellowKey). Dos de ellas son las “Plasma”, y ambas terminan en SYSTEM:

  • GreenPlasma (CVE-2026-45586) — abusa del framework de entrada de texto CTFMON, un servicio que corre como SYSTEM.
  • MiniPlasma (CVE-2020-17103) — reutiliza, sin cambios, un CVE de 2020 contra el driver de Cloud Files. No es un error de tipeo: es el titular de este post.

Ambas se parchearon en el Patch Tuesday de junio 2026. Su valor hoy no es la urgencia (están parcheadas) sino la lección: una es un recordatorio de que los procesos SYSTEM que confían en objetos manipulables son superficie de escalada; la otra, de que un parche que no se verifica es un parche que quizá nunca existió.

(Actualización, 7-jul-2026: nada urgente aquí, y es una buena noticia dentro de la campaña. Ambas siguen sin explotación in-the-wild reportada —a diferencia de BlueHammer/RedSun, se quedaron en PoC—. Salieron dentro de un Patch Tuesday de junio enorme (~200 CVE corregidos, 6 zero-days en total), lo que subraya la importancia de haberlo aplicado completo. Microsoft caracteriza oficialmente GreenPlasma como un bug de “link-following” en el Collaborative Translation Framework (CTFMON), coherente con el mecanismo descrito arriba. La regresión de CVE-2020-17103 (MiniPlasma) quedó confirmada por varios análisis independientes: el PoC de 2020 seguía elevando a SYSTEM en Windows 11 con las actualizaciones de mayo 2026, hasta el parche de junio.)

MiniPlasma: la resurrección de CVE-2020-17103#

Empecemos por la buena historia. CVE-2020-17103 es un bug de elevación de privilegios en cldflt.sys —el Cloud Files Mini Filter Driver—, descubierto por Project Zero y “parcheado” por Microsoft en noviembre de 2020. Seis años después, el PoC de MiniPlasma lo dispara igual.

¿Por qué? Según el análisis de GuardSix, “el PoC original de Project Zero sigue funcionando sin cambios, lo que significa que el fix o nunca se aplicó correctamente o fue silenciosamente revertido en algún momento.” Es decir: una regresión o un parche incompleto que dejó el agujero abierto durante años.

Seis años es tiempo de sobra para que todos crean que algo terminó. “Parcheado” es una de esas palabras que cierran el caso y apagan la atención — se marca, se archiva, se deja de mirar. Pero marcar no es arreglar, igual que nombrar no es entender. El bug no volvió: nunca se fue; solo se fue la gente que lo vigilaba. Es el patrón de siempre — cambia el año, cambia el número de build, la firma se conserva. Un fix sin una prueba que lo vigile no es un estado, es una creencia, y las creencias que nadie vuelve a auditar son exactamente las que un día crujen bajo el peso que se les puso encima.

Mecanismo (nivel conceptual). El driver realiza operaciones de registro usando su contexto SYSTEM privilegiado sin restringir al llamante. Ganando una condición de carrera (alternando tokens de impersonación mientras se invoca CfAbortOperation()), el atacante engaña al driver para que escriba en HKEY_USERS\.DEFAULT —un hive de SYSTEM que el usuario no puede tocar normalmente—. Eso se convierte en envenenamiento de variables de entorno (redirigir %windir%), que a su vez hace que Windows Error Reporting ejecute un wermgr.exe malicioso como SYSTEM. Resultado: shell SYSTEM interactivo en el escritorio del usuario, sin credenciales y sin prompt de UAC.

El patrón WER, otra vez. Fíjate: MiniPlasma y RoguePlanet llegan a SYSTEM por el mismo sitio final —Windows Error Reporting ejecutando un wermgr.exe suplantado—, aunque el camino para llegar allí sea distinto (registro/env vars vs. junction). WER es un primitive recurrente de ejecución como SYSTEM en toda esta campaña. Si vigilas wermgr.exe fuera de System32, cubres varias piezas a la vez.
La lección de ingeniería. Un fix no está cerrado hasta que se verifica que el PoC original ya no funciona —idealmente con un test de regresión que se ejecute en cada build—. MiniPlasma es el caso de libro de por qué “marcado como parcheado” no es lo mismo que “parcheado”: el CVE-2020-17103 estuvo seis años en estado zombie. Aplica igual a tu propio código: sin test de regresión, un bug corregido puede volver silenciosamente.

GreenPlasma: abusar de la confianza de CTFMON#

Componente: ctfmon.exe, el servicio de entrada de texto de Windows, que corre como SYSTEM. Clase de vulnerabilidad: escalada vía manipulación de symlinks del Object Manager + bypass de DACL de registro.

Mecanismo (nivel conceptual). El exploit crea un enlace simbólico del Object Manager apuntando a CTF.AsmListCache.FMPWinlogon. Cuando el proceso privilegiado ctfmon abre esa sección con nombre, accede sin saberlo a un objeto controlado por el atacante. En paralelo, usa un symlink de registro para saltarse los controles de acceso sobre el hive de Policies —engañando al kernel para que resetee permisos sobre claves sensibles redirigiendo las escrituras por la ruta, menos protegida, de la política de CloudFiles—.

Matiz de madurez. Según GuardSix, el PoC de GreenPlasma todavía dispara un prompt de consentimiento de UAC y se comporta más como prueba de técnica que como exploit llave en mano. Menos “turnkey” que MiniPlasma, pero igual de instructivo: demuestra que un proceso SYSTEM que abre objetos por nombre sin validar su origen es manipulable.

Lo que el código real confirma (analizado en laboratorio)#

El PoC público es deliberadamente parcial —el autor quitó el código del shell SYSTEM completo y lo dejó como reto de CTF—; lo que corre demuestra la primitiva: crear un objeto de sección arbitrario en un directorio de objetos escribible por SYSTEM. Analizado en un entorno aislado, deja artefactos de registro y de espacio de nombres muy concretos:

  • El symlink de registro va por CloudFiles. Resetea la DACL de HKCU\Software\Policies\Microsoft\CloudFiles (con una DACL protegida) y recrea …\CloudFiles\BlockedApps como enlace simbólico de registro (REG_OPTION_CREATE_LINK | REG_OPTION_VOLATILE), escribiendo el valor SymbolicLinkValue (tipo REG_LINK) que apunta a la clave de política del sistema. A través de ese enlace escribe DisableLockWorkstation = 1 en …\CurrentVersion\Policies\System.
  • El hijack de namespace usa el nombre de CTF. Crea un enlace simbólico del Object Manager en \Sessions\<id>\BaseNamedObjects\CTF.AsmListCache.FMPWinlogon<id> apuntando a un objeto controlado (por defecto \BaseNamedObjects\CTFMON_DEAD). Cuando ctfmon/Winlogon (SYSTEM) crea o abre esa sección con nombre, el enlace la redirige.
  • La shell sale por runas. El PoC materializa la consola con ShellExecuteEx verbo runas sobre conhost.exe (elevación por UAC — coherente con el prompt que menciona GuardSix).

Ninguno de estos pasos es habitual en un proceso de usuario, y son la base de la detección de abajo.

Detección#

Ambas están parcheadas, así que esto es hunting retrospectivo y cobertura de la clase de vulnerabilidad, no respuesta urgente:

wermgr.exe fuera de ruta (cubre MiniPlasma y RoguePlanet)#

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

Anomalías de %windir% / variables de entorno (MiniPlasma)#

Vigila procesos SYSTEM lanzados con un %windir% que no apunta a C:\Windows, o modificaciones inesperadas de variables de entorno en HKEY_USERS\.DEFAULT\Environment. Es el corazón del truco de envenenamiento de env vars.

La telemetría de registro (Sysmon EventID 12-14) sí captura la parte más resiliente del PoC: la creación de una clave con REG_OPTION_CREATE_LINK (o la aparición del valor SymbolicLinkValue/REG_LINK) y la escritura de DisableLockWorkstation bajo Policies\System desde un proceso de usuario. Ambas son operaciones raras y anómalas:

title: GreenPlasma — symlink de registro / escritura de Policies (CTFMON PrivEsc)
id: ne-gp-001-registry-symlink-policies
status: experimental
description: >
  Creación de un enlace simbólico de registro (SymbolicLinkValue/REG_LINK) o
  escritura de DisableLockWorkstation bajo Policies\System por un proceso de
  usuario. Artefacto de GreenPlasma (CVE-2026-45586). El objeto CTF.AsmListCache
  del Object Manager es complementario (difícil de instrumentar).
references:
  - https://guardsix.com/blog/inside-the-latest-chaotic-eclipse-releases-mini-plasma-greenplasma-and-yellowkey
author: Serie Nightmare Eclipse — detección defensiva
date: 2026-07-08
tags:
  - attack.privilege_escalation
  - attack.t1548
  - attack.t1112
logsource:
  product: windows
  category: registry_event
detection:
  reg_symlink:
    EventType: SetValue
    TargetObject|endswith: '\SymbolicLinkValue'
  disable_lock:
    TargetObject|endswith: '\CurrentVersion\Policies\System\DisableLockWorkstation'
  condition: reg_symlink or disable_lock
falsepositives:
  - Muy bajo. Los symlinks de registro son inusuales fuera de casos concretos.
level: high

Los nombres del Object Manager (CTF.AsmListCache.FMPWinlogon, CTFMON_DEAD) son IoC frágiles y complementarios; el espacio de nombres es más difícil de instrumentar que el registro. Señal adicional de bajo coste: conhost.exe lanzado con el verbo runas (elevación UAC).

Mitigación#

AmenazaControl
GreenPlasma, MiniPlasmaParche Patch Tuesday junio 2026 (fix real de ambas)
MiniPlasmaVerificar que el host recibió el parche de junio, dado el historial de regresión de este CVE
Clase de vulnerabilidadVigilar wermgr.exe fuera de System32 y anomalías de %windir% como cobertura transversal

Cierre de la serie#

Seis posts, ocho exploits, un actor. Si algo se lleva el lado azul de Nightmare Eclipse, es esto:

  1. Caza clases de bug, no CVE. Cinco de las ocho piezas son el mismo primitive (TOCTOU + oplock + junction, con WER como salida a SYSTEM). Una detección comportamental sólida —shell hijo de MsMpEng.exe, wermgr.exe fuera de ruta— cubre lo que cinco firmas de CVE no.
  2. El estado autorreportado miente. UnDefend y las piezas de BitLocker demuestran que “protección activada” y “protegido” son cosas distintas.
  3. Un parche sin verificar no es un parche. MiniPlasma estuvo seis años zombie.
  4. El control nativo también es superficie. El propio Defender fue el vehículo de la escalada. Defensa en profundidad no es un lujo.

Vuelve al índice de la serie para el mapa completo y los IoCs consolidados.

MITRE ATT&CK#

TácticaTécnica
Privilege EscalationT1068 — Exploitation for Privilege Escalation
Privilege EscalationT1574.007 — Path Interception by PATH Environment Variable (MiniPlasma)
Defense EvasionT1036 — Masquerading (wermgr.exe)
Privilege EscalationT1548 — Abuse Elevation Control Mechanism (GreenPlasma / DACL bypass, runas)
Defense EvasionT1112 — Modify Registry (symlink de registro + DisableLockWorkstation)

Referencias#