概要
CVE-2021-42278 は、潜在的な攻撃者がコンピューター アカウント sAMAccountName スプーフィングを使用してドメイン コントローラーを偽装できるようにするセキュリティ バイパスの脆弱性に対処します。
この記事では、 CVE-2021-42278 に記載されているように、2021 年 11 月 9 日以降にリリースされた Windows 更新プログラムによって行われた Active Directory セキュリティ アカウント マネージャー (SAM) の変更に関する詳細とよく寄せられる質問のセクションについて説明します。
Active Directory 検証チェック
CVE-2021-42278 をインストールした後、Active Directory は、コンピューター アカウントの管理者権限を持たないユーザーによって作成または変更されたコンピューター アカウントの sAMAccountName 属性と UserAccountControl 属性に関する以下の検証検査を実行します。
ユーザー アカウントとコンピューター アカウントの sAMAccountType 検証
- ObjectClass=Computer (またはコンピューターのサブクラス) アカウントには、UF_WORKSTATION_TRUST_ACCOUNT または UF_SERVER_TRUST_ACCOUNT の UserAccountControl フラグが必要です
- ObjectClass=User には、UF_NORMAL_ACCOUNT または UF_INTERDOMAIN_TRUST_ACCOUNT の UAC フラグが必要です
コンピューター アカウントの 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$ |
成功したコンピューター アカウントの作成監査イベント
コンピューター アカウントの正常な作成には、次の既存の監査イベントを使用できます。
詳細については、「 コンピューター アカウント管理の監査」を参照してください。
よく寄せられる質問
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: 詳細については、次のドキュメントを参照してください。
- UserAccountControl フラグを使用してユーザー アカウントのプロパティを操作する
- 2.2.16 userAccountControl Bits
- Win32_UserAccount クラス
- ADS_USER_FLAG_ENUM列挙 (iads.h)
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” |
|---|