ActiveDirectoryドメインサービスの特権昇格の脆弱性対応で気を付けること(その2)_強制モードに注意!
Microsoft社にて展開フェーズ、強制フェーズの日付が更新されましたので記事を更新しました。
脆弱性対応
脆弱性対応自体は、2021年11月のWindowsUpdateを適用して、7日間ほどあけてから手動でPacRequestorEnforcementレジストリキーを作成し、レジストリキーの値を(2)の強制モードへ変更すれば対応は完了します。
Microsoft社は手動でレジストリキーを作成しなくてもドメインコントローラーへ段階的(3段階)にWindowsUpdateを適用していれば2022年7月2022年10月に強制モードへ移行するよう計画しています。
以下がその計画の概要です。
CVE-2021-42287 で追加されたイベント メッセージ ID 35 , 37 と脆弱性対応の流れについて
https://jpwinsup.github.io/blog/2021/11/30/ActiveDirectory/Authentication/audit-events-added-in-cve-2021-42287/
CVE-2021-42287 の脆弱性対応では、ドメイン コントローラーがクライアントにKerberos Ticket-Granting Tickets (TGT) を発行する際に TGT の PAC フィールドに “要求元” の情報を追加するようになりました。
その後、クライアントが TGT を使ってドメイン コントローラーへサービス チケットを要求した際、クライアントから受け取った TGT の “要求元” 情報を検証する動作となっております。
イベント メッセージ ID 35, 37 は、この検証を行った際、TGT に “要求元” などの情報が含まれていなかった場合に記録されるものとなります。そのため、すべてのドメイン コントローラーに 2021 年 11月の更新プログラムを適用した後、特に 1 週間ほどは、クライアントに残存している古い TGT の影響で頻繁にイベント メッセージが記録される場合がございますが、これらのイベント メッセージが記録されていたとしても、ドメイン コントローラーが CVE-2021-42287 の “強制モード” に移行しない限り、直ちに問題になることはございません。
ただし、CVE-2021-42287 の対応方針として、2022 年 7 月 12 日2022年10月11日リリース予定の更新プログラムで“強制モード” に移行する予定となります。”強制モード” に移行すると、上記イベント メッセージが記録されている TGT はすべて拒否される動作となり、Kerberos 認証に失敗することが想定されます。
脆弱性対応のWindows更新プログラムのタイミング
■2021年11月10日 : 初期展開フェーズ
・Kerberos チケット保証チケット(TGT) の PAC に「要求元」に関する新しい情報が追加されます
・PacRequestorEnforcementレジストリキーの初期値(1)相当のプログラムが追加されます
※この時PacRequestorEnforcementレジストリキーは作成されません
・PacRequestorEnforcementレジストリキーを手動で作成して機能するようになります
■2022年4月13日 2022年7月12日: 展開フェーズ
・PacRequestorEnforcementキーの値から(0)が削除され、(0)を選択しても(1)を設定した状態と同じになります
■2022年7月13日 2022年10月11日 : 強制フェーズ
・PacRequestorEnforcementキー自体が削除され、強制モード(PacRequestorEnforcementキー[2]と同じ)のプログラムが設定されます
PacRequestorEnforcementレジストリキーの意味
参考までにPacRequestorEnforcementキーの意味について、記載しておきます。
2021年11月10日 : 初期展開フェーズのWindowsUpdateを適用することで機能するようになります。
Registry Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Kdc
Name: PacRequestorEnforcement
Type: REG_DWORD
Data: 0 or 1 or 2
※ OS 再起動は不要
■値(0):
管理者が手動でレジストリキーを作成し、値を(0)にしないかぎり自動でこの設定にはなりません。
脆弱性対策の機能を無効化します。
TGT に対する “要求元” の追加処理はありません。
値(2)の強制モードと互換性がありません。
Microsoft社非推奨。
■値(1):
2021年11月の更新プログラムを適用した直後はPacRequestorEnforcementレジストリキーは存在せず、このモードになります。
クライアントがドメイン コントローラーに TGT を要求した際、ドメイン コントローラーは PACフィールドに “要求元” を追加して TGT を発行します。
クライアントが TGT を使ってドメイン コントローラーへサービス チケットを要求した際、クライントから受け取った TGT の “要求元” を検証しますが検証の結果(成功・失敗)に関わらずサービスチケットは発行します。
認証への影響はありません。
■値(2):
強制モード
クライアントがドメイン コントローラーに TGT を要求した際、ドメイン コントローラーは PACフィールドに “要求元” を追加して TGT を発行します。
クライアントが TGT を使ってドメイン コントローラーへサービス チケットを要求した際、クライントから受け取った TGT の “要求元” を検証し、”要求元”の検証に失敗するとサービス チケットは発行されず、認証に失敗します。
気を付けること(検証前)
結局、何を気を付けなければいけないかと言いますと2021年11月10日の初期展開フェーズ、2022年4月13日2022年7月12日の展開フェーズのWindowsUpdateを適用せずに新しいTGT(PACの要求元情報を持つ)が行きわたらない状態でいきなり2022年7月13日2022年10月11日の強制フェーズのWindowsUpdateだけを適用するとドメインアカウントは古いTGT(PACの要求元情報が存在しない)しか持っていないので強制フェーズのドメインコントローラーは、古いTGTを持つドメインアカウントへのST発行を拒否し、結果として認証が失敗してしまう可能性があるということです。
こうなると古いTGTの有効期限が切れ、新しいTGTの取得を待つか、ドメインコントローラーへ適用された2022年7月13日2022年10月11日のWindowsUpdateをアンインストールする(それで対応可能かは現時点で不明)かをしないとドメインアカウントは再度、認証に成功することができなくなるのではと思われます。
検証
できるだけ実運用に近い形の検証を行いました。
結果から先にお伝えしますと3つのシナリオを実施してみましたが、いずれも認証を拒否されることはありませんでした。
■環境
基盤 : VirtualBox
ドメインコントローラー : Windows Server 2016 評価版
クライアント : Windows 10 評価版(2台)
■シナリオ1:
Windows 10 評価版(2台)は、ドメイン参加、ドメインアカウントで認証済み
Windows 10 評価版(2台)は、起動したまま
ドメインコントローラーへKB500****を適用
PacRequestorEnforcementレジストリキーを作成し、値(2)を設定
Windows 10 評価版(2台)を利用してドメインアカウントで認証
■シナリオ2:
Windows 10 評価版(2台)は、ドメイン参加、ドメインアカウントで認証済み
Windows 10 評価版(2台)は、シャットダウン
ドメインコントローラーへKB500****を適用
PacRequestorEnforcementレジストリキーを作成し、値(2)を設定
ドメインコントローラー再起動(Microsoft社公開情報では再起動は不要)
Windows 10 評価版(2台)を起動してドメインアカウントで認証
■シナリオ3:
Windows 10 評価版(2台)は、ドメイン参加、ドメインアカウントで認証済み
Windows 10 評価版(2台)は、シャットダウン
ドメインコントローラーへ2022年2月分までのWindows Updateを適用
PacRequestorEnforcementレジストリキーを作成し、値(2)を設定
ドメインコントローラー再起動(Microsoft社公開情報では再起動は不要)
Windows 10 評価版(2台)を起動してドメインアカウントで認証
まとめ
検証では、想定していたような拒否されるという結果は得られませんでしたが、実運用では、Microsoft社公開情報に記載されているとおり、2021年11月10日 : 初期展開フェーズのWindowsUpdateを適用して7日以上経過してシステム イベント ログに ID 35、36、37、38 のメッセージ出力がないこととKerberos 認証をするサード パーティ製品が正常に認証できることを確認してから2022年7月13日 2022年10月11日: 強制フェーズのWindowsUpdateを適用しなければいけないのかなと感じました。