KB5008102 - Active Directory セキュリティ アカウント マネージャーの変更の強化 (CVE-2021-42278)

適用先
Windows Server 2022 Windows Server 2019 Windows Server 2016, all editions Windows Server 2012 R2 Windows Server 2012 Windows Server 2008 R2 Windows Server 2008 Service Pack 2

概要

CVE-2021-42278 は、潜在的な攻撃者がコンピューター アカウント sAMAccountName スプーフィングを使用してドメイン コントローラーを偽装できるようにするセキュリティ バイパスの脆弱性に対処します。

この記事では、 CVE-2021-42278 に記載されているように、2021 年 11 月 9 日以降にリリースされた Windows 更新プログラムによって行われた Active Directory セキュリティ アカウント マネージャー (SAM) の変更に関する詳細とよく寄せられる質問のセクションについて説明します。

Active Directory 検証チェック

CVE-2021-42278 をインストールした後、Active Directory は、コンピューター アカウントの管理者権限を持たないユーザーによって作成または変更されたコンピューター アカウントの sAMAccountName 属性と UserAccountControl 属性に関する以下の検証検査を実行します。

  1. ユーザー アカウントとコンピューター アカウントの sAMAccountType 検証

    • ObjectClass=Computer (またはコンピューターのサブクラス) アカウントには、UF_WORKSTATION_TRUST_ACCOUNT または UF_SERVER_TRUST_ACCOUNT の UserAccountControl フラグが必要です
    • ObjectClass=User には、UF_NORMAL_ACCOUNT または UF_INTERDOMAIN_TRUST_ACCOUNT の UAC フラグが必要です
  2. コンピューター アカウントの sAMAccountName 検証
    UserAccountControl 属性に UF_WORKSTATION_TRUST_ACCOUNT フラグが含まれているコンピューター アカウントの sAMAccountName は、1 ドル記号 ($) で終わる必要があります。 これらの条件が満たされない場合、Active Directory はエラー コード 0x523 ERROR_INVALID_ACCOUNTNAMEを返します。 失敗した検証は、システム イベント ログの Directory-Services-SAM イベント ID 16991 に記録されます。

これらの条件が満たされない場合、Active Directory は ACCESS_DENIED のエラー コードを返します。 失敗した検証は、システム イベント ログの Directory-Services-SAM イベント ID 16990 に記録されます。

イベントの監査

オブジェクト クラスと UserAccountControl 検証エラー

Object クラスと UserAccountControl 検証が失敗すると、次のイベントがシステム ログに記録されます。

Event Log System
イベント タイプ Error
イベント ソース Directory-Services-SAM
イベント ID 16990
イベント テキスト セキュリティ アカウント マネージャーは、非管理者が objectClass と userAccountControl アカウントの種類フラグが一致しない Active Directory アカウントをこのドメインに作成することをブロックしました。
詳細 :
アカウント名: %1%n
Account objectClass: %2%n
userAccountControl: %3%n
発信者アドレス: %4%n
呼び出し元 SID: %5%n%n

SAM アカウント名の検証エラー

SAM アカウント名の検証が失敗すると、次のイベントがシステム ログに記録されます。

Event Log System
イベント タイプ Error
イベント ソース Directory-Services-SAM
イベント ID 16991
イベント テキスト セキュリティ アカウント マネージャーは、管理者以外が無効な sAMAccountName を使用してコンピューター アカウントを作成または名前変更することをブロックしました。 コンピューター アカウントの sAMAccountName は、末尾に 1 つの $ 記号で終わる必要があります。
sAMAccountName の試行: %1
推奨される sAMAccountName: %1$

成功したコンピューター アカウントの作成監査イベント

コンピューター アカウントの正常な作成には、次の既存の監査イベントを使用できます。

  • 4741(S): コンピューター アカウントが作成されました
  • 4742(S): コンピューター アカウントが変更されました
  • 4743(S): コンピューター アカウントが削除されました

詳細については、「 コンピューター アカウント管理の監査」を参照してください。

よく寄せられる質問

Q1: この更新プログラムは Active Directory の既存のオブジェクトにどのような影響を与えますか?

A1. 既存のオブジェクトの場合、管理者権限を持たないユーザーが sAMAccountName 属性または UserAccountControl 属性を変更すると、検証が行われます。

Q2. sAMAccountName とは

A2. sAMAccountName は Active Directory のすべてのセキュリティ プリンシパルの一意の属性であり、ユーザー、グループ、コンピューターが含まれます。 sAMAccountName の名前制約については、「3.1.1.6 発信元Updatesの属性制約」を参照してください。

Q3 : sAMAccountType とは

A3: 詳細については、次のドキュメントを参照してください。

次のように、4 つの UserAccountcontrol フラグに対応する 3 つの sAMAccountType 値が考えられます。

userAccountControl sAMAccountType
UF_NORMAL_ACCOUNT SAM_USER_OBJECT
UF_INTERDOMAIN_TRUST_ACCOUNT SAM_TRUST_ACCOUNT
UF_WORKSTATION_TRUST_ACCOUNT SAM_MACHINE_ACCOUNT
UF_SERVER_TRUST_ACCOUNT SAM_MACHINE_ACCOUNT

Q4 : UserAccountControl の使用可能な値は何ですか?

A4: 詳細については、次のドキュメントを参照してください。

Q5: 環境に既に存在する非準拠オブジェクトを見つけるにはどうすればよいですか?

A5: 管理者は、次の例のような PowerShell スクリプトを使用して、ディレクトリで既存の非準拠アカウントを検索できます。

準拠していない sAMAccountName を持つコンピューター アカウントを検索するには:

Get-ADComputer -LDAPFilter "(samAccountName=*)" \|? SamAccountName -NotLike "*$" \| select DNSHostName, Name, SamAccountName

準拠していない UserAccountControl sAMAccountType を持つコンピューター アカウントを検索するには:

Get-ADComputer -LDAPFilter "UserAccountControl:1.2.840.113556.1.4.803:=512”

リソース