2022年5月のWindows UpdateではActive Directory環境のドメインコントローラの更新で注意が必要になることがあります。
あまり大きく取り上げられていないので自分用にメモ。
内容
今月(2022年5月)のWindows Updateのセキュリティ更新に含まれるCVE-2022-26931とCVE-2022-26923には下記の脆弱性の対処が含まれています。
Kerberos配布センター(KDC)で証明書ベースの認証を処理する環境で発生する特権の昇格(の脆弱性)に対処
■CVE-2022-26931:Windows Kerberos の特権の昇格の脆弱性
https://msrc.microsoft.com/update-guide/ja-JP/vulnerability/CVE-2022-26931
■CVE-2022-26923:Active Directory Domain Services Elevation of Privilege Vulnerability
https://msrc.microsoft.com/update-guide/ja-JP/vulnerability/CVE-2022-26923
これらは、Active DirectoryでないWindows環境やドメインコントローラでないWindows Serverには関係しないようです。
MS公式の情報
この情報(本記事)は、下記を元に記載しています。
KB5014754—Certificate-based authentication changes on Windows domain controllers
(Windowsドメインコントローラでの証明書ベースの認証の変更)
現状(2022年5月13日現在)英語のみの情報となっているようです。
2022年5月更新から、中長期的に更新
今月(2022年5月)の月例更新に含まれるセキュリティ更新で、Active Directory証明書サービスを実行するサーバと、証明書ベースで認証しているドメインコントローラを更新し、互換モード(Compatibility Mode、新・旧の動作互換)で動作するよう更新されるようです。
互換モードは証明書ベースの認証を使用した場合、脆弱性が含まれる認証に対して以下のいずれかの動作を実行するようになるようです。
- 証明書の認証動作に対して警告ログの記録
- 認証が失敗し、エラーがログに記録
どちらになるかは証明書のマッピングによって決まるようです。文中にあるcertificate(証明書)がweakly mappedの場合が警告ログの記録(認証は実行される)になり、certificate(証明書)がolder than the userの場合には認証は失敗しエラーが記録される、という具合。
最終的に、完全施行モード(Full Enforcement Mode)に移行され、証明書が厳密にマッピングできない環境では認証が拒否されるようになる、とのことです。完全施行モードは2023年5月9日までに更新されるようです。
厳密なマッピングとか弱いマッピングというのは、前述URLの文書内にある、「Certificate mappings」の箇所に解説があります。
監視したいイベントログ
監視しておきたいイベントログのざっくり概要です。
原文はKB5014754(英文)です。イベントは「システム」イベントで、イベントソースは「Kdcsvc」が対象です。イベントIDやWindows 2012以降のイベントビューア環境での表示。
--------------------------------------------------------------
イベントID:39
Key Distribution Center(KDC)は、有効であるが強力な方法(明示的なマッピング、キー信頼マッピング、またはSIDなど)でユーザーにマップできないユーザー証明書を検出しました。このような証明書は、置換するか、明示的なマッピングを介してユーザーに直接マッピングする必要があります。詳細については、https://go.microsoft.com/fwlink/?linkid=2189925を参照してください。
ユーザー:<本名>
証明書の件名:<証明書の件名>
証明書発行者:<発行者の完全修飾ドメイン名(FQDN)>
証明書のシリアル番号:<証明書のシリアル番号>
証明書の拇印:<証明書の拇印>
--------------------------------------------------------------
イベントID:40
Key Distribution Center(KDC)は、有効であるが強力な方法(明示的なマッピング、キー信頼マッピング、またはSIDなど)でユーザーにマップできないユーザー証明書を検出しました。証明書は、マップしたユーザーよりも前のものであったため、拒否されました。詳細については、https://go.microsoft.com/fwlink/?linkid=2189925を参照してください。
ユーザー:<本名>
証明書の件名:<証明書の件名>
証明書発行者:<発行者FQDN>
証明書のシリアル番号:<証明書のシリアル番号>
証明書の拇印:<証明書の拇印>
証明書発行時間:<証明書のFILETIME>
アカウント作成時間:<ADのプリンシパルオブジェクトのFILETIME>
--------------------------------------------------------------
イベントID:41
Key Distribution Center(KDC)は、有効であるが、マップしたユーザーとは異なるSIDを含むユーザー証明書を検出しました。その結果、証明書を含む要求は失敗しました。詳細については、https://go.microsoft.cm/fwlink/?linkid=2189925を参照してください。
ユーザー:<本名>
ユーザーSID:<認証プリンシパルのSID>
証明書の件名:<証明書の件名>
証明書発行者:<発行者FQDN>
証明書のシリアル番号:<証明書のシリアル番号>
証明書の拇印:<証明書の拇印>
証明書SID:<新しい証明書拡張機能で見つかったSID>
--------------------------------------------------------------
これらのイベントが記録された場合には、2022年5月のWindows Updateによる仕様変更の影響を受けているActive Directory環境だといえます。(対策が必要)
レジストリキーを調べてみる
実際にレジストリキーを調べてみました。
まずは、キー配布センターのレジストリキーで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
証明書サービスがホストされていないので、対象となる「StrongCertificateBindingEnforcement」とその値は存在していませんが、この箇所の「StrongCertificateBindingEnforcement」によって、証明書マッピングに対する動作を制御するようです。
もう一つが、SChannelレジストリキーで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
対象の環境であれば、ここに存在する「CertificateMappingMethods」によって動作が制御されるようです。
たとえば、従来からの弱い証明書マッピングに戻す場合、「StrongCertificateBindingEnforcement=0」と「CertificateMappingMethods=0x0001(0x1F)」にすることになりますが、デフォルト無効で今後推奨されないことになっています。更新プログラムによって対処された脆弱性を手動で有効化しているような感じです。
証明書を使っているActive Directory環境では悩ましいですね。(どうやって検証して適用まで漕ぎ着けるかを考えるのが大変、という意味で)