Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-24481-analysis — Windows CLFS の型混乱(CVE-2022-24481)の詳細な分析。根本原因の説明、エクスプロイトの流れ、カーネルガジェットの詳細、そして動作するローカル権限昇格 PoC を提供します。 | Kitploit
ツール/GitHubGitHub/uname1able/cve-2022-24481-analysis
特権昇格脆弱性分析エクスプロイトリバースエンジニアリングバイナリエクスプロイト
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Windows CLFS の型混乱(CVE-2022-24481)の詳細な分析。根本原因の説明、エクスプロイトの流れ、カーネルガジェットの詳細、そして動作するローカル権限昇格 PoC を提供します。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
4日前未レビュー

CVE-2022-24481 型の取り違え

型の取り違え

脆弱なファイル

clfs.sys

根本原因

rgContainers[0] の検証ロジックが厳密ではないため、rgContainers[0] を偽装した後、ClientContext が ContainerContext 構造体と重複します。偽のデータが受け入れられると、CloseHandle の後、CClfsLogFcbPhysical::FlushMetadata が ClientContext データを復元します。

悪用方法

rgContainers[0] を偽装した後、ClientContext は ContainerContext 構造体と重複します。偽のデータが受け入れられると、CloseHandle の後、CClfsLogFcbPhysical::FlushMetadata によって ClientContext データが復元されます。構造体が重複しているため、この処理により ContainerContext->pContainer は偽装されたデータに置き換えられます。最後に CClfsBaseFilePersisted::RemoveContainer が呼び出されると、間接メンバー関数呼び出しが発生し、特定のガジェットが実行されて特権昇格につながります。

PoC フロー

1. 静的ファイルの準備

createlog は新しいログファイルを作成します。

Container エントリを追加します。

現在のディレクトリを指すシンボリックリンク X:\ を作成します。

cbSymbolName_start -> cbSymbolName_end の範囲をクリアします。

cbSymbolName_start を X:\N に設定します。

ContainerContext_start -> New_cbSymbolName_end のデータを ClientContext にコピーします。

rgContainers[0] が新しい ContainerContext_start の場所を指すように更新します。

新しい ContainerContext->pContainer の値を更新します。

チェックサムを再計算します。

2. 実行時の準備

カーネルメモリ内でガジェットのアドレスを特定します。

偽の仮想テーブルを構築します。

残りのメモリ設定を実行します。

3. 偽造したログファイルを開く

CClfsLogFcbPhysical::Initialize

00000001C0002EDB は ClientContext データを格納します。

CloseHandle の後、CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata が実行されます。

偽装されたデータが ClientContext にコピーされて戻されます。ClientContext が ContainerContext と重複しているため、ContainerContext->pContainer は偽装されたデータで上書きされます。

その後、CClfsBaseFilePersisted::RemoveContainer が私たちのガジェットを実行し、任意のアドレスへの16バイト書き込みが発生します。

参照

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

データ変更リスト

関数フローの要点

win10_21H2_19044.1620

CClfsLogFcbPhysical::Initialize(0x??7c) ファイルを開くための初期化ルーチン

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

このコードは ClientContext メモリを格納します。

CloseHandle の後、CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata が実行されます。

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

これにより ClientContext データが復元されます。

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

偽装した仮想テーブルポインタを使用してガジェットに到達します。

偽装されたファイルが不正な場合、ファイルを開くのに失敗し、GetLastError で理由が明らかになります。その場合、エクスプロイトのフローは続行できません。

ガジェット

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 は [rax+8] に16バイト(XMMWORD、128ビット)を書き込みます。

逐次実行の結果、poi(rdx) 0xFFFFFFFF の16バイトデータが poi(poi(rcx+0x48)+0x8) に書き込まれます。

rcx は仮想テーブルポインタの位置であり、この位置は私たちの制御下にあります。

実装済み PoC

https://github.com/uname1able/CVE-2022-24481.git

Win10 PoC

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Win11 PoC

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

ツールをダウンロード