
cldflt.sys (CVE-2025-62221) の use-after-free を実証する概念実証。カーネルプールグルーミングとトークンスティーリングを介して SYSTEM へのローカル権限昇格を可能にします。
デモ 概念実証: cldflt.sys における時間的メモリ不整合(CVE-2025-62221)CVE-2025-62221:
このリポジトリは、垂直方向の権限昇格ベクターに関する包括的な技術分析と概念実証(PoC)デモを提供します。この脆弱性は、Windows Cloud Files ミニフィルタードライバー(cldflt.sys) 内に存在する Use-After-Free(UAF) プリミティブとして識別されています。本ドキュメントでは、特権のないユーザーモードエンティティが Ring 0(NT AUTHORITY\SYSTEM)のセキュリティコンテキストに遷移するメカニズムを詳述します。
CVE-2025-62221 脆弱性は、Windows カーネルモードのエグゼクティブサブシステムにおけるメモリオブジェクトのライフサイクルの時間的管理の重大な欠陥に起因します。具体的には、cldflt.sys ドライバーは、クラウドバックアップされたリパースポイントに対する非同期I/O要求の処理中に、アトミックな参照カウンティングを実装していません。不正な 入出力制御(IOCTL) ディスパッチルーチンを介して非決定的なレースコンディションを引き起こすことで、ローカルの攻撃者はダングリングポインター状態を誘発できます。この状態により、カーネルプールのグルーミングが可能になり、任意書き込みプリミティブとその後のセキュリティトークンの置換が容易になります。
| パラメータ | 仕様 |
|---|---|
| 脆弱性クラス | 時間的メモリ破壊 / Use-After-Free(CWE-416) |
| 対象サブシステム | Windows Cloud Files Mini Filter(cldflt.sys) |
| 悪用プリミティブ | カーネルプールグルーミングとトークン窃取 |
| 権限境界 | ユーザーからカーネル / 標準ユーザーからSYSTEM |
| CVSS v3.1 ベクター | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H(基本スコア: 7.8) |
| 時間的コンテキスト | 2025年第4四半期に特定。2026年1月に修正パッチ公開 |
悪用手法は、いくつかの個別のフェーズで構成されています。
この手順は、対象カーネル環境を監査し、cldflt.sys モジュールの存在を確認することから開始します。さらに、稼働中の特定の Windows ビルドに基づいて、EPROCESS 構造体と関連するセキュリティトークンフィールドに必要なオフセットを算出します。
エクスプロイトは、スパースでクラウドバックアップされた一連のディレクトリ構造を作成します。これらの構造は、フィルタードライバーに対する主要な相互作用面として機能し、攻撃者が 非ページカーネルプール 内の割り当てパターンに影響を与えることを可能にします。
並行した不正なI/O要求のディスパッチを通じて、エクスプロイトは、ドライバーの実行スタック内にアクティブな参照が残っている間にメモリオブジェクトが解放される非同期状態を誘発します。
ヒープスプレーイング 技術を利用して、解放されたばかりのメモリスロットを占有します。エクスプロイトは、制御されたデータ構造でプールを満たし、実質的に "Use-After-Free" 状態を "型混乱" または "制御されたポインター上書き" へと変換します。
カーネルモード実行の乗っ取りに成功すると、ペイロードは トークン窃取 操作を実行します。SYSTEMプロセス(PID 4)を特定し、そのプライマリアクセストークンをエクスプロイトプロセスのセキュリティ記述子に複製します。
[!CAUTION] 実験上の警告: この研究は学術的検証と正式なカーネルモードセキュリティ監査を目的としています。不適切に実装すると、カーネルバグチェック(BSOD)またはファイルシステムの破損が発生する可能性があります。すべてのテストは、厳密に分離されたハイパーバイザー環境内で実施する必要があります。
ネットワークトポロジを初期化:
sudo python3 topo.py
クラウドノードとユーザーノードのターミナルを開く:
xterm cloud user
クラウドターミナルで、プロジェクトディレクトリに移動してサーバーを起動:
cd ~/Downloads/sps_test
python3 server.py
ユーザーターミナルで、自動エクスプロイトスクリプトを実行(任意):
python3 run_all.py
または、詳細な観察のために各フェーズを手動で実行します。
ユーザーターミナル内で以下の手順を順番に実行し、メモリ状態の遷移を観察します:
Step 1 — Allocated FileObject | REF=ref-12345
python3 1.py
Step 2 — Object freed
python3 2.py
Step 3 — DANGLING REF
python3 3.py
Step 4 — Heap reuse
python3 4.py
Step 5 — Handler overwritten
python3 5.py
Step 6 — MALICIOUS HANDLER EXECUTED
python3 6.py
注: フェーズ6でピボットに成功すると、システムは malware.json 内で定義された悪意のあるコマンドシーケンスを実行します。クラウドターミナルに実行メッセージが表示され、ユーザーターミナルでマルウェアコマンドを受信します。
このリポジトリに含まれるドキュメントとコードは、サイバーセキュリティ研究の進展のみを目的として提供されています。著者は、この情報の使用によって生じた損害について一切の責任を負いません。この研究の目的は、ミニフィルタードライバーの脆弱性に関する包括的な理解を促進し、既存の緩和策の有効性を評価することです。
参照: Microsoft Security Response Center (MSRC) - CVE-2025-62221
SPS課題 UPB 2026 のために作成
| ファイル | 用途 |
|---|
| topo.py | ネットワーク境界を定義するMininetオーケストレーションスクリプト |
| server.py | UAFロジックを組み込んだシミュレートされたcldflt.sysドライバーサービス |
| run_all.py | 効率的なテストのための自動エクスプロイトスクリプト |
| user.py | 代替自動エクスプロイトスクリプト |
| 1.py から 6.py | 詳細な技術分析のために提供される個別の悪用ステージ |
| malware.json | コード実行プリミティブを実証するために使用される悪意のあるペイロード : コード実行プリミティブを実証するために使用される悪意のあるペイロード |