HeadlinesBriefing favicon HeadlinesBriefing.com

CVE-2025-13032: Avast アンチウイルス サンドボックス脱出エクスプロイト

Hacker News •
×

Introduction このブログ投稿は、Avastの研究の第2部で、最終部分でもあり、CVE-2025-13032の利用に焦点を当てます。これはAvastのカーネルドライバで発見されたダブルフェッチ脆弱性です。この投稿はバグを復習し、実際の発見時の最新のWindows 11システムでどのように利用したかを解説します。見逃した場合は最初の部分をお読みください → https://www.safateam.com/intelligence-hub/research/technical-articles/cve-2025-13032-entering-and-breaking-the-avast-antivirus-sandbox-part-1

Bug Explanation 利用したいバグは、ダブルフェッチ問題によってkernel pool overflowにつながるものです。以下に提示されたコードスニペットは、ユーザーによって供給された_UNICODE_STRING構造体をキャプチャするように supposed されていますが、ユーザー入力のLengthフィールドは複数回取得され、ダブルフェッチ問題を引き起こします。最初の取得は、文字列がコピーされるバッファを割り当てるために行われ、2回目の取得は取得した値に基づいてmemmoveを行うために行われ、ユーザーの間にその間に変更があった場合にpool overflowを引き起こします。ダブルフェッチを利用するために、第2スレッドは緊密なループで実行され、共有の_UNICODE_STRINGのLengthフィールドを安全な小さな値と大規模な悪意のある値(例:`0x1000`、割り当てられたバッファより大きい)の間で連続的にトグルします。メインスレッドは脆弱なIOCTLをループで呼び出します。タイミングが合致した場合—カーネルはExAllocatePoolWithTag呼び出しのためにLengthを小さく読み取り、その後memmoveのために大きく読み取り—より多くのバイトが割り当てられたバイト数よりコピーされ、pool overflowが発生します。競合ウィンドウは狭いですが、moderate number of iterationsで信頼性高く勝つことができます。我々の目標は、このpool overflowを利用して arbitrary kernel read/write プリミティブを獲得し、local privilege escalationを達成することです。この脆弱性は、良好な利用条件を我々に提供します:overflowはPAGED_POOLをターゲットにし、割り当てサイズとoverflowサイズは制御されており、内容も制御されています。Paged Poolは、カーネルやドライバが必要とするが、ディスクにページアウトできるオブジェクトやデータ用のWindowsカーネルメモリ領域です。高優先度で動作する重要なコードによってアクセスされないメモリに使用されます。アロケータはサイズクラスによって割り当てをグループ化します。つまり、同じサイズのオブジェクトはメモリ内で近くに配置されやすい—これがheap sprayingを可能にするプロパティです。Windows 10 19H1以降、これはSegment Heapによって処理され、2つのバックエンドを使用します:LFHは小さな割り当てのために、サイズバケット内で自由スロットをランダムに選択し、VS allocatorは大きなものは最初に利用可能な適切なサイズのチャンクを提供します—それぞれ異なるスプレー戦略を必要とします。Windowsのオブジェクトの多くもpaged ...