
LnvMSRIO.sys 脆弱ドライバーをエクスプロイト
LnvMSRIO.sys(Lenovo MSR I/O ドライバー)用の Proof-of-Concept エクスプロイトです。Superfetch の VA→PA 変換を介して、任意の物理メモリ読み書きとカーネルメモリアクセスを実証します。
| プロパティ | 値 |
|---|---|
| ドライバー名 | LnvMSRIO.sys |
| デバイス名 | \\.\WinMsrDev |
| サービス名 | LnvMSRIO |
| ベンダー | Lenovo |
| 目的 | システムユーティリティ向けの MSR および物理メモリアクセス |
このドライバーは、特権カーネル操作をユーザーモードに公開します:
物理メモリ読み取り(16 バイト):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize (1=byte, 2=word, 8=qword)
Offset 12: DWORD Count (number of elements)
物理メモリ書き込み(16 バイトのヘッダー + データ):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
ドライバーは物理メモリアクセスのみを提供するため、Superfetch の手法を使用してカーネル仮想アドレスを物理アドレスに変換します:
NtQuerySystemInformation(SystemSuperfetchInformation) を使用して Superfetch に物理メモリ範囲を照会するLnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
要件:
LnvMSRIOExploit.dproj を開くWin64\Release\LnvMSRIOExploit.exeこのツールは教育および許可されたセキュリティ研究目的のみで提供されます。所有していない、または明示的なテスト許可がないシステムに対する不正使用は違法です。作者は誤用に対する一切の責任を負いません。
研究および教育目的のみに使用できます。
| IOCTL コード | 機能 | 説明 | PoC |
|---|
0x9C406104 | 物理メモリ読み取り | MmMapIoSpace を介してマップ | ✅ |
0x9C40A108 | 物理メモリ書き込み | 物理メモリをマップして書き込み | ✅ |
0x9C402084 | MSR 読み取り | モデル固有レジスタの読み取り | ❌ |
0x9C402088 | MSR 書き込み | モデル固有レジスタへの書き込み | ❌ |