概要
WindowsのDesktop Window Manager (DWM)に、攻撃者がシステムレベルの特権に昇格できる重大な脆弱性が発見されました。この脆弱性はCVE-2025-55681として追跡されており、dwmcore.dllコンポーネントに存在します。TyphoonPWN Windowsセキュリティコンペティションで2位に認定され、その深刻さが浮き彫りになりました。
脆弱性の詳細
この脆弱性は、DWMコアライブラリ内のCBrushRenderingGraphBuilder::AddEffectBrush関数内に存在します。コンポジション効果処理パイプラインにおける不適切なメモリ処理に起因するものです。具体的には、攻撃者は共有メモリセクションのユーザー制御データを操作して、領域外メモリへのアクセス(out-of-bounds memory access)を引き起こすことができます。これにより、細工された効果記述を作成することで、脆弱なコードが割り当てられた境界外のメモリを読み取り、そのデータをその後の操作に使用させることが可能になります。
技術的な根本原因は、効果グラフ構造のデシリアライズ時に、配列アクセスで使用されるインデックス値の境界検証が適切に行われないことにあります。DeserializeEffectDescription関数がユーザー提供データを処理する際、インデックス値の検証に失敗するため、攻撃者は重要なインデックスを制御し、それが最終的にメモリアクセスパターンを決定し、任意の領域外読み取りにつながります。
悪用手法
SSD Disclosureによると、悪用チェーンはCCompiledEffectオブジェクトの初期化を操作することから始まります。コンポジションAPIを通じてCEffectBrushオブジェクトに特定の参照プロパティを設定することで、攻撃者は細工された効果記述データを含む悪意あるCompiledEffectを注入できます。脆弱なコードパスは、CVisual::ProcessSetWindowBackgroundTreatment、CWindowBackgroundTreatment::Create、そして最終的に領域外条件がトリガーされるCBrushRenderingGraphBuilder::AddEffectBrushを含む複数の関数呼び出しを連鎖させます。
この攻撃は、Windows 11のセグメントヒープメモリマネージャーを悪用します。攻撃者は精密なヒープスプレーを使用して、制御可能なデータを脆弱な構造の隣に配置します。戦略的にヒープチャンクを解放することで、空きメモリを管理するレッドブラックツリー構造を操作し、ポインタリークを可能にします。これらのポインタは、細工された仮想メソッドテーブルを介した間接的な関数呼び出しを促進し、最終的に任意のコードをメモリにロードします。
攻撃の段階
- 第1段階:領域外条件をトリガーし、シェルコードを実行します。
- 第2段階:
MapViewOfFileをフックして共有メモリを操作し、ユーザーアカウント制御(UAC)プロセスを通じて特権を昇格させます。 - 第3段階:昇格された
consent.exeコンテキストで任意のDLLをロードすることにより、特権付きペイロードを実行します。
対策
Microsoftはこの脆弱性に対処するパッチをリリース済みです。組織および個人ユーザーは、提供されているMicrosoft Security Response Centerからのセキュリティ更新プログラムを直ちに適用してください。このパッチはWindows 11で検証済みです。なお、Windows 10ではヒープ管理の実装が異なるため、信頼性は低下することに注意が必要です。
元記事: https://gbhackers.com/microsoft-desktop-window-manager-flaw/
