O que é o Mecanismo de Integridade do Windows?

O mecanismo de integridade do Windows é um componente principal da arquitetura de segurança do Windows que restringe as permissões de acesso de aplicativos em execução na mesma conta de usuário e que são menos confiáveis.

O mecanismo de integridade do Windows Vista® estende a arquitetura de segurança do sistema operacional atribuindo um nível de integridade a processos de aplicativos e objetos protegíveis.

O nível de integridade é uma representação da confiabilidade da execução de processos e objetos de aplicativo, como arquivos criados pelo aplicativo. O mecanismo de integridade fornece a capacidade dos gerenciadores de recursos, como o sistema de arquivos, de usar políticas predefinidas que bloqueiam processos de menor integridade ou menor confiabilidade, de ler ou modificar objetos de maior integridade. O mecanismo de integridade permite que o modelo de segurança do Windows imponha novas restrições de controle de acesso que não podem ser definidas concedendo permissões de usuário ou grupo em ACLs (listas de controle de acesso).

A arquitetura de segurança do Windows baseia-se principalmente na concessão de direitos de acesso (permissões de leitura, gravação e execução) e privilégios para usuários ou grupos representados internamente por SIDs (identificadores de segurança). Quando um usuário faz logon no Windows, o subsistema de segurança define o SID do usuário e os SIDs de associação de grupo em um token de acesso de segurança. O token de acesso de segurança é atribuído a cada processo de aplicativo executado por esse usuário. Sempre que o processo do aplicativo abre um objeto, como um arquivo ou chave do Registro, o gerenciador de recursos que gerencia as chamadas de objeto no subsistema de segurança para tomar uma decisão de acesso. A marcar de acesso determina as permissões de acesso permitidas para esse usuário. O subsistema de segurança (também conhecido como Monitor de Referência de Segurança) compara os SIDs de usuário e grupo no token de acesso com os direitos de acesso em um descritor de segurança associado ao objeto . Se o SID do usuário receber direitos de acesso total na ACL do objeto, o processo de aplicativo que o usuário executa terá acesso total ao objeto. Para obter mais informações sobre a arquitetura de segurança do Windows, consulte Recursos do Mecanismo de Integridade do Windows.

Estendendo a arquitetura de segurança do Windows

O mecanismo de integridade do Windows estende a arquitetura de segurança definindo um novo tipo ace (entrada de controle de acesso) para representar um nível de integridade no descritor de segurança de um objeto. A nova ACE representa o nível de integridade do objeto. Um nível de integridade também é atribuído ao token de acesso de segurança quando o token de acesso é inicializado. O nível de integridade no token de acesso representa um nível de integridade do assunto. O nível de integridade no token de acesso é comparado com o nível de integridade no descritor de segurança quando o monitor de referência de segurança executa uma marcar de acesso. O Windows Vista usa a função AccessCheck para determinar quais direitos de acesso têm permissão para um objeto protegível. O Windows restringe os direitos de acesso permitidos dependendo se o nível de integridade da entidade é maior ou menor que o objeto e dependendo dos sinalizadores de política de integridade no novo ACE de controle de acesso. O subsistema de segurança implementa o nível de integridade como um rótulo obrigatório para distingui-lo do acesso discricionário sob controle de usuário fornecido pelas ACLs.

Metas de design do mecanismo de integridade do Windows

O mecanismo de integridade do Windows permite vários cenários importantes no Windows Vista. Para atender aos requisitos, o design do mecanismo de integridade do Windows precisava atender às metas a seguir.

  • Os níveis de integridade devem ser atribuídos automaticamente a cada token de acesso de segurança durante a criação do token de acesso, para que cada processo e thread tenha um nível de integridade efetivo para o controle de acesso.
  • O subsistema de segurança atribui automaticamente rótulos obrigatórios a tipos de objeto específicos.
  • O sistema deve usar o menor número possível de níveis de integridade para manter a arquitetura básica simples de entender e usar.
  • A política de integridade deve ser flexível para atender aos requisitos de acesso de diferentes gerenciadores de recursos de objeto e permitir extensibilidade futura.
  • O mecanismo de integridade deve se integrar à arquitetura de segurança existente para minimizar o impacto no grande legado do sistema e do código do aplicativo que depende da segurança do Windows.
  • Não há nenhum requisito para que administradores ou usuários configurem níveis de integridade para que o mecanismo de imposição funcione corretamente.

O mecanismo de integridade do Windows atende a essas metas definindo um novo tipo ACE de rótulo obrigatório para atribuir um nível de integridade a objetos. Os detalhes dessa estrutura são descritos em uma seção posterior deste artigo. No entanto, o rótulo obrigatório ACE define um nível de integridade do objeto sem alterações na definição de estrutura de dados do descritor de segurança existente ou na lista de controle de acesso discricionário comumente usada.

O mecanismo de integridade do Windows baseia-se em um rótulo obrigatório que o sistema operacional atribui para diferenciá-lo do acesso discricionário sob controle do usuário. O controle de acesso discricionário permite que o proprietário do objeto ou o grupo que recebe permissão altere as permissões de acesso do objeto. O Windows fornece uma interface gráfica do usuário (interface do usuário) para que os usuários avançados exibam e modifiquem as permissões de segurança (representadas pela ACL discricionária) em objetos, como arquivos e chaves do Registro. Os rótulos obrigatórios são sempre atribuídos a objetos específicos e há controles sobre como o criador do objeto pode definir ou inicializar o rótulo na criação do objeto. Nenhuma interface do usuário gráfica para gerenciar rótulos de integridade foi implementada para o Windows Vista porque o gerenciamento de rótulos está disponível ou é necessário para relativamente poucas áreas.

Por que há um mecanismo de integridade do Windows?

A finalidade do mecanismo de integridade do Windows é restringir as permissões de acesso de aplicativos que estão em execução na mesma conta de usuário e que são menos confiáveis. Código desconhecido, potencialmente mal-intencionado baixado da Internet, deve ser impedido de modificar o estado do sistema, alterar arquivos de dados do usuário ou manipular o comportamento de outros programas de aplicativo. O subsistema de segurança do Windows atribui uma hierarquia simples de níveis de integridade ao código em execução em diferentes níveis de privilégio para o mesmo usuário. As versões anteriores do Windows podem ajustar os privilégios de token de acesso de segurança de um processo de aplicativo, embora esse ajuste não seja comum. Antes do Windows Vista, a maioria dos aplicativos era executada usando uma conta administrativa com direitos de administrador completos. O Windows Vista incorpora o conceito de privilégios mínimos, permitindo o uso mais amplo de contas de usuário padrão. O UAC (Controle de Conta de Usuário) no modo de aprovação Administração para contas de administrador significa que vários aplicativos na mesma área de trabalho estão em execução com níveis de privilégio diferentes. Por exemplo, o modo protegido internet Explorer usa o mecanismo de integridade para executar o navegador da Web em um processo com permissões de acesso limitadas.

O principal problema de segurança que o mecanismo de integridade do Windows resolve é a violação não autorizada dos dados do usuário e, indiretamente, do estado do sistema. Um problema secundário com o qual o mecanismo de integridade ajuda é a divulgação de informações. No entanto, a divulgação de informações é impedida apenas em relação ao acesso ao espaço de endereço do processo. O compartilhamento de informações é muito comum entre aplicativos do Windows e o compartilhamento conveniente de informações entre aplicativos é fundamental para a experiência do usuário. Um exemplo é copiar e colar. Limites rígidos de segurança no compartilhamento de informações entre aplicativos em execução na mesma conta de usuário podem afetar severamente a compatibilidade do aplicativo e a experiência do usuário.

O código não confiável pode tentar modificar os dados do usuário de várias maneiras. Alguns ataques podem tentar manipular dados diretamente criando, modificando ou excluindo arquivos. Outros ataques têm como alvo outro processo em execução com privilégios mais altos, com o objetivo de obter código arbitrário para ser executado em outro aplicativo que tenha o nível de acesso necessário. Há muitos tipos de ataques entre processos. Devido à ampla gama de design e implementação do aplicativo, o mecanismo de integridade não pode fornecer uma barreira de isolamento completa. O mecanismo de integridade do Windows não se destina a ser uma área restrita do aplicativo. No entanto, pode ser uma das ferramentas de segurança que os desenvolvedores de aplicativos usam para restringir o comportamento de aplicativos menos confiáveis.

Mecanismo de integridade do Windows Vista e modelos de integridade anteriores

Algumas características do mecanismo de integridade do Windows são semelhantes aos modelos de integridade anteriores para segurança do computador. No entanto, o mecanismo de integridade do Windows foi projetado principalmente para lidar com adulteração ou elevação de privilégio no ambiente de aplicativo altamente colaborativo do Windows. Os modelos de integridade anteriores estavam mais preocupados em manter a integridade de processos confiáveis aplicando políticas que impedem a leitura de dados não confiáveis.

O modelo de segurança do Biba baseia-se em uma hierarquia de rótulos de integridade e nas políticas de acesso permitidas quando um nível de integridade do assunto domina o nível de integridade do objeto. O mecanismo de integridade do Windows se assemelha ao modelo biba das seguintes maneiras:

  • Ele usa uma hierarquia de rótulos de integridade (os rótulos de integridade não são iguais aos rótulos de segurança no modelo de Bell-LePadula).
  • O sistema usa um conjunto de entidades ordenadas, objetos e níveis de integridade.
  • O nível de integridade do assunto domina (é maior ou igual a) o nível de integridade do objeto.
  • As políticas de integridade inibem o acesso a objetos, mas não são usadas principalmente para limitar o fluxo de informações.
  • Impedir a divulgação de informações não é uma meta do mecanismo de integridade no Windows Vista.

Os níveis de integridade do Windows são ordenados para que um valor mais baixo indique menos confiabilidade e um valor mais alto indique maior confiabilidade. Um assunto de nível inferior não pode modificar um objeto de nível superior. O nível de integridade do assunto não é dinâmico. Por exemplo, o nível de integridade de um assunto não será alterado para um valor mais baixo se o processo ler dados de um objeto de baixa integridade. O modelo de integridade estrita no Biba não permite que um processo de integridade mais alta leia dados de integridade inferior. Às vezes, isso é chamado de política de integridade "sem leitura". As políticas de integridade do Windows, descritas mais detalhadamente abaixo, não inibem ou impedem que os sujeitos de maior integridade leiam ou executem objetos de menor integridade. Há muitos exemplos de ataques em que a leitura de dados de entrada não confiáveis malformados resulta em uma exploração de uma vulnerabilidade em um aplicativo e na execução arbitrária de código. O mecanismo de integridade do Windows não inibe nem impede a leitura de dados em nenhum nível. O Windows não impõe uma política de integridade estrita descrita no modelo biba. O design de integridade pressupõe que os processos projetados para lidar com dados não confiáveis de uma fonte desconhecida ou não confiável estejam em execução em um nível de integridade inferior ou que dados não confiáveis sejam verificados antes do uso. No entanto, o mecanismo de integridade do Windows não impõe essa restrição.

O mecanismo de integridade do Windows não implementa uma política dinâmica ou "Marca d'água baixa". Uma política dinâmica altera o nível de integridade do assunto à medida que o assunto abre objetos de integridade inferior. Um problema com integridade dinâmica é quando um processo de alta integridade obtém identificadores abertos para muitos objetos com base na alta integridade e, de repente, se torna um assunto de menor integridade depois que abre um arquivo de baixa integridade específico. Forçar todos os identificadores abertos a objetos de maior integridade a serem fechados quando o nível de integridade é alterado afeta significativamente o comportamento do aplicativo. O processo dinâmico de menor integridade se torna um objeto de destino de outros processos no nível de integridade inferior. Esses processos agora podem ser capazes de modificar o comportamento do aplicativo (no mesmo nível inferior) que tem identificadores abertos para objetos de integridade mais alta.

O mecanismo de integridade do Windows não foi projetado para proteção de integridade de dados para dar suporte a requisitos militares ou comerciais, conforme descrito no modelo de Clark-Wilson. A implementação do Windows de controles de integridade não se baseia nos conceitos de Itens de Dados Restritos ou Irrestritos e Procedimentos de Transformação Certificados. No entanto, esses conceitos são úteis para designers de aplicativos quando consideram o fluxo de informações de fontes não confiáveis para processos de maior integridade.

Embora o mecanismo de integridade do Windows seja semelhante a modelos de integridade anteriores na segurança do computador, o Windows Vista não tenta implementar nenhum dos modelos. Em vez disso, o mecanismo de integridade do Windows limita as permissões de acesso disponíveis para processos em execução com diferentes níveis de privilégio ou confiança. Para obter mais informações sobre o trabalho anterior em modelos de integridade do Biba e Clark-Wilson e políticas de integridade dinâmica, consulte Recursos do Mecanismo de Integridade do Windows.