Windows RD Gateway の脆弱性 CVE-2025-21297:RCE – PoC エクスプロイトが登場

Race Condition in Windows Remote Desktop Gateway Enables RCE – PoC Demonstrates Exploitability

2025/05/19 SecurityOnline — Microsoft の Remote Desktop Gateway (RD Gateway) で発見された脆弱性により、リモートコード実行 (RCE) につながる可能性のある、きわめて危険な競合状態の存在が明らかになった。この脆弱性 CVE-2025-21297 は、Kunlun Lab の VictorV (Tang Tianwen) が報告したものであり、Microsoft により正式に認知されている。この脆弱性は、サービスの初期化中に発生する、コンカレント・ソケット接続の解放後メモリ使用 (UAF:use-after-free) のバグに起因する。

VictorV の分析によると、この脆弱性は aaedge.dll ライブラリ内の、CTsgMsgServer::GetCTsgMsgServerInstance 関数に存在する。この関数が取り込むグローバル・ポインタ “m_pMsgSvrInstance” は、適切なスレッド同期が行われずに初期化されるという問題がある。したがって、マルチ・スレッド環境では、深刻な悪用の機会が生じる。

RD Gateway RCE CVE-2025-21297

この競合状態により、複数のスレッドが同一のグローバル・ポインタを上書きし、参照カウントを破壊し、最終的にはダングリング・ポインタの逆参照 (典型的な UAF シナリオ) を引き起こす可能性がある。

この脆弱性の悪用の前提として、攻撃者は以下の操作を行う必要がある:

  • RD Gateway への同時接続 (複数のソケット経由)
  • メモリ割り当てとポインタの割り当てが同期しない、タイミング問題の悪用
  • ポインタ参照が完了する前の、別の接続によるポインタの上書き

研究者 VictorV は、スレッド (socket1/socket2/socket3) 間での、ヒープ衝突を伴う9段階のタイムラインを示し、最終的には、解放されたメモリ・ブロックを悪用する流れを説明している。それにより、3番目の接続が、無効化メモリ参照にアクセスし、任意のコード実行が可能になる。

VictorVは、マルチスレッド・ソケット操作を用いて、コア PoC ロジックを共有し、競合状態をシミュレートしている。このエクスプロイトは、スレッドを同期させることで競合に勝利し、標的プロセスをクラッシュさせる可能性を最大化する。

なお、Microsoft は May 2025 Patch Tuesday で、ミューテックス・ベースの同期を導入し、一度に1つのスレッドだけが、グローバル・インスタンスを初期化できるように修正している。それにより、この脆弱性は対処されている。

Microsoft Windows RD Gateway の脆弱性 CVE-2025-21297 (CVSS:8.1) に対する、PoC が公開されました。ご利用のチームは、十分にご注意ください。2025年5月の Patch Tuesday では、同製品の別の脆弱性 CVE-2025-26677/29831 も修正されています。よろしければ、以下の関連記事も、Microsoft で検索と併せて、ご参照ください。

2025/05/14:RDG の脆弱性 CVE-2025-26677/29831
2025/02/28:RDP は諸刃の刃:利便性と安全性