Résumé
CVE-2021-42278 corrige une vulnérabilité de contournement de sécurité qui permet aux attaquants potentiels d’emprunter l’identité d’un contrôleur de domaine à l’aide de l’usurpation de compte d’ordinateur sAMAccountName .
Cet article fournit des détails supplémentaires et une section de questions fréquemment posées pour les modifications de renforcement d’Active Directory Security Accounts Manager (SAM) apportées par les mises à jour Windows publiées le 9 novembre 2021 et ultérieures, comme indiqué dans CVE-2021-42278.
Vérifications de validation Active Directory
Après l’installation de CVE-2021-42278, Active Directory effectue les inspections de validation répertoriées ci-dessous sur les attributs sAMAccountName et UserAccountControl des comptes d’ordinateurs créés ou modifiés par des utilisateurs qui ne disposent pas des droits d’administrateur pour les comptes d’ordinateur.
Validation sAMAccountType pour les comptes d’utilisateurs et d’ordinateurs
- Les comptes ObjectClass=Computer (ou sous-classe d’ordinateur) doivent avoir les indicateurs UserAccountControl de UF_WORKSTATION_TRUST_ACCOUNT ou UF_SERVER_TRUST_ACCOUNT
- ObjectClass=User doit avoir les indicateurs UAC de UF_NORMAL_ACCOUNT ou UF_INTERDOMAIN_TRUST_ACCOUNT
Validation de sAMAccountName pour les comptes d’ordinateur
L’argument sAMAccountName d’un compte d’ordinateur dont l’attribut UserAccountControl contient l’indicateur UF_WORKSTATION_TRUST_ACCOUNT doit se terminer par un seul symbole dollar ($). Lorsque ces conditions ne sont pas remplies, Active Directory renvoie le code d’erreur 0x523 ERROR_INVALID_ACCOUNTNAME. Les validations ayant échoué sont enregistrées dans l’ID d’événement Directory-Services-SAM 16991 dans le journal des événements système.
Lorsque ces conditions ne sont pas remplies, Active Directory renvoie le code d’erreur ACCESS_DENIED. Les validations ayant échoué sont enregistrées dans l’ID d’événement Directory-Services-SAM 16990 dans le journal des événements système.
Audit des événements
Échec de la validation de la classe d’objet et de UserAccountControl
En cas d’échec de la validation de la classe d’objet et de UserAccountControl, l’événement suivant est consigné dans le journal système :
| Journal des événements | Système |
|---|---|
| Type d’événement | Error |
| Source de l’événement | Directory-Services-SAM |
| ID d’événement | 16990 |
| Texte de l’événement | Le Gestionnaire de comptes de sécurité a empêché un non-administrateur de créer un compte Active Directory dans ce domaine avec des indicateurs de type de compte objectClass et userAccountControl différents. Détails : Nom du compte : %1 %n Compte objectClass : %2 %n userAccountControl : %3 %n Adresse de l’appelant : %4 %n SID de l’appelant : %5 %n %n |
Échec de la validation du nom du compte SAM
En cas d’échec de la validation du nom de compte SAM, l’événement suivant est consigné dans le journal système :
| Journal des événements | Système |
|---|---|
| Type d’événement | Error |
| Source de l’événement | Directory-Services-SAM |
| ID d’événement | 16991 |
| Texte de l’événement | Le gestionnaire de compte de sécurité a empêché un non-administrateur de créer ou de renommer un compte d’ordinateur à l’aide d’un nom sAMAccountName non valide. sAMAccountName sur les comptes d’ordinateur doivent se terminer par un seul signe $ à droite. Tentatives de sAMAccountName : %1 Recommended sAMAccountName : %1$ |
Événements d’audit de création de compte d’ordinateur réussis
Les événements d’audit existants suivants sont disponibles pour la création réussie d’un compte d’ordinateur :
- 4741(S) : Un compte d’ordinateur a été créé
- 4742(S) : Un compte d’ordinateur a été modifié
- 4743(S) : Un compte d’ordinateur a été supprimé
Pour plus d’informations, voir Auditer la gestion des comptes d’ordinateur.
Forum aux questions
Q1 : Comment cette mise à jour affecte-t-elle les objets existants dans Active Directory ?
R1 : Pour les objets existants, la validation se produit quand les utilisateurs ne disposant pas des droits d’administrateur modifient les attributs sAMAccountName ou UserAccountControl .
Q2 : Qu’est-ce qu’un sAMAccountName ?
R2 : sAMAccountName est un attribut unique sur toutes les entités de sécurité d’Active Directory et inclut les utilisateurs, les groupes et les ordinateurs. Les contraintes de nom pour sAMAccountName sont documentées dans 3.1.1.6 Contraintes d’attribut pour les mises à jour d’origine.
Q3 : Qu’est-ce qu’un sAMAccountType ?
R3 : Pour plus d’informations, veuillez lire les documents suivants :
Il existe trois valeurs sAMAccountType possibles qui correspondent à quatre indicateurs UserAccountcontrol possibles comme suit :
| 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 : Quelles sont les valeurs possibles pour UserAccountControl ?
R4 : Pour plus d’informations, veuillez lire les documents suivants :
- Utiliser les indicateurs UserAccountControl pour manipuler les propriétés d’un compte d’utilisateur
- 2.2.16 Bits UserAccountControl
- Win32_UserAccount classe
- ADS_USER_FLAG_ENUM énumération (iads.h)
Question n° 5. Comment puis-je trouver les objets non conformes qui existent déjà dans mon environnement ?
A5. Les administrateurs peuvent rechercher dans leur répertoire les comptes existants non conformes à l’aide d’un script PowerShell, comme dans les exemples ci-dessous.
Pour rechercher des comptes d’ordinateur dont le nom sAMAccountName n’est pas conforme :
Get-ADComputer -LDAPFilter "(samAccountName=*)" \|? SamAccountName -NotLike "*$" \| select DNSHostName, Name, SamAccountName |
|---|
Pour rechercher des comptes d’ordinateur dont le UserAccountControl n’est pas conforme sAMAccountType :
Get-ADComputer -LDAPFilter "UserAccountControl:1.2.840.113556.1.4.803:=512” |
|---|