Como funciona o Controle de Conta de Usuário

O UAC (Controle de Conta de Usuário) é uma parte fundamental da segurança do Windows. O UAC reduz o risco de malware limitando a capacidade do código mal-intencionado de executar com privilégios de administrador. Este artigo descreve como o UAC funciona e como ele interage com os usuários finais.

Processo e interações UAC

Com o UAC, cada aplicativo que requer o token de acesso do administrador deve solicitar consentimento ao usuário final. A única exceção é a relação que existe entre processos pai e filho. Os processos filho herdam o token de acesso do usuário do processo pai. No entanto, os processos pai e filho devem ter o mesmo nível de integridade.

O Windows protege os processos marcando seus níveis de integridade. Os níveis de integridade são medidas de confiança:

  • Um aplicativo de alta integridade é aquele que executa tarefas que modificam dados do sistema, como um aplicativo de partição de disco
  • Um aplicativo de baixa integridade é aquele que executa tarefas que podem potencialmente comprometer o sistema operacional, como um navegador da Web

Aplicativos com níveis de integridade mais baixos não podem modificar dados em aplicativos com níveis de integridade mais altos. Quando um usuário padrão tenta executar um aplicativo que requer um token de acesso de administrador, o UAC exige que o usuário forneça credenciais de administrador válidas.

Para entender melhor como esse processo funciona, vamos dar uma olhada mais de perto no processo de entrada do Windows.

Processo de entrada

O diagrama a seguir mostra como o processo de entrada de um administrador difere do processo de entrada de um usuário padrão.

Diagrama que descreve o processo de entrada do Windows UAC.

Por padrão, usuários padrão e administrador acessam recursos e executam aplicativos no contexto de segurança de um usuário padrão.
Quando um usuário entra, o sistema cria um token de acesso para esse usuário. O token de acesso contém informações sobre o nível de acesso concedido pelo usuário, incluindo SIDs (identificadores de segurança) específicos e privilégios do Windows.

Quando um administrador faz logon, dois tokens de acesso separados são criados para o usuário: um token de acesso de usuário padrão e um token de acesso do administrador. O token de acesso ao usuário padrão:

  • Contém as mesmas informações específicas do usuário que o token de acesso do administrador, mas os PRIVILÉGIOS e SIDs administrativos do Windows são removidos
  • Ele é usado para iniciar aplicativos que não executam tarefas administrativas (aplicativos de usuário padrão)
  • Ele é usado para exibir a área de trabalho executando o processo explorer.exe. Explorer.exe é o processo pai do qual todos os outros processos iniciados pelo usuário herdam seu token de acesso. Como resultado, todos os aplicativos são executados como um usuário padrão, a menos que um usuário forneça consentimento ou credenciais para aprovar um aplicativo para usar um token de acesso administrativo completo

Um usuário que é membro do grupo Administradores pode entrar, navegar na Web e ler email usando um token de acesso de usuário padrão. Quando o administrador precisa executar uma tarefa que exige o token de acesso do administrador, o Windows solicita automaticamente a aprovação do usuário. Esse prompt é chamado de prompt de elevação e seu comportamento pode ser configurado por meio de política ou registro.

A experiência do usuário UAC

Quando o UAC está habilitado, a experiência do usuário para usuários padrão é diferente dos usuários administradores. O método recomendado e mais seguro de executar o Windows é garantir que sua conta de usuário principal seja um usuário padrão. Executar como um usuário padrão ajuda a maximizar a segurança de um ambiente gerenciado. Com o componente de elevação do UAC interno, os usuários padrão podem executar facilmente uma tarefa administrativa inserindo credenciais válidas para uma conta de administrador local.

O componente padrão de elevação de UAC interno para usuários padrão é o prompt de credencial.

A alternativa para executar como um usuário padrão é executar como administrador no Modo de Aprovação Administração. Com o componente de elevação do UAC interno, os membros do grupo de administradores locais podem executar facilmente uma tarefa administrativa fornecendo aprovação.

O componente de elevação UAC interno padrão para uma conta de administrador no modo de aprovação Administração é chamado de prompt de consentimento.

O prompt de credencial

O prompt de credencial é apresentado quando um usuário padrão tenta executar uma tarefa que requer o token de acesso administrativo de um usuário. Os administradores também podem ser obrigados a fornecer suas credenciais definindo o Controle da Conta de Usuário: Comportamento do prompt de elevação para administradores em Administração valor de configuração de política do Modo de Aprovaçãopara Solicitar credenciais.

Captura de tela mostrando o prompt de credencial UAC.

O prompt de consentimento é apresentado quando um usuário tenta executar uma tarefa que requer o token de acesso administrativo de um usuário.

Captura de tela mostrando o prompt de consentimento do UAC.

Prompts de elevação do UAC

Os prompts de elevação do UAC são codificados por cores para serem específicos do aplicativo, permitindo a identificação mais fácil do potencial risco de segurança de um aplicativo. Quando um aplicativo tenta executar com o token de acesso completo de um administrador, o Windows primeiro analisa o arquivo executável para determinar seu editor. Os aplicativos são separados pela primeira vez em três categorias com base no editor do arquivo:

  • Windows
  • Publicador verificado (assinado)
  • Publicador não verificado (sem sinal)

A codificação de cores do prompt de elevação é a seguinte:

  • Plano de fundo cinza: o aplicativo é um aplicativo administrativo do Windows, como um item Painel de Controle ou um aplicativo assinado por um editor verificado Captura de tela mostrando o prompt de credencial UAC com um executável assinado.
  • Plano de fundo amarelo: o aplicativo não está assinado ou assinado, mas não é confiável Captura de tela mostrando o prompt de consentimento do UAC com um executável não assinado.

Ícone de proteção

Alguns Painel de Controle itens, como Data e Hora, contêm uma combinação de operações de administrador e usuário padrão. Os usuários padrão podem exibir o relógio e alterar o fuso horário, mas um token de acesso de administrador completo é necessário para alterar a hora do sistema local. Veja a seguir uma captura de tela do item Data e Hora Painel de Controle.

Captura de tela mostrando o Ícone do Escudo do UAC em Propriedades de Data e Hora.

O ícone de escudo no botão Alterar data e hora... indica que o processo requer um token de acesso completo do administrador.

Protegendo o prompt de elevação

O processo de elevação é ainda mais protegido direcionando o prompt para a área de trabalho segura. Os prompts de consentimento e credencial são exibidos na área de trabalho segura por padrão. Somente processos do Windows podem acessar a área de trabalho segura. Para níveis mais altos de segurança, recomendamos manter o Controle da Conta de Usuário: Alternar para a área de trabalho segura ao solicitar a configuração da política de elevação habilitada.

Quando um arquivo executável solicita elevação, a área de trabalho interativa, também chamada de área de trabalho do usuário, é alternada para a área de trabalho segura. A área de trabalho segura diminui a área de trabalho do usuário e exibe um prompt de elevação que deve ser respondido antes de continuar. Quando o usuário seleciona Sim ou Não, a área de trabalho volta para a área de trabalho do usuário.

Observação

A partir do Windows Server 2019, não é possível colar o conteúdo da área de transferência na área de trabalho segura. Esse é o mesmo comportamento das versões do sistema operacional cliente Windows com suporte no momento.

O malware pode apresentar uma imitação da área de trabalho segura, mas quando o Controle da Conta de Usuário: Comportamento do prompt de elevação para administradores em Administração configuração de política do Modo de Aprovação é definido como Solicitar consentimento, o malware não ganha elevação se o usuário selecionar Sim na imitação. Se a configuração da política estiver definida como Prompt para credenciais, o malware que imita o prompt de credencial poderá reunir as credenciais do usuário. No entanto, o malware não ganha privilégios elevados e o sistema tem outras proteções que mitigam o malware de assumir o controle da interface do usuário mesmo com uma senha colhida.

Embora o malware possa apresentar uma imitação da área de trabalho segura, esse problema não pode ocorrer a menos que um usuário tenha instalado o malware anteriormente no computador. Como os processos que exigem um token de acesso de administrador não podem ser instalados silenciosamente quando o UAC está habilitado, o usuário deve fornecer explicitamente o consentimento selecionando Sim ou fornecendo credenciais de administrador. O comportamento específico do prompt de elevação do UAC depende das políticas de segurança.

Arquitetura UAC

O diagrama a seguir detalha a arquitetura UAC.

Diagrama que descreve a arquitetura UAC.

Para entender melhor cada componente, examine as seguintes tabelas:

Usuário

Componente Descrição
Usuário executa operação que exige privilégio Se a operação alterar o sistema de arquivos ou o registro, a Virtualização será chamada. Todas as outras operações chamam ShellExecute.
Shellexecute ShellExecute chama CreateProcess. O ShellExecute procura o erro ERROR_ELEVATION_REQUIRED do CreateProcess. Se ele receber o erro, o ShellExecute chamará o serviço de Informações de Aplicativo para tentar executar a tarefa solicitada com o prompt elevado.
Createprocess Se o aplicativo exigir elevação, CreateProcess rejeitará a chamada com ERROR_ELEVATION_REQUIRED.

System

Componente Descrição
Serviço de Informações de Aplicativo Um serviço de sistema que ajuda a iniciar aplicativos que exigem um ou mais privilégios elevados ou direitos do usuário a serem executados, como tarefas administrativas locais e aplicativos que exigem níveis de integridade mais altos. O serviço de Informações de Aplicativo ajuda a iniciar esses aplicativos criando um novo processo para o aplicativo com o token de acesso completo de um usuário administrativo quando a elevação é necessária. Dependendo das políticas configuradas, o usuário pode dar consentimento.
Elevando uma instalação do ActiveX Se o ActiveX não estiver instalado, o sistema verificará o nível do controle deslizante UAC. Se o ActiveX estiver instalado, o Controle da Conta de Usuário: alterne para a área de trabalho segura ao solicitar a elevação Política de Grupo configuração for verificada.
Verificar o nível do controle deslizante UAC O UAC tem um controle deslizante para selecionar entre quatro níveis de notificação.
  • Sempre notificará :
    • Notifique você quando os programas tentarem instalar o software ou fazer alterações no computador.
    • Notifique você quando fizer alterações nas configurações do Windows.
    • Congele outras tarefas até que você responda.
    Recomendado se você geralmente instalar um novo software ou visitar sites desconhecidos.
  • Notifique-me somente quando os programas tentarem fazer alterações no meu computador :
    • Notifique você quando os programas tentarem instalar o software ou fazer alterações no computador.
    • Não notifique você quando fizer alterações nas configurações do Windows.
    • Congele outras tarefas até que você responda.
    Recomendado se você não instalar aplicativos com frequência ou visitar sites desconhecidos.
  • Notifique-me somente quando os programas tentarem fazer alterações no meu computador (não dim my desktop) será:
    • Notifique você quando os programas tentarem instalar o software ou fazer alterações no computador.
    • Não notifique você quando fizer alterações nas configurações do Windows.
    • Não congele outras tarefas até que você responda.
    Não recomendado. Escolha isso somente se demorar muito tempo para diminuir a área de trabalho em seu computador.
  • Nunca notificar (desabilitar prompts UAC) será:
    • Não notifique você quando os programas tentarem instalar o software ou fazer alterações no computador.
    • Não notifique você quando fizer alterações nas configurações do Windows.
    • Não congele outras tarefas até que você responda.
    Não recomendado devido a preocupações de segurança.
Área de trabalho segura habilitada O Controle da Conta de Usuário: alternar para a área de trabalho segura ao solicitar a configuração da política de elevação é verificado:
  • Se a área de trabalho segura estiver habilitada, todas as solicitações de elevação serão para a área de trabalho segura, independentemente das configurações de política de comportamento de prompt para administradores e usuários padrão.
  • Se a área de trabalho segura não estiver habilitada, todas as solicitações de elevação serão usadas para a área de trabalho do usuário interativo e as configurações por usuário para administradores e usuários padrão.
Createprocess CreateProcess chama a detecção appCompat, Fusion e Installer para avaliar se o aplicativo requer elevação. Em seguida, o arquivo é inspecionado para determinar o nível de execução solicitado, que é armazenado no manifesto do aplicativo para o arquivo. CreateProcess falhará se o nível de execução solicitado especificado no manifesto não corresponder ao token de acesso e retornar um erro (ERROR_ELEVATION_REQUIRED) ao ShellExecute.
AppCompat O banco de dados AppCompat armazena informações nas entradas de correção de compatibilidade do aplicativo para um aplicativo.
Fusão O banco de dados Fusion armazena informações de manifestos de aplicativo que descrevem os aplicativos. O esquema de manifesto é atualizado para adicionar um novo campo de nível de execução solicitado.
Detecção do instalador A detecção do instalador detecta arquivos de instalação, o que ajuda a impedir que as instalações sejam executadas sem o conhecimento e o consentimento do usuário.

Kernel

Componente Descrição
Virtualização A tecnologia de virtualização garante que aplicativos não compatíveis não sejam executados silenciosamente ou falhem de uma maneira que a causa não possa ser determinada. O UAC também fornece virtualização de arquivo e registro e log para aplicativos que gravam em áreas protegidas.
Sistema de arquivos e registro O arquivo por usuário e a virtualização do registro redirecionam solicitações de registro por computador e gravação de arquivo para locais equivalentes por usuário. As solicitações de leitura são redirecionadas primeiro para o local virtualizado por usuário e para o local por computador em segundo lugar.

O controle deslizante nunca desativa completamente o UAC. Se você defini-lo como Nunca notificar, ele será:

  • Manter o serviço UAC em execução
  • Fazer com que todas as solicitações de elevação iniciadas pelos administradores sejam aprovadas automaticamente sem mostrar um prompt UAC
  • Negar automaticamente todas as solicitações de elevação para usuários padrão

Importante

Para desabilitar totalmente o UAC, você deve desabilitar a política Controle de Conta de Usuário: executar todos os administradores no modo de aprovação Administração.

Aviso

Alguns aplicativos Plataforma Universal do Windows podem não funcionar quando o UAC está desabilitado.

Virtualização

Como os administradores do sistema em ambientes empresariais tentam proteger sistemas, muitos aplicativos LOB (linha de negócios) foram projetados para usar apenas um token de acesso de usuário padrão. Como resultado, você não precisa substituir a maioria dos aplicativos quando o UAC está ativado.

O Windows inclui a tecnologia de virtualização de arquivo e registro para aplicativos que não estão em conformidade com o UAC e isso requer que o token de acesso de um administrador seja executado corretamente. Quando um aplicativo administrativo que não é compatível com UAC tenta gravar em uma pasta protegida, como Arquivos de Programa, o UAC fornece ao aplicativo sua própria visão virtualizada do recurso que ele está tentando alterar. A cópia virtualizada é mantida no perfil do usuário. Essa estratégia cria uma cópia separada do arquivo virtualizado para cada usuário que executa o aplicativo não compatível.

A maioria das tarefas de aplicativo opera corretamente usando recursos de virtualização. Embora a virtualização permita que a maioria dos aplicativos seja executada, é uma correção de curto prazo e não uma solução de longo prazo. Os desenvolvedores de aplicativos devem modificar seus aplicativos para estarem em conformidade o mais rápido possível, em vez de depender da virtualização de arquivo, pasta e registro.

A virtualização não é uma opção nos seguintes cenários:

  • A virtualização não se aplica a aplicativos que são elevados e executados com um token de acesso administrativo completo
  • A virtualização dá suporte a apenas aplicativos de 32 bits. Aplicativos de 64 bits não gerados recebem uma mensagem de acesso negada quando tentam adquirir um identificador (um identificador exclusivo) em um objeto Windows. Os aplicativos nativos do Windows 64 bits são necessários para serem compatíveis com o UAC e gravar dados nos locais corretos
  • A virtualização será desabilitada se o aplicativo incluir um manifesto de aplicativo com um atributo de nível de execução solicitado

Níveis de execução de solicitação

Um manifesto de aplicativo é um arquivo XML que descreve e identifica os assemblies compartilhados e privados lado a lado aos quais um aplicativo deve se associar em tempo de execução. O manifesto do aplicativo inclui entradas para fins de compatibilidade do aplicativo UAC. Aplicativos administrativos que incluem uma entrada no manifesto do aplicativo solicitam ao usuário permissão para acessar o token de acesso do usuário. Embora não tenham uma entrada no manifesto do aplicativo, a maioria do aplicativo administrativo pode ser executada sem modificação usando correções de compatibilidade do aplicativo. As correções de compatibilidade do aplicativo são entradas de banco de dados que permitem que aplicativos que não estejam em conformidade com o UAC funcionem corretamente.

Todos os aplicativos compatíveis com UAC devem ter um nível de execução solicitado adicionado ao manifesto do aplicativo. Se o aplicativo exigir acesso administrativo ao sistema, marcar o aplicativo com um nível de execução solicitado do administrador necessário garantirá que o sistema identifique esse programa como um aplicativo administrativo e execute as etapas de elevação necessárias. Os níveis de execução solicitados especificam os privilégios necessários para um aplicativo.

Tecnologia de detecção do instalador

Os programas de instalação são aplicativos projetados para implantar software. A maioria dos programas de instalação gravam em diretórios do sistema e chaves de registro. Esses locais protegidos do sistema normalmente são graváveis apenas por um administrador na tecnologia de detecção do Instalador, o que significa que os usuários padrão não têm acesso suficiente para instalar programas. O Windows detecta heuristicamente programas de instalação e solicita credenciais de administrador ou aprovação do usuário administrador para executar com privilégios de acesso. O Windows também detecta heuristicamente atualizações e programas que desinstalam aplicativos. Uma das metas de design do UAC é impedir que as instalações sejam executadas sem o conhecimento e o consentimento do usuário, pois os programas de instalação gravam em áreas protegidas do sistema de arquivos e do registro.

A detecção do instalador só se aplica a:

  • Arquivos executáveis de 32 bits
  • Aplicativos sem um atributo de nível de execução solicitado
  • Processos interativos em execução como um usuário padrão com o UAC habilitado

Antes de um processo de 32 bits ser criado, os seguintes atributos são verificados para determinar se ele é um instalador:

  • O nome do arquivo inclui palavras-chave como "instalar", "configurar" ou "atualizar".
  • Os campos de recursos de versão contêm as seguintes palavras-chave: Fornecedor, Nome da Empresa, Nome do Produto, Descrição do Arquivo, Nome de Arquivo Original, Nome Interno e Nome de Exportação.
  • As palavras-chave no manifesto lado a lado estão inseridas no arquivo executável.
  • Palavras-chave em entradas específicas da StringTable estão vinculadas no arquivo executável.
  • Os principais atributos nos dados do script de recurso estão vinculados no arquivo executável.
  • Há sequências de bytes no arquivo executável.

Observação

As palavras-chave e as sequências de bytes foram derivadas de características comuns observadas de várias tecnologias do instalador.

Observação

O Controle da Conta de Usuário: detectar instalações de aplicativos e solicitar a política de elevação deve ser habilitado para a detecção do instalador detectar programas de instalação. Para obter mais informações, consulte Lista de configurações do Controle de Conta de Usuário.

Próximas etapas

Saiba mais sobre as configurações e configurações do Controle de Conta de Usuário.