要約
2022 年 10 月 11 日以降にリリースされた Windows 更新プログラムには、 CVE-2022-38042 によって導入された追加の保護が含まれています。 これらの保護により、次の場合を除き、ドメイン参加操作がターゲット ドメイン内の既存のコンピューター アカウントを意図的に再利用できないようにします。
-
操作を試みるユーザーは、既存のアカウントの作成者です。
または -
コンピューターは、ドメイン管理者のメンバーによって作成されました。
従来の動作
2022 年 10 月 11 日以降の累積的な更新プログラムをインストールする前に、クライアント コンピューターは Active Directory に同じ名前の既存のアカウントを照会します。 このクエリは、ドメイン参加とコンピューター アカウントのプロビジョニング中に発生します。 このようなアカウントが存在する場合、クライアントは自動的に再利用を試みます。
注ドメイン参加操作を試みるユーザーに適切な書き込みアクセス許可がない場合、再利用の試行は失敗します。 ただし、ユーザーに十分なアクセス許可がある場合、ドメイン参加は成功します。
ドメイン参加には、それぞれ既定の動作とフラグを次の 2 つのシナリオがあります。
-
ドメイン参加 (NetJoinDomain)
-
既定値はアカウントの再利用です ( NETSETUP_NO_ACCT_REUSE フラグが指定されていない限り)
-
-
アカウント プロビジョニング (NetProvisionComputerAccountNetCreateProvisioningPackage)。
-
既定値は NO 再利用です ( NETSETUP_PROVISION_REUSE_ACCOUNT が指定されていない限り)。
-
新しい動作
2022 年 10 月 11 日以降の Windows 累積的な更新プログラムをクライアント コンピューターにインストールすると、ドメイン参加中に、クライアントは既存のコンピューター アカウントを再利用する前に追加のセキュリティ チェックを実行します。
アルゴリズム:
-
操作を試みるユーザーが既存のアカウントの作成者である場合、アカウントの再利用試行が許可されます。
-
アカウントがドメイン管理者のメンバーによって作成された場合、アカウントの再利用試行が許可されます。
これらの追加のセキュリティ チェックは、コンピューターへの参加を試みる前に行われます。 チェックが成功した場合、参加操作の残りの部分は、以前と同様に Active Directory のアクセス許可の対象になります。
この変更は、新しいアカウントには影響しません。
注 2022 年 10 月 11 日以降の Windows 累積的な更新プログラムをインストールすると、コンピューター アカウントの再利用によるドメイン参加が意図的に失敗し、次のエラーが発生する可能性があります。
エラー 0xaac (2732): NERR_AccountReuseBlockedByPolicy: "同じ名前のアカウントが Active Directory に存在します。 アカウントを再利用すると、セキュリティ ポリシーによってブロックされました。
その場合、アカウントは意図的に新しい動作によって保護されます。
上記のエラーが発生すると、イベント ID 4101 がトリガーされ、問題は etsetup.log\nc:\windows\debug に記録されます。 次の「アクションの実行」の手順に従って、エラーを理解し、問題を解決してください。
アクションの実行
コンピューター アカウントのプロビジョニング ワークフローを確認し、変更が必要かどうかを理解します。
-
ターゲット ドメインでコンピューター アカウントを作成したのと同じアカウントを使用して、参加操作を実行します。
-
既存のアカウントが古い (未使用) 場合は、ドメインに再度参加する前に削除します。
-
コンピューターの名前を変更し、まだ存在しない別のアカウントを使用して参加します。
-
既存のアカウントが信頼されたセキュリティ プリンシパルによって所有されていて、管理者がアカウントを再利用する場合は、個々のクライアント コンピューター レベルで次のレジストリ キーを一時的に設定することで、そのアカウントを再利用できます。 次に、参加操作が完了したら、すぐにレジストリ設定を削除します。 レジストリ キーの変更を有効にするために再起動は必要ありません。
パス |
HKLM\System\CurrentControlSet\Control\LSA |
種類 |
Reg_dword |
名前 |
NetJoinLegacyAccountReuse |
値 |
1 その他の値は無視されます。 |
オプション 4 を使用するための重要なガイダンス
注意: これらの保護を回避するためにこのキーを設定する場合、シナリオが以下で適切に参照されていない限り、環境は CVE-2022-38042 に対して脆弱なままになります。 既存のコンピューター オブジェクトの Creator/Owner が安全で信頼できるセキュリティ プリンシパルであることを確認せずに、このメソッドを使用しないでください。
次のシナリオでは、ソリューション 4 を使用することが適切 です 。
-
委任されたアクセス許可を持つ IT 管理者は、トラブルシューティングのためにコンピューターをターゲット ドメインに再参加する必要があり、元のアカウント作成者は信頼されたアカウントです。
または -
専用サービス アカウント (SCCM やその他のソフトウェアなど) を使用する前にコンピューター アカウントが作成され、ドメイン参加が委任されたドメイン参加アクセス許可を持つ 2 つ目の専用アカウントによって実行される展開シナリオ (たとえば、"このアカウントはこのコンピューターをドメインに参加させることができます" など)。
Microsoft は、今後の更新プログラムで NetJoinLegacyAccountReuse レジストリ設定のサポートを削除し、別の方法に置き換える場合があります。 この記事は、このような変更が行われた場合に更新されます。
非畳み込み
-
Domain Admins セキュリティ グループにサービス アカウントやプロビジョニング アカウントを追加しないでください。
-
このようなアカウントの所有権を再定義しようとして、コンピューター アカウントのセキュリティ記述子を手動で編集しないでください。 所有者を編集すると、新しいチェックを成功させることができますが、明示的に確認して削除しない限り、コンピューター アカウントは元の所有者に対して同じリスクの高い不要なアクセス許可を保持する可能性があります。
-
NetJoinLegacyAccountReuse レジストリ キーをベース OS イメージに追加しないでください。これは、キーを一時的に追加してから、ドメイン参加が完了した直後に削除する必要があるためです。
新しいイベント ログ
イベント ログ |
システム |
イベント ソース |
Netjoin |
イベント ID |
4100 |
イベントの種類 |
Informational |
イベント テキスト |
"ドメイン参加中に、ドメイン コントローラーから Active Directory 内の既存のコンピューター アカウントが同じ名前で検出されました。%nこのアカウントの再利用が許可されました。 %n%nドメイン コントローラーが検索されました: %1%nExisting コンピューター アカウント DN: %2%n%n 詳細については、https://go.microsoft.com/fwlink/?linkid=2202145 を参照してください。 |
イベント ログ |
システム |
イベント ソース |
Netjoin |
イベント ID |
4101 |
イベントの種類 |
エラー |
イベント テキスト |
"ドメイン参加中に、ドメイン コントローラーから Active Directory 内の既存のコンピューター アカウントが同じ名前で検出されました。%nセキュリティ上の理由から、このアカウントを再利用できませんでした。%n%nDomain コントローラーが検索されました: %1%nExisting computer account DN: %2%n エラー コードは %3.%n%n 詳細については、https://go.microsoft.com/fwlink/?linkid=2202145 を参照してください。 |
デバッグ ログは、すべてのクライアント コンピューターで etsetup.log\nC:\Windows\Debug で既定で使用できます (詳細ログを有効にする必要はありません)。
セキュリティ上の理由から、アカウントの再利用が妨げられたときに生成されるデバッグ ログの例:
NetpGetComputerObjectDn: Crack results: (Account already exists) DN = CN=Computer2,CN=Computers,DC=contoso,DC=com
NetpGetADObjectOwnerAttributes: Looking up attributes for machine account: CN=Computer2,CN=Computers,DC=contoso,DC=com
NetpCheckIfAccountShouldBeReused: Account was created through joinpriv and does not belong to this user. Blocking re-use of account.
NetpCheckIfAccountShouldBeReused:fReuseAllowed: FALSE, NetStatus:0x0
NetpModifyComputerObjectInDs: Account exists and re-use is blocked by policy. Error: 0xaac
NetpProvisionComputerAccount: LDAP creation failed: 0xaac
ldap_unbind status: 0x0
NetpJoinCreatePackagePart: status:0xaac.
NetpJoinDomainOnDs: Function exits with status of: 0xaac
NetpJoinDomainOnDs: status of disconnecting from '\\DC1.contoso.com': 0x0
NetpResetIDNEncoding: DnsDisableIdnEncoding(RESETALL) on 'contoso.com' returned 0x0
NetpJoinDomainOnDs: NetpResetIDNEncoding on 'contoso.com': 0x0
NetpDoDomainJoin: status: 0xaac