日付の変更 |
説明 |
---|---|
9/10/2024 |
[Windows 更新プログラムのタイミング] セクションの [完全適用モード] の説明を、新しい日付を反映するように変更しました。 2025 年 2 月 11 日はデバイスを強制モードに移行しますが、互換性モードに戻すにはサポートを終了します。 完全なレジストリ キーのサポートは、2025 年 9 月 10 日に終了します。 |
7/5/2024 |
[レジストリ キー情報] セクションで、キー配布センター (KDC) レジストリ キーに SID 拡張機能に関する情報を追加しました。 |
2023 年 10 月 10 日 |
「Windows Updatesのタイムライン」に厳密なマッピングの既定の変更に関する情報を追加しました |
6/30/2023 |
完全適用モードの日付を 2023 年 11 月 14 日から 2025 年 2 月 11 日に変更しました (これらの日付は、以前は 2023 年 5 月 19 日から 2023 年 11 月 14 日に記載されていました)。 |
1/26/2023 |
無効モードの削除を 2023 年 2 月 14 日から 2023 年 4 月 11 日に変更しました |
概要
CVE-2022-34691、 CVE-2022-26931 、 および CVE-2022-26923 は、Kerberos Key Distribution Center (KDC) が証明書ベースの認証要求を処理しているときに発生する可能性がある特権の昇格の脆弱性に対処します。 2022 年 5 月 10 日のセキュリティ更新プログラムの前に、証明書ベースの認証では、コンピューター名の末尾にドル記号 ($) が考慮されませんでした。 これにより、関連する証明書をさまざまな方法でエミュレート (なりすまし) することができました。 さらに、ユーザー プリンシパル名 (UPN) と sAMAccountName の間の競合により、このセキュリティ更新プログラムで対処する他のエミュレーション (スプーフィング) の脆弱性も導入されました。
対処方法
環境を保護するには、証明書ベースの認証に関する次の手順を実行します。
-
2022 年 5 月 10 日の更新プログラムで証明書ベースの認証にサービスを提供する Active Directory Certificate Services と Windows ドメイン コントローラーを実行するすべてのサーバーを更新します ( 「互換性モード」を参照)。 2022 年 5 月 10 日の更新プログラムでは、完全適用モードと互換性のない証明書を識別する 監査イベント が提供されます。
-
更新プログラムのインストール後 1 か月間、ドメイン コントローラーに監査イベント ログが作成されない場合は、すべてのドメイン コントローラーで 完全適用モード を有効にしてください。 2025 年 2 月 11 日までに、すべてのデバイスが完全適用モードに更新されます。 このモードでは、証明書が強力な (セキュリティで保護された) マッピング条件に失敗した場合 (「 証明書マッピング」を参照)、認証は拒否されます。 ただし、互換モードに戻すオプションは、2025 年 9 月 10 日まで残ります。
イベントの監査
2022 年 5 月 10 日の Windows 更新プログラムでは、次のイベント ログが追加されます。
強力な証明書マッピングが見つからず、KDC が検証できる新しいセキュリティ識別子 (SID) 拡張機能が証明書にありませんでした。
Event Log |
System |
イベント タイプ |
KDC が互換モードの場合の警告 KDC が強制モードの場合にエラーが発生する |
イベント ソース |
Kdcsvc |
イベント ID |
39 41 (Windows Server 2008 R2 SP1 および Windows Server 2008 SP2 の場合) |
イベント テキスト |
キー配布センター (KDC) で、有効なユーザー証明書が検出されましたが、(明示的なマッピング、キー信頼マッピング、SID など) 強力な方法でユーザーにマップできませんでした。 このような証明書は、明示的なマッピングを使用して、ユーザーに置き換えるか、直接マップする必要があります。 詳細については、「https://go.microsoft.com/fwlink/?linkid=2189925」を参照してください。 ユーザー: プリンシパル名 <> 証明書のサブジェクト: 証明書> でサブジェクト名を <します 証明書発行者: <発行者完全修飾ドメイン名 (FQDN)> 証明書シリアル番号: 証明書のシリアル番号 <> 証明書拇印: 証明書> の拇印の < |
ユーザーが Active Directory に存在する前に証明書がユーザーに発行され、強力なマッピングが見つかりませんでした。 このイベントは、KDC が互換モードの場合にのみログに記録されます。
Event Log |
System |
イベント タイプ |
Error |
イベント ソース |
Kdcsvc |
イベント ID |
40 48 (Windows Server 2008 R2 SP1 および Windows Server 2008 SP2 の場合) |
イベント テキスト |
キー配布センター (KDC) で、有効なユーザー証明書が検出されましたが、(明示的なマッピング、キー信頼マッピング、SID など) 強力な方法でユーザーにマップできませんでした。 証明書は、マップ先のユーザーよりも前に置かれたため、拒否されました。 詳細については、「https://go.microsoft.com/fwlink/?linkid=2189925」を参照してください。 ユーザー: プリンシパル名 <> 証明書のサブジェクト: 証明書> でサブジェクト名を <します 証明書発行者: <発行者 FQDN> 証明書シリアル番号: 証明書のシリアル番号 <> 証明書拇印: 証明書> の拇印の < 証明書の発行時間: 証明書> の FILETIME < アカウント作成時間: AD> のプリンシパル オブジェクトの FILETIME を <します |
ユーザー証明書の新しい拡張機能に含まれる SID がユーザー SID と一致せず、証明書が別のユーザーに発行されたことを意味します。
Event Log |
System |
イベント タイプ |
Error |
イベント ソース |
Kdcsvc |
イベント ID |
41 49 (Windows Server 2008 R2 SP1 および Windows Server 2008 SP2 の場合) |
イベント テキスト |
キー配布センター (KDC) で、有効なユーザー証明書が検出されましたが、マップ先のユーザーとは異なる SID が含まれていました。 その結果、証明書に関連する要求は失敗しました。 詳細については、「https://go.microsoft.cm/fwlink/?linkid=2189925」を参照してください。 ユーザー: プリンシパル名 <> ユーザー SID: 認証プリンシパルの SID を <> 証明書のサブジェクト: 証明書> でサブジェクト名を <します 証明書発行者: <発行者 FQDN> 証明書シリアル番号: 証明書のシリアル番号 <> 証明書拇印: 証明書> の拇印の < 証明書 SID: <SID が新しい証明書拡張機能> で見つかりました |
証明書マッピング
ドメイン管理者は、ユーザー オブジェクトの altSecurityIdentities 属性を使用して、Active Directory のユーザーに証明書を手動でマップできます。 この属性でサポートされる値は 6 つあり、3 つのマッピングは弱い (安全でない) と見なされ、他の 3 つは強力と見なされます。 一般に、マッピング型は、再利用できない識別子に基づいている場合、強力と見なされます。 そのため、ユーザー名と電子メール アドレスに基づくすべてのマッピングの種類は脆弱と見なされます。
のマッピング |
例 |
型 |
注釈 |
X509IssuerSubject |
"X509:<>IssuerName<S>SubjectName" |
弱い |
|
X509SubjectOnly |
"X509:<S>SubjectName" |
弱い |
|
X509RFC822 |
"X509:<RFC822>user@contoso.com" |
弱い |
メール アドレス |
X509IssuerSerialNumber |
"X509:<>IssuerName<SR>1234567890" |
強固 |
推奨 |
X509SKI |
"X509:<SKI>123456789abcdef" |
強固 |
|
X509SHA1PublicKey |
"X509:<SHA1-PUKEY>123456789abcdef" |
強固 |
顧客が新しい SID 拡張機能で証明書を再発行できない場合は、上記のいずれかの強力なマッピングを使用して手動マッピングを作成することをお勧めします。 これを行うには、Active Directory の ユーザー altSecurityIdentities 属性に適切なマッピング文字列を追加します。
注発行者、件名、シリアル番号などの特定のフィールドは、"転送" 形式で報告されます。 altSecurityIdentities 属性にマッピング文字列を追加するときは、この形式を逆にする必要があります。 たとえば、X509IssuerSerialNumber マッピングをユーザーに追加するには、ユーザーにマップする証明書の "Issuer" フィールドと "シリアル番号" フィールドを検索します。 以下の出力例を参照してください。
-
発行者: CN=CONTOSO-DC-CA、DC=contoso、DC=com
-
SerialNumber: 2B00000000011AC00000000012
次に、Active Directory のユーザーの altSecurityIdentities 属性を次の文字列で更新します。
-
"X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>1200000000AC11000000002B"
Powershell を使用してこの属性を更新するには、次のコマンドを使用します。 既定では、ドメイン管理者のみがこの属性を更新するアクセス許可を持つことに注意してください。
-
set-aduser 'DomainUser' -replace @{altSecurityIdentities= "X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>1200000000AC11000000002B"}
SerialNumber を逆にした場合は、バイト順を保持する必要があることに注意してください。 つまり、SerialNumber "A1B2C3" を反転すると、"3C2B1A " ではなく 文字列 "C3B2A1" になります。 詳細については、「 HowTo: altSecurityIdentities 属性で使用できるすべてのメソッドを使用して、ユーザーを証明書にマップする」を参照してください。
Windows 更新プログラムのタイムライン
重要 Enablement フェーズは、Windows 用の 2023 年 4 月 11 日の更新プログラムから始まり、無効モードのレジストリ キー設定は無視されます。
2022 年 5 月 10 日の Windows 更新プログラムをインストールすると、デバイスは互換モードになります。 証明書をユーザーに厳密にマップできる場合、認証は想定どおりに行われます。 証明書をユーザーにのみ弱くマップできる場合、認証は想定どおりに行われます。 ただし、証明書がユーザーより古い場合を除き、警告メッセージがログに記録されます。 証明書がユーザーより古く、証明書のバックデート レジストリ キーが存在しない場合、または範囲がバックデート補正の範囲外である場合、認証は失敗し、エラー メッセージがログに記録されます。 証明書のバックデート レジストリ キーが構成されている場合、日付が元に戻す補正の範囲内にある場合、イベント ログに警告メッセージが記録されます。
2022 年 5 月 10 日の Windows 更新プログラムをインストールした後、1 か月以上経過すると表示される可能性のある警告メッセージをwatchします。 警告メッセージがない場合は、証明書ベースの認証を使用して、すべてのドメイン コントローラーで完全適用モードを有効にすることを強くお勧めします。 KDC レジストリ キーを使用して、完全適用モードを有効にすることができます。
以前にこのモードに更新されない限り、2025 年 2 月 11 日以降にすべてのデバイスを完全適用モードに更新します。 証明書を厳密にマップできない場合、認証は拒否されます。 互換モードに戻すオプションは、2025 年 9 月 10 日まで残ります。 この日付以降、 StrongCertificateBindingEnforcement レジストリ値はサポートされなくなります。
証明書ベースの認証が、環境から移動できない弱いマッピングに依存している場合は、 レジストリ キー設定を使用してドメイン コントローラーを無効モードにすることができます。 Microsoft はこれをお勧めしません 。また、2023 年 4 月 11 日に無効モードを削除します。
2024 年 2 月 13 日以降の Windows 更新プログラムを Server 2019 以降にインストールし、RSAT オプション機能をインストールしてサポートされているクライアントをインストールすると、Active Directory Users & Computers の証明書マッピングは、X509IssuerSubject を使用した脆弱なマッピングではなく、X509IssuerSerialNumber を使用して厳密なマッピングを既定で選択します。 設定は引き続き必要に応じて変更できます。
トラブルシューティング
-
関連するコンピューターの Kerberos 運用ログを使用して、サインインに失敗しているドメイン コントローラーを特定します。 > アプリケーションとサービス ログ\Microsoft \Windows\Security-Kerberos\Operational のイベント ビューアーに移動します。
-
アカウントが認証しようとしているドメイン コントローラーのシステム イベント ログで関連するイベントを探します。
-
証明書がアカウントより古い場合は、証明書を再発行するか、セキュリティで保護された altSecurityIdentities マッピングをアカウントに追加します ( 「証明書のマッピング」を参照してください)。
-
証明書に SID 拡張機能が含まれている場合は、SID がアカウントと一致することを確認します。
-
証明書を使用して複数の異なるアカウントを認証する場合、各アカウントには個別の altSecurityIdentities マッピングが 必要です。
-
証明書にアカウントへのセキュリティで保護されたマッピングがない場合は、アカウントを追加するか、ドメインを追加できるようになるまで互換モードのままにします。
TLS 証明書マッピングの例としては、IIS イントラネット Web アプリケーションの使用があります。
-
CVE-2022-26391 と CVE-2022-26923 の保護をインストールした後、これらのシナリオでは、証明書のマッピングと認証に Kerberos Certificate Service For User (S4U) プロトコルが既定で使用されます。
-
Kerberos Certificate S4U プロトコルでは、認証要求は、クライアントからドメイン コントローラーではなく、アプリケーション サーバーからドメイン コントローラーに送信されます。 そのため、関連するイベントはアプリケーション サーバー上に存在します。
レジストリ キー情報
2022 年 5 月 10 日から 2025 年 9 月 10 日以降にリリースされた Windows 更新プログラムに CVE-2022-26931 と CVE-2022-26923 の保護をインストールした後、次のレジストリ キーを使用できます。
このレジストリ キーは、KDC の強制モードを無効モード、互換モード、または完全適用モードに変更します。
重要
このレジストリ キーの使用は、それを必要とし、注意して実行する必要がある環境の一時的な回避策です。 このレジストリ キーを使用することは、環境に対して次のことを意味します。
-
このレジストリ キーは、2022 年 5 月 10 日にリリースされた更新プログラム以降の互換モードでのみ機能します。
-
このレジストリ キーは、2025 年 9 月 10 日にリリースされた Windows 用の更新プログラムをインストールした後はサポートされません。
-
強力な証明書バインドの適用によって使用される SID 拡張機能の検出と検証には、KDC レジストリ キー UseSubjectAltName 値に依存します。 SID 拡張機能は、レジストリ値が存在しない場合、または値が 0x1 の値に設定されている場合に使用されます。 UseSubjectAltName が存在し、値が 0x0 に設定されている場合、SID 拡張機能は使用されません。
レジストリ サブキー |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc |
値 |
StrongCertificateBindingEnforcement |
データ型 |
REG_DWORD |
データ |
1 – 強力な証明書マッピングがあるかどうかを確認します。 はいの場合、認証が許可されます。 それ以外の場合、証明書に新しい SID 拡張機能がある場合、KDC はチェックし、検証します。 この拡張機能が存在しない場合、ユーザー アカウントが証明書の前に存在する場合、認証が許可されます。 2 – 強力な証明書マッピングがあるかどうかを確認します。 はいの場合、認証が許可されます。 それ以外の場合、証明書に新しい SID 拡張機能がある場合、KDC はチェックし、検証します。 この拡張機能が存在しない場合、認証は拒否されます。 0 – 強力な証明書マッピングチェックを無効にします。 これはすべてのセキュリティ強化を無効にするため、推奨されません。 これを 0 に設定する場合は、コンピューター証明書ベースの認証を成功させるには、以下の「Schannel レジストリ キー」セクションで説明されているように、 CertificateMappingMethods を 0x1F に設定する必要もあります。 |
再起動が必要ですか? |
いいえ |
サーバー アプリケーションでクライアント認証が必要な場合、Schannel は TLS クライアントが提供する証明書をユーザー アカウントに自動的にマップしようとします。 クライアント証明書を使用してサインインするユーザーを認証するには、証明書情報を Windows ユーザー アカウントに関連付けるマッピングを作成します。 証明書マッピングを作成して有効にすると、クライアントがクライアント証明書を提示するたびに、サーバー アプリケーションはそのユーザーを適切な Windows ユーザー アカウントに自動的に関連付けます。
Schannel は、有効にした各証明書マッピング 方法が成功するまでマップしようとします。 Schannel は、最初に Service-For-User-To-Self (S4U2Self) マッピングのマップを試みます。 サブジェクト/発行者、発行者、UPN 証明書のマッピングは脆弱と見なされ、既定で無効になっています。 選択したオプションのビットマスクされた合計によって、使用可能な証明書マッピング メソッドの一覧が決まります。
SChannel レジストリ キーの既定値は0x1Fされ、0x18になりました。 Schannel ベースのサーバー アプリケーションで認証エラーが発生した場合は、テストを実行することをお勧めします。 ドメイン コントローラーで CertificateMappingMethods レジストリ キーの値を追加または変更し、0x1Fに設定し、問題に対処するかどうかを確認します。 詳細については、この記事に記載されているエラーがないか、ドメイン コントローラーのシステム イベント ログを参照してください。 SChannel レジストリ キーの値を以前の既定値 (0x1F) に戻すと、弱い証明書マッピング メソッドを使用してに戻されることに注意してください。
レジストリ サブキー |
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel |
値 |
CertificateMappingMethods |
データ型 |
DWORD |
データ |
0x0001 - サブジェクト/発行者の証明書マッピング (弱 – 既定では無効) 0x0002 - 発行者証明書マッピング (弱 – 既定では無効) 0x0004 - UPN 証明書マッピング (弱 – 既定では無効) 0x0008 - S4U2Self 証明書マッピング (厳密) 0x0010 - S4U2Self 明示的な証明書マッピング (厳密) |
再起動が必要ですか? |
いいえ |
その他のリソースとサポートについては、「その他のリソース」セクションを参照してください。
CVE-2022-26931 と CVE-2022-26923 に対応する更新プログラムをインストールした後、ユーザー証明書がユーザーの作成時間より古い場合に認証が失敗する可能性があります。 このレジストリ キーを使用すると、環境内で脆弱な 証明書マッピング を使用していて、証明書の時刻が設定された範囲内のユーザー作成時刻より前である場合に、認証が成功します。 このレジストリ キーは、証明書の時刻とユーザーの作成時間が厳密な証明書マッピングでチェックされないため、強力な証明書マッピングを持つユーザーまたはマシンには影響しません。 StrongCertificateBindingEnforcement が 2 に設定されている場合、このレジストリ キーは無効です。
このレジストリ キーの使用は、それを必要とし、注意して実行する必要がある環境の一時的な回避策です。 このレジストリ キーを使用することは、環境に対して次のことを意味します。
-
このレジストリ キーは、2022 年 5 月 10 日にリリースされた更新プログラム以降の 互換モード でのみ機能します。 バックデート補正オフセット内では認証が許可されますが、弱いバインドに関するイベント ログの警告がログに記録されます。
-
このレジストリ キーを有効にすると、弱いマッピングとして設定された範囲内のユーザーの作成時間より前に証明書の時刻が設定されている場合に、ユーザーの認証が可能になります。 2025 年 9 月 10 日にリリースされた Windows 用の更新プログラムをインストールした後、脆弱なマッピングはサポートされません。
レジストリ サブキー |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc |
値 |
CertificateBackdatingCompensation |
データ型 |
REG_DWORD |
データ |
おおよその年の回避策の値:
注 環境内の証明書の有効期間がわかっている場合は、このレジストリ キーを証明書の有効期間よりもわずかに長く設定します。 環境の証明書の有効期間がわからない場合は、このレジストリ キーを 50 年に設定します。 このキーが存在しない場合、Active Directory Certificate Services (ADCS) と一致する既定値は 10 分です。 最大値は 50 年 (0x5E0C89C0) です。 このキーは、認証証明書の発行時間とユーザー/マシン アカウントのアカウント作成時間の間にキー配布センター (KDC) が無視する時間差を秒単位で設定します。 重要 環境で必要な場合にのみ、このレジストリ キーを設定します。 このレジストリ キーを使用すると、セキュリティ チェックが無効になります。 |
再起動が必要ですか? |
いいえ |
エンタープライズ証明機関
エンタープライズ証明機関 (CA) は、2022 年 5 月 10 日の Windows 更新プログラムをインストールした後、オンライン テンプレートに対して発行されたすべての証明書に、既定でオブジェクト識別子 (OID) (1.3.6.1.4.1.311.25.2) を含む新しい重要でない拡張機能の追加を開始します。 この拡張機能の追加を停止するには、対応するテンプレートの msPKI-Enrollment-Flag 値に0x00080000 ビットを設定します。
次の certutil コマンドを実行して、 ユーザー テンプレートの証明書を新しい拡張機能の取得から除外します。
-
エンタープライズ管理者または同等の資格情報を使用して、証明機関サーバーまたはドメインに参加しているWindows 10 クライアントにサインインします。
-
コマンド プロンプトを開き、[ 管理者として実行] を選択します。
-
certutil -dstemplate user msPKI-Enrollment-Flag +0x00080000 を実行します。
この拡張機能の追加を無効にすると、新しい拡張機能によって提供される保護が削除されます。 これを行うのは、次のいずれかの後でのみ行うことを検討してください。
-
KDC での Kerberos プロトコル認証で、対応する証明書が初期認証 (PKINIT) の公開キー暗号化に対して受け入れられないことを確認します
-
対応する証明書には、他の強力な証明書マッピングが構成されています
Microsoft CA 以外の展開がある環境は、2022 年 5 月 10 日の Windows 更新プログラムをインストールした後、新しい SID 拡張機能を使用して保護されません。 影響を受けるお客様は、対応する CA ベンダーと協力してこれに対処するか、上記の他の強力な証明書マッピングの利用を検討する必要があります。
その他のリソースとサポートについては、「その他のリソース」セクションを参照してください。
よく寄せられる質問
いいえ、更新は必要ありません。 CA は互換モードで出荷されます。 ObjectSID 拡張機能を使用して強力なマッピングを行う場合は、新しい証明書が必要です。
2025 年 2 月 11 日の Windows 更新プログラムでは、まだ適用されていないデバイス (StrongCertificateBindingEnforcement レジストリ値が 2 に設定されています) が適用に移動されます。 認証が拒否された場合は、イベント ID 39 (または Windows Server 2008 R2 SP1 および Windows Server 2008 SP2 の場合はイベント ID 41) が表示されます。 この段階では、レジストリ キーの値を 1 (互換モード) に戻すオプションがあります。
2025 年 9 月 10 日の Windows 更新プログラムでは、 StrongCertificateBindingEnforcement レジストリ値はサポートされなくなりました。
補足資料
TLS クライアント証明書マッピングの詳細については、次の記事を参照してください。