Microsoft Desktop Window Managerの欠陥により権限昇格が可能に

Windows Desktop Window Manager(DWM)に、攻撃者が権限をシステムレベルまで昇格できる可能性のある重大な脆弱性が発見されました。

この欠陥は CVE-2025-55681 として追跡されており、 dwmcore.dll コンポーネントに存在します。TyphoonPWN Windowsセキュリティ競技会で公開され、2位として評価されました。

脆弱性

この脆弱性は、DWMコアライブラリ内の CBrushRenderingGraphBuilder::AddEffectBrush 関数に存在します。

欠陥は、コンポジション効果処理パイプラインにおける不適切なメモリ処理に起因します。

具体的には、攻撃者が共有メモリセクション内のユーザー制御データを操作し、アウト・オブ・バウンズのメモリアクセス状態を作り出すことが可能です。

悪意のある効果記述を作成することで、攻撃者は脆弱なコードに割り当て境界外のメモリを読み取らせ、そのデータを後続の処理に利用できます。

技術的な根本原因は、適切な境界検証を行わずに効果グラフ構造をデシリアライズしている点にあります。

 DeserializeEffectDescription 関数がユーザー提供データを処理する際、配列アクセス操作で使用されるインデックス値の検証に失敗します。

これにより、攻撃者は後にメモリアクセスパターンを決定する重要なインデックスを制御でき、任意のアウト・オブ・バウンズ読み取りにつながります。

SSD Disclosureによると、悪用チェーンは CCompiledEffect オブジェクトの初期化を操作することから始まります。

コンポジションAPIを通じて CEffectBrush オブジェクトに特定の参照プロパティを設定することで、攻撃者は細工された効果記述データを含む悪意のある CompiledEffect を注入できます。

脆弱なコードパスは、 CVisual::ProcessSetWindowBackgroundTreatment、 CWindowBackgroundTreatment::Create、そして最終的にアウト・オブ・バウンズ条件が引き起こされる CBrushRenderingGraphBuilder::AddEffectBrushに至るまで、複数の関数呼び出しを連鎖させます。

悪用の成功は、Windows 11のSegment Heapメモリマネージャを利用します。攻撃者は精密なヒープスプレーにより、制御可能なデータを脆弱な構造体の隣接位置に配置します。

ヒープチャンクを戦略的に解放することで、空きメモリを管理する赤黒木構造を操作し、ポインタリークを可能にします。

これらのポインタにより、細工された仮想メソッドテーブルを介した間接関数呼び出しが可能となり、最終的に任意のコードをメモリに読み込ませます。

攻撃は3段階で進行します。第1段階でアウト・オブ・バウンズ条件をトリガーしてシェルコードを実行し、第2段階で MapViewOfFile をフックして共有メモリを操作し、ユーザーアカウント制御プロセスを通じて権限を昇格させ、最後に昇格したconsent.exeコンテキストで任意のDLLを読み込むことで特権ペイロードを実行します。

Microsoftはこの脆弱性に対処するパッチを公開しました。組織および個人ユーザーは、提供されたベンダーリンク先のMicrosoft Security Response Centerから入手可能なセキュリティ更新プログラムを直ちに適用してください。

このパッチはWindows 11で検証されています。なお、ヒープ管理の実装が異なるため、Windows 10では信頼性が低下します。

翻訳元: https://gbhackers.com/microsoft-desktop-window-manager-flaw/

ソース: gbhackers.com