クラウドコンピューティングが必要ですか? 今すぐ始める

CVE-2022-30216 - Windows “Server” サービスの認証強制

Akamai Wave Blue

執筆者

Akamai Security Research

August 13, 2022

cve-2022-30216-authentication

By Ben Barnea

エグゼクティブサマリー

  • Akamai のリサーチャーである Ben Barnea が Windows Server サービスの重大な脆弱性を発見しました。この脆弱性は、 CVE-2022-30216 に指定され、ベーススコアは 8.8 です。

  • この脆弱性は、Server サービスに実装されているセキュリティコールバックプロシージャにおける off-by-one エラーの悪用に関するものです。

  • 私たちは、パッチが適用されていない Windows 11 および Windows Server 2022 マシンに脆弱性が存在することを確認しました。

  • 攻撃者がドメインの資格情報を持っている場合、この脆弱性を Active Directory Certificate Services(AD CS)に対する New Technology LAN Manager(NTLM)リレー攻撃と組み合わせることにより、ドメインコントローラーに対するリモートコード実行が可能になります。

  • また、攻撃者は、この手法を使用してサーバーの証明書マッピングを変更することで、サーバースプーフィングも実行できると考えられます。

  • この脆弱性は、Microsoft に確実に開示され、7 月の Patch Tuesday で修正されました。

  • Akamai はこの脆弱性の概念実証を Github リポジトリで公開しています。

概要

この数か月間、私たちのチームは、Microsoft のリモートプロシージャコール(MS-RPC)について、 徹底した調査 を行ってきました。簡単に言えば、RPC はプロセス間通信を効率化するために使用されています。現在 Windows で最も広く使用されているプロトコルの 1 つであり、標準的なクライアントサーバーモデルに依存しています。

MS-RPC 設計には興味深い側面がいくつかあり、セキュリティコールバックもその 1 つです。このコールバックは、RPC サーバーへのアクセスを制限する機能であり、基本的には、望ましくないユーザー(多くの場合リモートユーザー)からのアクセスに対するセキュリティを提供します。多くの RPC サーバーにセキュリティコールバックが実装されていますが、そのロジックや考慮事項はサーバーによって異なります。

Windows サービスは、その機能をクライアントから利用できるようにするために RPC を広範に使用しています。私たちはさまざまなサービスを調査し、セキュリティコールバック実装の基礎となるロジックを調べました。このようなサービスの 1 つとして Server サービスを調査したところ、サーバースプーフィングの実行や被害者に対する認証強制のトリガーを可能にするようなセキュリティ上の欠陥が見つかったのです。

このブログでは、私たちが調査している RPC の側面のうち、新たに発見されたこのバグの要因となっているものについて概説し、バグの概要、悪用方法、緩和方法を明らかにします。 

Windows Server サービスとは

Server サービス(LanmanServer とも呼ばれています)は、SMB 共有の管理を担当する Windows サービスです。共有とは、Common Internet File System サーバーによってネットワーク経由でアクセス可能になるリソース(ファイル、プリンター、ディレクトリツリーなど)です。基本的に、ユーザーはネットワーク共有によって、さまざまな日常タスクにネットワーク上の他のデバイスを使用できるようになります。

Server サービスを使用することで、リモートマシンは名前付きパイプ(\\pipe\srvsvc)を介し、RPC を通じて共有の作成、設定、照会、削除を実行できます。このブログでは、以降、このサービスを「srvsvc」と呼びます。

srvsvc の脆弱性は大きな影響を及ぼします。なぜなら、このサービスはコア機能を提供しているため、すべての Windows マシンでデフォルトで実行されているからです。

SMB over QUIC

Microsoft は、Windows 10 20H2 から、SMB over QUIC という新機能を導入しました。これは、新しいトランスポート層ネットワークプロトコルである QUIC を介して SMB 共有にアクセスできるようにする機能です。QUIC は、レイテンシーやパケット損失など、一般的なインターネットの問題を克服しながら、接続の信頼性とセキュリティを高めることを目的としています。

QUIC ネットワークのインタラクションでは、追加のセキュリティ手段として、クライアントはサーバーから提供された証明書をチェックし、サーバーの ID を確認します。SMB over QUIC の追加によって、Server サービスはこうした証明書を管理する役割を担うことになりました。 

私たちが発見した脆弱性は、この機能に関連しています。この脆弱性を理解するために、まず RPC サーバーによるアクセス制御法の 1 つについて考察します。

セキュリティコールバック

srvsvc をはじめとする多くの Windows サービスは、プロセス間通信を可能にし、サービス機能へのアクセスをさまざまなクライアントに提供するために、RPC サーバーを実装しています。Windows の RPC では、さまざまなセキュリティメカニズムが使用されていますが、ここではセキュリティコールバックと呼ばれるメカニズムに着目します。

セキュリティコールバックの目的は、RPC インターフェースへのアクセスを制限することです。コールバックは RPC サーバーの開発者によって実装されます。各開発者はコールバックを使用することで、特定のユーザーにアクセスを許可したり、特定関数へのアクセスを禁止したりするために独自のロジックを適用できます。RPC では、サーバーによって公開される関数は opnums(操作番号)で表されます。この番号は以下に示す srvsvc のセキュリティコールバックにも出てきます。

画像 1

セキュリティコールバックの記録

このバグを理解するため、まず、SMB over QUIC 機能が追加される前の旧バージョンの srvsvc におけるセキュリティコールバックについて説明します。

srvsvc セキュリティコールバック - Windows 10 19H2 srvsvc security callback — Windows 10 19H2

上図のとおり、srvsvc のセキュリティコールバックには次のロジックが含まれています。

  • リモートクライアントが 64~69 の範囲(両端を含む)の関数にアクセスしようとした場合 - アクセスを拒否
  • クラスタアカウントではないリモートクライアントが 58~63 の範囲(両端を含む)の関数にアクセスしようとした場合 - アクセスを拒否

つまり、リモートクライアントは、インターフェースのこれらの特定関数にアクセスできないようになっているのです。この範囲チェックは、制限された関数が機密であり、これらを呼び出すのは予期された(ローカル)プロセスのみであることを示唆しています。

Windows 10 20H2 では、SMB over QUIC の導入に伴い、新たに次の 4 つの関数が srvsvc サービスに追加されました。

  • LocalrServerCertificateMappingGet
  • LocalrServerCertificateMappingSet
  • LocalrServerCertificateMappingEnum
  • LocalrServerCertificateMappingRemove

これらの関数へのリモートアクセスは望ましくないため、これらは、前述のローカル関数範囲(srvsvc のセキュリティコールバックによってリモートクライアントがアクセスできないローカル関数の範囲)に追加されました。

次の図に示されているとおり、新たに 4 つの関数の opnums を含めるために関数範囲が変更されました。最初のローカル範囲は 64~69 から 64~73 に増え、これらの関数までセキュリティコールバックのアクセス制御が拡張されました。ここまではよかったのですが...。

srvsvc セキュリティコールバック - Windows 10 20H2 srvsvc security callback — Windows 10 20H2

Microsoft は、Windows 11 と Windows Server 2022 に LocalrServerCertificateMappingModify という新しい関数を追加しました。

画像 4

しかし、この新バージョンでは、新たに追加された関数を含めるために制限対象関数の範囲が変更されることはありませんでした。

srvsvc セキュリティコールバック — Windows 11/Server 2022 srvsvc security callback — Windows 11/Server 2022

つまり、この関数は、追加された時点ではセキュリティコールバックの対象にならず、リモート RPC クライアントからアクセスできたのです。

悪用の可能性

この関数を呼び出すことにより、攻撃者はサーバー上の証明書マッピングの設定を変更できます。証明書マッピングは、サーバーの QUIC 証明書と証明書ストア内の証明書との間の「シンボリックリンク」です。この関数を使用すれば、攻撃者は自身の証明書マッピングを追加して、サーバースプーフィングを実行できると考えられます。特に注目すべき点は、この関数が Windows 証明書ストア内の証明書の追加も変更も行わず、QUIC サーバーが使用する証明書と Windows ストア内の証明書のマッピングを変更することです。

この脆弱性の影響を評価しようとしたところ、この関数が受け取る構造体に証明書ストアの場所が含まれていることに気づきました。

画像 6

storeLocation 変数として UNC パスを指定すれば、LocalrServerCertificateMappingModify を使用して、攻撃対象のサーバーから制御下のマシンへの RPC 要求をトリガーできます。この要求を開始する関数フローは次のとおりです。

LocalrServerCertificateMappingModify → SsValidCertandUpdateCertinfo → CertOpenStore → _CertDllOpenSystemStoreProvW → EnumPhysicalStore → FormatSystemRegPath → RegConnectRegistryExW → BaseBindToMachine → Rpc_OpenPredefHandle → NdrClientCall3

サーバーからマシンに RPC 要求が送信される際にサーバーは攻撃者のサーバーに対して認証を実行しますが、攻撃者は被害者の資格情報を利用して NTLM リレー攻撃を実行できます。

私たちは、この脆弱性を悪用して NTLM リレーフローを実行することにより、 AD CS を悪用し 、ドメインコントローラーを乗っ取るという PetitPotam 攻撃シナリオを再現できました。

画像 7

この脆弱性をトリガーするためには、攻撃者がドメイン内のマシンにアクセスできる必要があります。また、NTLM リレーシナリオでは、NTLM リレーにつながりやすいサービス(Certificate Authority Web Enrollment、Certificate Enrollment Web Service)の 1 つとともに AD CS ロールが追加される必要があります。

修正

マイクロソフトは 7 月の Patch Tuesday で、この脆弱性のパッチをリリースしました。この問題の修正方法は以下のとおりです。

  • セキュリティコールバックのローカル関数範囲を修正し、LocalrServerCertificateMappingModify へのリモートアクセスを防止します

  • 新しく追加された各ローカル関数にアクセスチェックを追加します

開示のタイムライン

  • 2022 年 4 月 26 日:レポートを Microsoft に送信

  • 2022 年 4 月 26 日:ステータスが「New」から「Review / Repro」に変更 

  • 2022 年 5 月 9 日:ステータスが「Review / Repro」から「Develop」に変更

  • 2022 年 7 月 12 日:パッチがリリース

緩和と検知

NTLM リレーを緩和するために次の措置を講じることを推奨します。

表 1

多くの場合、AD CS を悪用する NTLM リレー攻撃には、TGT 要求が関与しています。イベントログ(EventID 4768)には、要求元マシンの IP アドレスが含まれます。ドメインコントローラー自体ではないマシンからドメインコントローラーに対する TGT が要求されている場合、悪性の TGT 要求が検知される可能性があります。

Akamai Security Research リポジトリで概念実証をご覧ください。

サマリー

新機能を追加する際には、その機能だけでなく、ユーザーによるアクセスを可能にする方法など、潜在的な影響に注意することが重要です。今回のケースでは、Windows に SMB over QUIC が追加され、Server サービスに新しい関数が導入されました。ただし、SMB over QUIC の実装に脆弱性があったわけではありません。以前からあった関数が該当 RPC インターフェースへのアクセスを制限する方法に脆弱性が生じていたのです。

Akamai Security Research チームは、MS-RPC に関していくつかの調査を実施してきました。手始めとして、 4 月の Patch Tuesdayで公開された RPC ランタイム脆弱性の分析や、5 月に明らかになった 別の CVE の調査も行っています。Ben Barnea と Ophir Harpaz は、ラスベガスで開催された DEF CON 30 で、今回の Server サービス脆弱性に関する調査結果を発表しました。



Akamai Wave Blue

執筆者

Akamai Security Research

August 13, 2022