# マイクロソフトWindowsシステム0day脆弱性の分析と利用## はじめに先月のMicrosoftのセキュリティパッチには、初期のWindowsシステムにのみ存在するwin32kの特権昇格の脆弱性が含まれていました。本記事では、現在のセキュリティ対策が改善され続ける中で、攻撃者がどのようにしてこの脆弱性を引き続き悪用するかを分析します。分析環境はWindows Server 2016です。! [Numen独占:Microsoft 0-day Vulnerability Can Knock Out Web3 Cards at the System + Physical Level](https://img-cdn.gateio.im/social/moments-11434ba86c20e2bce85872a19c94efb4)## 脆弱性の背景0dayの脆弱性とは、まだ公開されておらず修正されていない脆弱性であり、悪意のある利用によって大きな損害を引き起こす可能性があります。今回発見されたWindowsシステムの0day脆弱性により、ハッカーがシステムを完全に制御することが可能となり、その結果として考えられるのは以下の通りです。- 個人情報の盗難- システムクラッシュによるデータ損失- 金銭的損失- マルウェアの埋め込み- 暗号化された秘密鍵が盗まれた- デジタル資産が移転されましたより広い範囲から見ると、この脆弱性はWeb2インフラストラクチャに基づいて動作する全体のWeb3エコシステムに影響を及ぼす可能性があります。! [Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3ゲームをダウンさせる可能性があります](https://img-cdn.gateio.im/social/moments-af93482f98ed83fd92288d62674084ac)## パッチ分析パッチは、オブジェクト参照カウントの複数回処理の問題を修正しました。早期のソースコードのコメントを分析すると、元のコードはウィンドウオブジェクトのみをロックし、ウィンドウ内のメニューオブジェクトをロックしていなかったため、メニューオブジェクトが誤って参照される可能性がありました。! [Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3カードをノックアウトすることができます](https://img-cdn.gateio.im/social/moments-171ea7cb7c6f7190c3f49a2b914eed04)## エクスプロイト分析分析によると、xxxEnableMenuItem関数内のMenuItemState関数が返すメニューには2つの可能性があります: ウィンドウのメインメニューまたはメニュー内のサブメニュー。特殊な多層ネストメニュー構造を構築し、特定の属性を設定することで、関数検出を回避できます。xxxRedrawTitle関数がユーザーレイヤーを返すときに、メニュー間の参照関係を削除し、ターゲットメニューオブジェクトを解放します。最終的にxxxEnableMenuItem関数で無効なメニューオブジェクトを参照します。! [Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3ゲームをダウンさせる可能性があります](https://img-cdn.gateio.im/social/moments-66af34ab04bec21e27be99bbe29c552a)## エクスプロイトの実装### 全体の考え2つの利用方向を考慮する:1. シェルコードを実行する2. 読み書き原語を利用してトークンアドレスを変更する第二の選択肢を選択し、プロセスを二つの問題に分割します:- UAFの脆弱性を悪用してcbwndextra値を制御する方法- 安定した読み書き原子操作を実現するには! [Numen独占:Microsoftの0日の脆弱性は、システム+物理レベルでWeb3カードをノックアウトすることができます](https://img-cdn.gateio.im/social/moments-1cc94ddafacec491507491eef9195858)### 初期データの書き込みWNDClassのウィンドウ名オブジェクトを利用して、解放されたメニューオブジェクトを占有します。xxxRedrawWindow関数内で、データを書き込むタイミングを見つけます。最終的には、フラグAND 2操作を使用してHWNDClassのcb-extraパラメータに書き込みます。! [Numen独占:Microsoft 0-day Vulnerability Can Knock Web3 Cards at the System + Physical Level](https://img-cdn.gateio.im/social/moments-697c5814db02534f63b44c0d1d692f83)### 安定したメモリ配置連続して3つのHWNDオブジェクトを設計し、中間オブジェクトを解放し、HWNDClassオブジェクトで占有します。前後のHWNDオブジェクトはそれぞれ使用されます:- ロゴ検証パラメータを提供- 読み書き原語メディアを提供する漏洩したカーネルハンドルアドレスを通じて、オブジェクトの配置順序を正確に判断します。! [Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3カードをノックすることができます](https://img-cdn.gateio.im/social/moments-b0942592135ac96c6279544a62022329)### 読み取り/書き込みプリミティブの実装- 任意の読み取り:GetMenuBarInfo()- 任意:SetClassLongPtr() TOKENの書き込みを除いて、他の書き込み操作は最初のウィンドウオブジェクトのclassオブジェクトを利用します。## まとめ1. win32kの脆弱性は新しいWindowsバージョンで排除される可能性があります2. 脆弱性の悪用プロセスは比較的簡単で、主にデスクトップスタックハンドルアドレスの漏洩に依存しています。3. 脆弱性の発見は、より完全なコードカバレッジの検出に依存する可能性があります。4. 異常なメモリの読み書きを検出することは、同様の脆弱性を発見するのに役立ちます! [Numen独占:Microsoft 0-day Vulnerability Can Knock Web3 Cards on the System + Physical Level](https://img-cdn.gateio.im/social/moments-b06b098af4f07260fdc03a75da160706)
Windows 0dayの脆弱性分析:メニューUAFからシステム権限昇格まで
マイクロソフトWindowsシステム0day脆弱性の分析と利用
はじめに
先月のMicrosoftのセキュリティパッチには、初期のWindowsシステムにのみ存在するwin32kの特権昇格の脆弱性が含まれていました。本記事では、現在のセキュリティ対策が改善され続ける中で、攻撃者がどのようにしてこの脆弱性を引き続き悪用するかを分析します。分析環境はWindows Server 2016です。
! Numen独占:Microsoft 0-day Vulnerability Can Knock Out Web3 Cards at the System + Physical Level
脆弱性の背景
0dayの脆弱性とは、まだ公開されておらず修正されていない脆弱性であり、悪意のある利用によって大きな損害を引き起こす可能性があります。今回発見されたWindowsシステムの0day脆弱性により、ハッカーがシステムを完全に制御することが可能となり、その結果として考えられるのは以下の通りです。
より広い範囲から見ると、この脆弱性はWeb2インフラストラクチャに基づいて動作する全体のWeb3エコシステムに影響を及ぼす可能性があります。
! Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3ゲームをダウンさせる可能性があります
パッチ分析
パッチは、オブジェクト参照カウントの複数回処理の問題を修正しました。早期のソースコードのコメントを分析すると、元のコードはウィンドウオブジェクトのみをロックし、ウィンドウ内のメニューオブジェクトをロックしていなかったため、メニューオブジェクトが誤って参照される可能性がありました。
! Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3カードをノックアウトすることができます
エクスプロイト分析
分析によると、xxxEnableMenuItem関数内のMenuItemState関数が返すメニューには2つの可能性があります: ウィンドウのメインメニューまたはメニュー内のサブメニュー。
特殊な多層ネストメニュー構造を構築し、特定の属性を設定することで、関数検出を回避できます。xxxRedrawTitle関数がユーザーレイヤーを返すときに、メニュー間の参照関係を削除し、ターゲットメニューオブジェクトを解放します。最終的にxxxEnableMenuItem関数で無効なメニューオブジェクトを参照します。
! Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3ゲームをダウンさせる可能性があります
エクスプロイトの実装
全体の考え
2つの利用方向を考慮する:
第二の選択肢を選択し、プロセスを二つの問題に分割します:
! Numen独占:Microsoftの0日の脆弱性は、システム+物理レベルでWeb3カードをノックアウトすることができます
初期データの書き込み
WNDClassのウィンドウ名オブジェクトを利用して、解放されたメニューオブジェクトを占有します。xxxRedrawWindow関数内で、データを書き込むタイミングを見つけます。
最終的には、フラグAND 2操作を使用してHWNDClassのcb-extraパラメータに書き込みます。
! Numen独占:Microsoft 0-day Vulnerability Can Knock Web3 Cards at the System + Physical Level
安定したメモリ配置
連続して3つのHWNDオブジェクトを設計し、中間オブジェクトを解放し、HWNDClassオブジェクトで占有します。前後のHWNDオブジェクトはそれぞれ使用されます:
漏洩したカーネルハンドルアドレスを通じて、オブジェクトの配置順序を正確に判断します。
! Numen独占:Microsoftの0日間の脆弱性は、システム+物理レベルでWeb3カードをノックすることができます
読み取り/書き込みプリミティブの実装
TOKENの書き込みを除いて、他の書き込み操作は最初のウィンドウオブジェクトのclassオブジェクトを利用します。
まとめ
win32kの脆弱性は新しいWindowsバージョンで排除される可能性があります
脆弱性の悪用プロセスは比較的簡単で、主にデスクトップスタックハンドルアドレスの漏洩に依存しています。
脆弱性の発見は、より完全なコードカバレッジの検出に依存する可能性があります。
異常なメモリの読み書きを検出することは、同様の脆弱性を発見するのに役立ちます
! Numen独占:Microsoft 0-day Vulnerability Can Knock Web3 Cards on the System + Physical Level