CVE-2022-37966 への対応とその影響について

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。

こんにちは。Windows Commercial Support Directory Services チームです。

2022 年 11 月にリリースされた更新プログラムでは、Active Direcotry 環境への脆弱性対応として以下 3 点の対処が含まれています。

  • CVE-2022-37967 (Kerberos プロトコルの変更/完全な PAC 署名の追加
  • CVE-2022-38023 (Netlogon プロトコルの変更/RPC シールの強制、及び RC4 暗号化タイプへの対処)
  • CVE-2022-37966 (Kerberos プロトコルの変更/セッションキーの既定の暗号化タイプの変更)

本記事では、CVE-2022-37966 (Kerberos プロトコルの変更/セッションキーの既定の暗号化タイプの変更) に関してご案内させていただきます。

// 本脆弱性に関する参考情報

KB5021131: CVE-2022-37966 に関連する Kerberos プロトコルの変更を管理する方法


CVE-2022-37966 への対応について


本脆弱性対応につきましては、基本的に 2022 年 11 月の更新プログラムをドメイン コントローラーにインストールするのみで対処が完了します。

※ 11 月の更新プログラムには、本脆弱性への対応に伴って潜在的な不具合が見つかり、後述いたしますような既知の問題が存在しております。本脆弱性への対応にあたっては 2023 年 1 月の更新プログラムをインストールすることをご検討ください。

具体的には、 2022 年 11 月の更新プログラムをドメイン コントローラーにインストールすると、ドメイン コントローラー上のユーザー アカウントでデフォルトの暗号化タイプ ( msDS-SupportedEncryptionTypes 属性 ) が、設定されていない、もしくは 0 であるアカウントの Kerberos 認証のセッション キーのデフォルトの暗号化タイプが RC4 から AES に変更されます。

11 月更新プログラムに含まれる他 2 点の脆弱性対応 ( CVE-2022-38023、CVE-2022-37967 ) のように段階的に脆弱性対応を行うものではございません。

2022 年 11 月の更新プログラムを適用すると、レジストリ:DefaultDomainSupportedEncTypes が利用可能となります。
本レジストリの設定は Kerberos 認証におけるセッションキーとチケット暗号化の両方の既定値を設定することができ、今回の脆弱性対応により、既定値に Kerberos 認証のセッション キーのデフォルトの暗号化タイプが AES となる設定が含まれております。

Registry Key: HKEY_LOCAL_MACHINE\System\currentcontrolset\services\kdc
Name : DefaultDomainSupportedEncTypes
Type: REG_DWORD
Data: 0x27(既定値 ※レジストリが存在しない場合には、この値となります。)

※補足:既定の値 0x27 について
0x27 については、11 月の更新プログラムを適用することで追加される 0x20 ( AES256_CTS_HMAC_SHA1_96_SK ) に以前の OS の既定値である 0x7 ( DES_CBC_CRC, DES_CBC_MD5, RC4 ) を追加したものとなります。0x20 ( AES256_CTS_HMAC_SHA1_96_SK ) が、セッションキーにだけ影響する新しいフラグとなります。

2.2.7 Supported Encryption Types Bit Flags

更新プログラム適用後も CVE-2022-37966 に対して脆弱なアカウントについて

アカウントにて、msDS-supportedEncryptionTypes 属性に RC4 が明示的に定義されているアカウントの場合は、更新プログラム適用後も脆弱性の対象となります。
KB5021131: CVE-2022-37966 に関連する Kerberos プロトコルの変更を管理する方法 にも記載の以下のコマンドは、そうした更新プログラム適用後も CVE-2022-37966 に対して脆弱なアカウントを探すものとなります。
具体的には DES/RC4 が明示的に有効になっており、かつ AES が無効なアカウントを探し出すコマンドとなります。

Get-ADObject -Filter "msDS-supportedEncryptionTypes -bor 0x7 -and -not msDS-supportedEncryptionTypes -bor 0x18"

このようなアカウントがある場合、まずは対象アカウントを利用する端末やサービスが AES に対応しているのかどうかをご確認ください。もし AES に対応済みであればこのアカウントの msDS-supportedEncryptionTypes 属性に対して明示的に AES のみ ( 0x18 ) を設定いただき、脆弱性へ対処いただくことをご検討ください。

イベント メッセージ ID 42 について

このイベント メッセージは、 2022 年 11 月にリリースされたセキュリティ更新プログラムに含まれる “CVE-2022-37966” の脆弱性対応で追加されたものとなります。

■ Microsoft-Windows-Kerberos-Key-Distribution-Center ID 42

// 日本語の場合

ログの名前:         System
ソース:           Microsoft-Windows-Kerberos-Key-Distribution-Center
イベント ID:       42
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       <ドメイン コントローラー>
説明:
Kerberos キー配布センターには、アカウント krbtgt.

セキュリティで保護されていない暗号化の使用を防ぐために、このアカウントのパスワードを更新する必要があります。 

詳細については、https://go.microsoft.com/fwlink/?linkid=2215265 を参照してください。

// 英語の場合
  ※適用した更新プログラムが 2022 年 11 月 にリリースされた更新プログラムの場合、日本語 OS でも英語でメッセージが出力される場合がございます。

ログの名前:         System
ソース:          Microsoft-Windows-Kerberos-Key-Distribution-Center
イベント ID:       42
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       <ドメイン コントローラー>
説明:
The Kerberos Key Distribution Center lacks strong keys for account krbtgt.
You must update the password of this account to prevent use of insecure cryptography. 
See https://go.microsoft.com/fwlink/?linkid=2210019 to learn more.

本イベントは、krbtgt アカウントにて AES のキーが存在しない場合に Kerberos チケットを発行する際に出力されるイベントとなります。

なお、本イベントが発生している場合でも、Active Directory のシステムへの動作上の影響は無く、AES のキーが存在しないことで、認証を拒否する等の動作は特にございません。
ただし、脆弱性対応の観点で、本イベントログへ対処いただくことをおすすめいたします。

通常 krbtgt アカウントに AES のキーが存在しないケースとしてはドメイン機能レベル 2003 以前より運用されてきた環境である可能性がございます。

イベント メッセージ ID 42 への対処方法について

対処策につきましては、既にドメイン機能レベルとして 2008 以降であれば、以下の krbtgt アカウントのパスワード リセットにて対処いただくことが可能です。
もしドメイン機能レベル 2008 未満の場合には、機能レベルの昇格を実施後に、対処を実施ください。

  1. “Active Directory ユーザーとコンピューター” から、[Users] コンテナ配下に存在する “krbtgt” アカウントを右クリックし、[パスワードのリセット] を選択します。

  2. [ユーザーは次回ログオン時にパスワード変更が必要] のチェックを外し、パスワード欄は空のまま [OK] をクリックします。

  3. “krbtgt のパスワードは変更されました” というメッセージが表示されますので、[OK] をクリックします。
    ※ krbtgt のパスワードには、非常に長いランダムな文字列が自動的に設定されますので、空のままで問題ありません。

  4. パスワードの変更が完了しましたら、コマンド プロンプトを管理者権限で起動し、以下のコマンドを実行します。本コマンドを実行することでパスワード変更の情報をサイト内外のドメイン コントローラーに複製します

    repadmin /syncall /APe


CVE-2022-37966 対応による影響について


脆弱性対応による影響についてご案内いたします。
既に弊社事例上、CVE-2022-37966 の変更により、Windows OS 以外のサードパーティー製品で影響が生じる事例が確認されております。また、11月 8 日に公開された更新プログラムには CVE-2022-37966 への対応に関連した既知の問題が存在いたしますので、以下におまとめしております。

CVE-2022-37966 への対応によって影響が生じるケースについて

本セキュリティ強化により、以下の 3 つの条件をすべて満たすリソース サーバーが存在する場合に、影響を受ける場合がございます。

  • Windows OS 以外のサードパーティー製品である
  • kerberos 認証の暗号化方式として AES に対応していない製品である
  • 対象製品に紐づくコンピューターオブジェクトまたはサービスアカウントの msDS-SupportedEncryptionTypes 属性が未設定もしくは、0 である

上記ケースの場合、CVE-2022-37966 の対処により、先ず Kerberos 認証のセッション キーのデフォルトの暗号化タイプが RC4 から AES に変更されるために、対象のリソースサーバーへアクセスするための Kerberos チケットに含まれるセッションキーは、AES となります。

この Kerberos チケットを、クライアントから、リソースサーバーに提示し Kerberos 認証を行う際に、リソースサーバー側が AES に対応していない場合には、Kerberos 認証が失敗いたします。

※ 現行サポートしている Windows OS の場合には、ドメイン参加時に必ず、コンピューターオブジェクトの msDS-SupportedEncryptionTypes 属性に利用可能な Kerberos 暗号タイプの値が追加される動作となっており、かつ OS として AES をサポートしているため、Windows OS のみの環境においては、CVE-2022-37966 による影響は基本的に想定されません。ただし、Windows OS 上でサードパーティの製品を動作させており、対象製品に紐づくサービスアカウントがある場合は、後述のステップで影響をご確認ください。

リソースサーバーである Windows OS 以外のサードパーティー製品が AES に対応していれば影響はございません。
そのため、事前に本影響の有無について確認する場合には、以下のようなステップで確認を行います。

  1. ドメイン環境に、Windows OS 以外のサードパーティー製品のコンピューターオブジェクトやサービスアカウントが無いか確認を行います。
  2. もし存在する場合には、対象オブジェクトの msDS-SupportedEncryptionTypes 属性を確認し、0 または未設定 ( null ) であるか確認します。
  3. もし 0 または null であった場合は、対象のオブジェクトに紐づく、サードパーティー製品の開発元に対処方法をご確認ください。

11月 8 日に公開された更新プログラムにおける既知の問題について

リリースされた更新プログラムの修正のうち、CVE-2022-37966 の修正に伴って潜在的な不具合が見つかっており、それぞれ修正更新プログラムがリリースされております。それぞれの場合について、以下にご案内いたします。

イベント メッセージ ID 14 が記録され、認証が失敗する


以下の両方を満たす場合、イベント メッセージ ID 14 が記録され、Kerberos 認証が失敗する事象が確認されております。

  • ユーザー、コンピューター、または gMSA といったサービスアカウントの msDS-supportedEncryptionTypes 属性値を明示的に設定しており、かつ明示的に RC4-HMAC (0x4) が 含まれない 値を設定されている
  • 対象のアカウントに対して認証を実施するドメイン コントローラーに 2022 年 11 月 8 日にリリースされた更新プログラムが適用されている

本不具合の影響を受け、Kerberos 認証が失敗した場合にはドメイン コントローラー側に以下のイベントログが記録されます。

//イベント ログ サンプル
※イベント ID : 14 である点と、説明内の “ ( そのキーには 1 の ID があります ) “ がキーワードとなります。

ログの名前:         System
ソース:           Microsoft-Windows-Kerberos-Key-Distribution-Center
日付:            2022/11/13 16:01:59
イベント ID:       14
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       <ドメイン コントローラー>
説明:
対象のサーバー krbtgt に対する AS 要求を処理するときに、アカウント testuser には Kerberos チケットを生成するための
適切なキーがありませんでした (そのキーには 1 の ID があります)。要求された ETYPE は 18  17  3 でした。
アカウントで利用できる ETYPE は 23  18  17 でした。
Testuser のパスワードを変更または再び設定すると正しいキーが生成されます。

この既知の問題を修正した更新プログラムが 2022 年 11 月 17 日にリリースされておりますので、こちらの適用をご検討ください。参考までに、各 OS に対する修正更新プログラムをご案内いたします。

Windows Server 2022 (KB5021656)

Windows Server 2019 (KB5021655)

Windows Server 2016 (KB5021654)

Windows Server 2012 R2 (KB5021653)

Windows Server 2012 (KB5021652)

msds-SupportedEncryptionTypes 属性において、暗号化の種類(最下位 5 ビット)に設定を行わず、かつ0以外の値を設定しているアカウントに対する認証が失敗する


以下の両方を満たす場合、Kerberos 認証が失敗する事象が確認されております。

  • アカウントの msds-SupportedEncryptionTypes 属性に対し、暗号化の種類のビット (最下位 5 ビット) 設定を行っておらず、かつ 0 以外の値を構成している
  • 対象のアカウントに対して認証を実施するドメイン コントローラーに 2022 年 11 月 8 日、または 2022 年 12 月 13 日にリリースされた更新プログラムが適用されている

例えば、msDS-SupportedEncryptionTypes が 131072 ( 16 進数で 0x20000 )の場合、最下位 5 ビットは 0 となっているため暗号化の種類に設定がなく、かつ msDS-SupportedEncryptionTypes としては 0 以外の値が設定されていることとなります。このようなアカウントに対する認証が対象となります。

// 暗号化の種類のビットについてのご参考
2.2.7 Supported Encryption Types Bit Flags

この既知の問題は、2023 年 1 月 10 日にリリースされた更新プログラムにて修正されております。参考までに、各 OS に対する修正更新プログラムをご案内いたします。

Windows Server 2022 ( KB5022291 )

Windows Server 2019 ( KB5022286 )

Windows Server 2016 ( KB5022289 )

Windows Server 2012 R2 マンスリー ロールアップ ( KB5022352 )

Windows Server 2012 R2 セキュリティのみ ( KB5022346 )

Windows Server 2012 マンスリー ロールアップ ( KB5022348 )

Windows Server 2012 セキュリティのみ ( KB5022343 )

参考情報

更新履歴

2023/01/20 : 本ブログの公開

2023/03/06 : DefaultDomainSupportedEncTypes の説明について修正。イベント メッセージ ID 42 について、日本語のイベントログを追加。CVE-2022-37966 対応による影響について、Windows OS 上でサードパーティ製品を利用している場合について追記。