Resumo
O CVE-2021-42278 resolve uma vulnerabilidade de bypass de segurança que permite que invasores potenciais se façam passar por um controlador de domínio usando a falsificação de conta de computador sAMAccountName .
Este artigo fornece detalhes adicionais e uma seção de perguntas frequentes para as alterações de proteção do SAM (Gerenciador de Contas de Segurança) do Active Directory feitas pelas atualizações do Windows lançadas em 9 de novembro de 2021 e posteriores, conforme documentado em CVE-2021-42278.
Verificações de validação do Active Directory
Depois de instalar o CVE-2021-42278, o Active Directory executará as inspeções de validação listadas abaixo nos atributos sAMAccountName e UserAccountControl de contas de computador criadas ou modificadas por usuários que não têm direitos de administrador para contas de computador.
Validação sAMAccountType para contas de usuário e computador
- ObjectClass=Contas de computador (ou subclasse de computador) devem ter sinalizadores UserAccountControl de UF_WORKSTATION_TRUST_ACCOUNT ou UF_SERVER_TRUST_ACCOUNT
- ObjectClass=User must have UAC flags of UF_NORMAL_ACCOUNT ou UF_INTERDOMAIN_TRUST_ACCOUNT
Validação de sAMAccountName para contas de computador
O sAMAccountName de uma conta de computador cujo atributo UserAccountControl contém o sinalizador UF_WORKSTATION_TRUST_ACCOUNT deve terminar com um único cifrão ($). Quando essas condições não são atendidas, o Active Directory retorna o código de falha 0x523 ERROR_INVALID_ACCOUNTNAME. As validações com falha são registradas no Directory-Services-SAM event ID 16991 no log de eventos do sistema.
Quando essas condições não são atendidas, o Active Directory retorna um código de falha de ACCESS_DENIED. As validações com falha são registradas no Directory-Services-SAM event ID 16990 no log de eventos do sistema.
Eventos de auditoria
Falha na validação da classe de objeto e UserAccountControl
Quando a validação da classe Object e UserAccountControl falhar, o seguinte evento será registrado no log do sistema:
| Log de Eventos | Sistema |
|---|---|
| Tipo de Evento | Erro |
| Origem do evento | Directory-Services-SAM |
| ID de Evento | 16990 |
| Texto do Evento | O gerenciador de conta de segurança impediu que um não administrador criasse uma conta do Active Directory neste domínio com sinalizadores de tipo de conta objectClass e userAccountControl incompatíveis. Detalhes: Nome da conta: %1%n Account objectClass: %2%n userAccountControl: %3%n Endereço do chamador: %4%n SID do chamador: %5%n%n |
Falha na validação do Nome da Conta SAM
Quando a validação do Nome da Conta SAM falhar, o seguinte evento será registrado no log do sistema:
| Log de Eventos | Sistema |
|---|---|
| Tipo de Evento | Erro |
| Origem do evento | Directory-Services-SAM |
| ID de Evento | 16991 |
| Texto do Evento | O gerenciador de conta de segurança impediu que um não administrador criasse ou renomeasse uma conta de computador usando um sAMAccountName inválido. sAMAccountName em contas de computador deve terminar com um único sinal $ à direita. Tentativa de sAMAccountName: %1 sAMAccountName recomendado: %1$ |
Eventos de auditoria de criação de conta de computador bem-sucedidos
Os seguintes eventos de auditoria existentes estão disponíveis para a criação bem-sucedida da conta de computador:
- 4741(S): Uma conta de computador foi criada
- 4742(S): Uma conta de computador foi alterada
- 4743(S): Uma conta de computador foi excluída
Para obter mais informações, consulte Auditoria de Gerenciamento de Conta de Computador.
Perguntas frequentes
P1. Como essa atualização afeta os objetos existentes no Active Directory?
R1. Para objetos existentes, a validação ocorre quando usuários que não têm direitos de administrador modificam os atributos sAMAccountName ou UserAccountControl .
P2. O que é um sAMAccountName?
R2. sAMAccountName é um atributo exclusivo em todas as entidades de segurança no Active Directory e inclui usuários, grupos e computadores. As restrições de nome para sAMAccountName estão documentadas em 3.1.1.6 Restrições de atributo para originar atualizações.
P3. O que é um sAMAccountType?
R3. Para obter mais informações, leia os seguintes documentos:
Há três valores possíveis de sAMAccountType que correspondem a quatro possíveis sinalizadores UserAccountcontrol, da seguinte maneira:
| 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 |
P4. Quais são os valores possíveis para UserAccountControl?
R4. Para obter mais informações, leia os seguintes documentos:
- Usar os sinalizadores UserAccountControl para manipular as propriedades da conta de usuário
- 2.2.16 Bits userAccountControl
- Win32_UserAccount classe
- ADS_USER_FLAG_ENUM enumeração (IADS.H)
Pergunta 5. Como encontrar objetos não compatíveis que já existem em meu ambiente?
R5, R5. Os administradores podem pesquisar seu diretório em busca de contas existentes que não estejam em conformidade usando um script do PowerShell, como os exemplos abaixo.
Para localizar contas de computador que tenham um sAMAccountName não compatível:
Get-ADComputer -LDAPFilter "(samAccountName=*)" \|? SamAccountName -NotLike "*$" \| select DNSHostName, Name, SamAccountName |
|---|
Para localizar contas de computador que tenham um userAccountControl sAMAccountType não compatível:
Get-ADComputer -LDAPFilter "UserAccountControl:1.2.840.113556.1.4.803:=512” |
|---|