CVE-2024-26160 に関する小規模な解説です。この脆弱性は2月のパッチ(KB5034765、Windows 11 22H2、Windows 11 23H2)に存在し、3月のパッチ(KB5035853)で修正されました。
この脆弱性は CldiPortProcessGetRangeInfo 関数にあり、ユーザーアプリケーションから渡されたバッファサイズをチェックしていません。サイズはユーザーが制御できるため、返された情報をコピーする memmove が、サイズが正しく渡された場合にカーネルアドレスを含む隣接するメモリプールを取得する可能性があります。


3月のパッチ(KB5035853)では、バッファサイズに対する追加のチェックが導入されています。

通常の条件下では、CfGetPlaceholderRangeInfoForHydration 関数が呼び出されると脆弱性のある関数が呼び出されますが、この関数は返されるバッファに固定サイズを使用するため、脆弱性のある関数呼び出しに到達するデータパケットを構築する必要があります。必要な関数の呼び出しは CldiPortNotifyMessage 関数を経由し、そこでは特別なパケットを含むすべてのパケットが検証されなければなりません。

リークを引き起こすためには、メッセージタイプを渡すことが重要です。

データパケットが適切に形成されていれば、アドレスの漏えいが確認できます。
