Windows 0dayの脆弱性分析:メニューUAFからシステム権限昇格まで

robot
概要作成中

マイクロソフト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つの利用方向を考慮する:

  1. シェルコードを実行する
  2. 読み書き原語を利用してトークンアドレスを変更する

第二の選択肢を選択し、プロセスを二つの問題に分割します:

  • UAFの脆弱性を悪用してcbwndextra値を制御する方法
  • 安定した読み書き原子操作を実現するには

! 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カードをノックすることができます

読み取り/書き込みプリミティブの実装

  • 任意の読み取り:GetMenuBarInfo()
  • 任意:SetClassLongPtr()

TOKENの書き込みを除いて、他の書き込み操作は最初のウィンドウオブジェクトのclassオブジェクトを利用します。

まとめ

  1. win32kの脆弱性は新しいWindowsバージョンで排除される可能性があります

  2. 脆弱性の悪用プロセスは比較的簡単で、主にデスクトップスタックハンドルアドレスの漏洩に依存しています。

  3. 脆弱性の発見は、より完全なコードカバレッジの検出に依存する可能性があります。

  4. 異常なメモリの読み書きを検出することは、同様の脆弱性を発見するのに役立ちます

! Numen独占:Microsoft 0-day Vulnerability Can Knock Web3 Cards on the System + Physical Level

TOKEN2.69%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 3
  • リポスト
  • 共有
コメント
0/400
MidnightTradervip
· 21時間前
また大きな穴が開いてしまった。Windowsは本当にダメだね。
原文表示返信0
TokenDustCollectorvip
· 21時間前
マイクロソフトのこの脆弱性はちょっと厄介だな、秘密鍵まで盗まれるなんて。
原文表示返信0
HalfIsEmptyvip
· 21時間前
ああ、またやらかした〜
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)