Windows Telephony の権限昇格の脆弱性 CVE-2024-26230:PoC が提供される

PoC Exploit Releases for Windows Elevation of Privilege Vulnerability CVE-2024-26230

2024/09/08 SecurityOnline — Windows Telephony サービスに存在する、パッチ適用済みの権限昇格の脆弱性 CVE-2024-26230 (CVSS:7.8) に対する、技術的な詳細と概念実証 PoC エクスプロイトを、セキュリティ研究者が公開した。この Telephony サービスの、use-after-free の脆弱性の悪用に成功した攻撃者は、影響を受けるシステム上で SYSTEM 権限を取得できるようになる。


Windows Telephony は RPC ベースのサービスであり、デフォルトでは無効化されているが、標準ユーザー権限で StartServiceW API を呼び出せばアクティブ化できる。この脆弱性は、Telephony の Global Handle Table 内で使用される、一意の識別子 GOLD というマジック値を持つオブジェクトを、処理する方法に起因している。

void __fastcall GetUIDllName(__int64 a1, int *a2, unsigned int a3, __int64 a4, _DWORD *a5)
{
[...]
if ( object )
      {
        *object = 0x474F4C44; // =====> [a]
        v38 = *(_QWORD *)(contexthandle + 184);
        *((_QWORD *)object + 10) = v38;
        if ( v38 )
          *(_QWORD *)(v38 + 72) = object;
        *(_QWORD *)(contexthandle + 184) = object; // =======> [b]
        a2[8] = object[22];
      }
[...]
}

このサービスのインターフェースは、3つの主要な関数で構成されている:

  1. ClientAttach:コンテキスト・ハンドルを作成する。
  2. ClientRequest:コンテキスト・ハンドルでリクエストを処理する。
  3. ClientDetach:コンテキスト・ハンドルを解放する。

この脆弱性は、上記の ClientRequest メソッドに起因している。このメソッドでは、”gaFuncs”というグローバル変数が、特定のディスパッチ関数へとリクエストをルーティングする。これらの関数は、NewObject 関数により作成され、Global Handle Table に挿入される各種のオブジェクトを処理する。

ただし、マジック値 “GOLD” を持つオブジェクトを処理する場合において、重大な見落としが発生する。Telephony サービスは、コンテキスト・ハンドルを解放する前に、そのハンドルが “GOLD” を所有されているかどうかを確認できない。この欠陥が悪用されると、2つのコンテキスト・ハンドルが作成される可能性が生じる。

1つは “GOLD” オブジェクトを保持するためのものであり、もう1つは “GOLD” オブジェクトを解放するために、FreeDiagInstance ディスパッチ関数を呼び出すためのものである。その結果として、元のコンテキスト・ハンドルは解放されたオブジェクトへのダングリング・ポインターを保持するため、後にサービスにより、それが参照されると、use-after-free の脆弱性へとつながっていく。


この脆弱性のエクスプロイトは、Cyber​​ Kunlun の k0shl により開発された。k0shl が採用したのは、このような攻撃を防ぐように設計されたセキュリティ機能である、Windows 11 の eXtended Flow Guard (XFG) 緩和策を回避するための新しい手法である。

k0shl の詳細な分析に続いて、別の研究者である Wa1nut4 が、脆弱性 CVE-2024-26230 の PoC エクスプロイト・コードを GitHub で公開した。それにより、この脆弱性は、攻撃者により広くアクセスできるようになっている。

このエクスプロイトは、攻撃者により完全に制御することが可能な、RPC クライアントの入力バッファー操作で機能するものだ。この制御により、最終的に、ダングリング・ポインターを介して仮想関数を参照するときに、Telephony はクラッシュする。

この脆弱性の悪用に成功した攻撃者は、侵害したシステムの完全な制御が可能になるため、深刻な結果が引き起こされる。SYSTEM 権限を手にした攻撃者は、任意のコード実行/マルウェアのインストール/機密データの窃取などに加えて、永続的なバックドアの確立も可能にする。

すでに Microsoft は、2024年4月のセキュリティ更新プログラムで、この脆弱性に対処している。システム管理者とユーザーに対して強く推奨されるのは、更新プログラムを直ちに適用して、システムを保護することである。