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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-45451 — Acronis 任意ファイル読み取りの PoC - CVE-2022-45451 | Kitploit
ツール/GitHubGitHub/alfarom256/cve-2022-45451
特権昇格脆弱性分析コード分析エクスプロイトバイナリ解析
GitHubalfarom256/cve-2022-45451

CVE-2022-45451

Acronis 任意ファイル読み取りの PoC - CVE-2022-45451

リポジトリを見る
18673年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

はじめに

システムスペック:
  • Windows 10 1809 x64 EN
ターゲット:
  • Acronis Home Cyber Protect
  • Acronis Cyber Protect

脆弱性の説明

Acronisの「ngscan」アンチマルウェアスキャンドライバは、フィルタ通信ポートに設定された不適切/不正なアクセス制御に起因する脆弱性を抱えています。 このミニフィルタドライバは、以下の悪用可能な機能をサポートしています。

  • 任意のファイル読み取り
  • 機密性の高いレジストリキーの変更(未悪用、トリガー条件不明)- これによりローカルコード実行が発生する可能性があります

任意のファイル読み取り

ngscan.sysドライバの解析は、Ida Proでドライバを逆コンパイルすることから始めました。研究者は、デバイスオブジェクトは作成されるものの、DeviceIoControlを使用してドライバと対話するためのシンボリックリンクは作成されないことに注目しました。 そのため、解析はフィルタ通信ポートの機能を観察することで続けられました。 初期化中、ドライバは5つの通信ポートを作成し、他のプロセスからの対話をサポートします。

図1: 最大5つのフィルタ通信ポート(FCP)の作成をサポートするルーチン

この関数が呼び出され、5つのFCPそれぞれがデフォルトのDACLで初期化され、最後のFCPがNULL DACLで作成されることが確認されました。

図2: デフォルト/NULL DACLでのFCP作成

解析は、フィルタドライバによって指定されたCreateNotifyCallbackおよびMessageNotifyCallback関数の観察に移りました。 これらのコールバック関数は、プロセスが接続を開き、通信ポートにメッセージを送信するたびに呼び出されます。

MessageNotifyCallbackの最初の検査では、受信メッセージのバッファが以下の要件を満たす必要があることが示されました。

  • 最初のDWORDが期待されるヘッダ値 "TrMs" と一致すること(Line 37)
  • 2番目のDWORDにメッセージ内容の長さが含まれていること(注:これはInputBufferLengthとは異なる別の値です)
  • メッセージ内容の長さが、入力バッファ全体のサイズからメッセージヘッダのサイズを引いた値以下であること
    • メッセージヘッダはヘッダとサイズ、および別の未知の値で構成され、合計0xC(12)バイトです

これらのチェックを通過すると、InputBufferから関数番号が解析され、以下のswitchケースで指定された関数を選択して、提供された入力で実行します。

図3: MessageNotifyCallbackでサポートされる関数のサブセット

サポートされている各関数を検査すると、任意のファイル読み取りにつながる悪用の可能性がある2つの関数が注目されました。

図4: スキャンコンテキストを作成し、スキャンコンテキストのファイルハンドルを返す関数(Line 206, 233)

「スキャンコンテキスト」の正確な機能は完全にはわかっていませんが、解析により、ユーザーのInputBufferで指定された任意のファイルに対してファイルスキャンコンテキストを作成できることが示されました。 スキャンコンテキストが作成されると、スキャンコンテキストIDが出力バッファを介してユーザーに返されます。

図5: スキャンコンテキストデータをユーザーに返すCreate Scan Contextルーチン

図6: 保護されたSAMレジストリファイル(\??\C:\Windows\System32\config\SAM)へのアクセスを要求してミニフィルタドライバに送信されたデータ

図7: スキャンコンテキストID(0x3aaf)を含むミニフィルタドライバからの応答

スキャンコンテキストが作成され、IDが取得されると、再度通信ポートにメッセージを送信することで、要求元アプリケーションでスキャンコンテキストが作成されたファイルへのハンドルを開くことができます。

図8: 作成されたスキャンコンテキストのファイルハンドル取得

CreateFileReturnHandle0として指定された関数は、前の関数SearchScanContextsByIDが有効なスキャンコンテキストを返した場合にのみ呼び出されました。 例えば、要求元プロセスが前述のスキャン作成関数を呼び出して以前に作成された有効なコンテキストIDを提供した場合のみです。 要求元プログラムは、図8(図4、Line 233)で指定された関数にスキャンコンテキストIDを提供することで、特権ファイルへのハンドルを正常に開きました。

図9: SAMファイルのファイルハンドル取得成功

processhackerを使用して、要求元プロセスのハンドルを表示することで、ファイルハンドルへのアクセスが確認されました。

図10: SAMファイルへのハンドルを含むプロセス

図11: 取得したハンドルに読み取りアクセスが許可されている

潜在的なコードインジェクション

サポートされている関数のさらなる調査により、コード実行を獲得するために悪用される可能性がある3つのレジストリキーの制御が示されました。

図12: レジストリキーへのハンドルを開くことをサポートする関数

図13: プロセスに注入するフックモニターDLLを指定するレジストリキーを開く

図14: ユーザー制御データでレジストリキーを変更する機能を示すOpenKey関数

AcronisスイートによるフックのためのDLLインジェクションの状況は特定されませんでしたが、フック監視が有効になっている場合、x64HookLibおよびx86HookLibレジストリキーで指定されたDLLが、指定されたプロセスに注入されると考えられます。

図15: フックDLL C:\ProgramData\Acronis\NGMP\shared\acr_protect.x64.dll を指定するx64HookLibKey

限定的な任意ファイル読み取りを可能にする競合状態

スキャンコンテキストを開くプロセスは、任意ファイル読み取りの解析では事前に許可されています。 プロセスは、スキャンコンテキストを作成する代わりに、GetScanContextByID関数にリクエストを繰り返し発行し、ContextID値をループして1つ以上の有効なスキャンコンテキストが見つかるまでブルートフォースすることができます。

ツールをダウンロード