
ThrottleStop.sys(CVE-2025-7771)を使用し、superfetchアドレス変換を利用した任意の物理メモリ読み書きエクスプロイト - Windowsカーネルセキュリティ研究
仮想-物理アドレス変換と脆弱なドライバ悪用を組み合わせた、物理メモリアクセスを実証する研究ツール。
このプロジェクトは、スーパーフェッチ技術によるアドレス変換とIOCTLベースの物理メモリアクセスを組み合わせることで、Windowsの低レベルメモリ管理を探求します。カーネルモード/ユーザーモードの相互作用とメモリサブシステムの内部構造を理解するために構築されました。
CVE ID: CVE-2025-7771
コンポーネント: ThrottleStop.sys (TechPowerUp LLC 製署名済みドライバ)
影響を受けるバージョン: ThrottleStop 3.0.0.0 およびその他の可能性あり
脆弱性タイプ: 不十分なアクセス制御による露出したIOCTL (CWE-782)
CVSSスコア: 8.7 (高) – Kaspersky Labs
影響: ローカル権限昇格 (LPE)
ThrottleStop.sys ドライバは、MmMapIoSpace を介して完全に任意の物理メモリ読み取り・書き込み操作を可能にする2つのIOCTLハンドラを公開しています。これらのインターフェースには、検証チェック、境界制限、アクセス制御が一切ありません。任意のユーザーモードアプリケーションが任意の物理アドレスを指定し、任意のデータを読み書きできます。
この無制限のアクセスにより、以下のことが可能になります:
アクセスの任意性により、攻撃者はドライバによって課される制限なしに物理メモリを完全に制御できます。
悪用は以下のパターンに従います:
\\.\ThrottleStop デバイスオブジェクトへのハンドルを開くNtQuerySystemInformation を使用してカーネルベースアドレスを特定MmMapIoSpace を介した物理メモリの読み取り/書き込み用 IOCTL コマンドを発行実際のマルウェアはこの脆弱性を利用して、NtAddAtom のようなカーネル関数にパッチを当て実行フローを乗っ取ることでセキュリティ製品を無効化しています。
このプロジェクトは、教育目的でこのような攻撃チェーンの技術的コンポーネントを実演します:
スーパーフェッチ統合 – SystemSuperfetchInformation を使用してカーネル仮想アドレスを物理アドレスに変換
ドライバインターフェース – DeviceIoControl を介して脆弱なドライバと通信し、物理メモリ操作を実行
// 変換用のメモリマップを取得
auto mm = spf::memory_map::current();
// カーネル仮想アドレスを物理アドレスに変換
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// ドライバを介して物理メモリにアクセス
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
教育および研究目的のみ。 コンピュータシステムへの不正アクセスは違法です。このコードは、防御的なセキュリティ研究のために文書化された脆弱性を示すものです。
MIT License