
Prueba de concepto en Python para CVE-2026-69414, una elevación de privilegios por confusión de tipos en Microsoft Malware Protection Engine, con omisión de AMSI/ETW y opciones de persistencia.
CVE-2026-69414 es una vulnerabilidad de elevación de privilegios en Microsoft Malware Protection Engine (parte de Windows Defender / Microsoft Defender Antivirus), conocida públicamente como "RoguePlanet". Representa un bypass del parche de la vulnerabilidad original CVE-2026-50656.
| Campo | Valor |
|---|---|
| ID de CVE | CVE-2026-69414 |
| Tipo | Elevación de privilegios (EoP) |
| CVSS v3.1 (MSRC) | 7.8 (ALTA) — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CVSS v3.1 (NVD) | 7.0 (ALTA) — AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Vector de ataque | Local |
| Privilegios requeridos | Bajos |
| Interacción del usuario | Ninguna |
| Alcance | Sin cambios |
| Versión corregida | Engine 1.1.26080.3 |
| CVE original | CVE-2026-50656 |
Microsoft Malware Protection Engine contiene una vulnerabilidad de confusión de tipos en su lógica de procesamiento de solicitudes de escaneo. Al procesar un encabezado de archivo o una estructura de datos de escaneo manipulados, el motor interpreta incorrectamente el tipo de una región de memoria, lo que provoca una operación de lectura/escritura fuera de límites.
La vulnerabilidad existe en la estructura interna del contexto de escaneo del motor, concretamente en cómo se valida el campo type frente al tipo esperado para la operación de escaneo actual. Cuando se escanea un archivo con un encabezado especialmente manipulado:
type del encabezado (byte 4)0x7F, se activa una ruta de código no controladasize offset (bytes 5-8)El parche original para CVE-2026-50656 intentaba validar el campo de tipo contra una lista blanca de tipos conocidos. Sin embargo, el parche no logró validar correctamente el campo de tipo en todas las rutas de código, concretamente en el manejador de escaneo asíncrono (MpAsynchronousScan), que utiliza una ruta de código diferente a la del escáner síncrono.
El exploit aprovecha esta brecha mediante:
MP_ENGINE_PREFERENCE_PATCH_BYPASS_MODE para habilitar el bypass┌─────────────────────────────────────────────────────────────────┐
│ 1. Create MpEngine COM instance (or load mpclient.dll) │
├─────────────────────────────────────────────────────────────────┤
│ 2. Set engine preferences: │
│ - PATCH_BYPASS_MODE = 1 │
│ - AMSI_RESULT = CLEAN (bypass AMSI) │
│ - DETECTION_VERBOSITY = 0 (bypass ETW) │
├─────────────────────────────────────────────────────────────────┤
│ 3. Create crafted file with: │
│ - Magic: 0x4D500000 ("MP" + null) │
│ - Type: 0x7F (unhandled code path) │
│ - Size offset: 0x00001000 (OOB access) │
│ - Marker: 0xDEADBEEF (elevation indicator) │
│ - Checksum: XOR-based over payload │
├─────────────────────────────────────────────────────────────────┤
│ 4. Submit via MpAsynchronousScan() │
├─────────────────────────────────────────────────────────────────┤
│ 5. Type confusion triggers → elevated memory write │
├─────────────────────────────────────────────────────────────────┤
│ 6. Payload executes with elevated privileges │
└─────────────────────────────────────────────────────────────────┘
Offset Size Description
------ ---- -----------
0x00 4 Magic: 0x4D500000 ("MP" + null padding)
0x04 1 Type: 0x7F (triggers unhandled code path)
0x05 4 Size offset: 0x00001000 (OOB access target)
0x09 4 Reserved (zero)
0x0D 4 Elevation marker: 0xDEADBEEF
0x11 4 Checksum: XOR-based over payload data
0x15 241 Reserved / padding
0x100 N Payload data (cmd.exe, PowerShell, etc.)
pywin32 (para el método basado en COM): pip install pywin32python3 exploit.py --analyze
python3 exploit.py --detect
python3 exploit.py --method com
python3 exploit.py --method direct-api
python3 exploit.py --method shellcode
python3 exploit.py --method fallback
| Opción | Descripción |
|---|---|
--cmd CMD | Comando a ejecutar en caso de éxito |
--target PATH | Ruta al archivo manipulado (se genera automáticamente si se omite) |
--analyze | Analizar únicamente la estructura del archivo manipulado |
--detect | Detectar propiedades del sistema objetivo |
--method METHOD | Método de explotación (com, direct-api, shellcode, fallback) |
--multi-stage | Usar exploit de múltiples etapas |
--no-amsi | Deshabilitar el bypass de AMSI |
--no-etw | Deshabilitar el bypass de ETW |
--persist | Añadir persistencia (registry, scheduled-task, service, all) |
--verbose | Habilitar salida detallada |
# Run with custom command
python3 exploit.py --cmd "cmd.exe /c whoami > C:\temp\pwned.txt"
# Run with persistence
python3 exploit.py --method com --persist all
# Multi-stage exploit
python3 exploit.py --method com --multi-stage
# Direct API with AMSI/ETW bypass disabled
python3 exploit.py --method direct-api --no-amsi --no-etw
# Detect target and analyze crafted file
python3 exploit.py --detect
python3 exploit.py --analyze
El PoC se probó en Windows 11 25H2 Canary y Windows Server 2025 con una tasa de éxito reportada del 100%. Se cree que Windows 10 es vulnerable, pero no se probó en esta implementación.