Controle de integridade obrigatório

O MIC (Controle de Integridade Obrigatório) fornece um mecanismo para controlar o acesso a objetos protegíveis. Esse mecanismo se soma ao controle de acesso discricionário e avalia o acesso antes que as verificações de acesso em relação à DACL ( lista de controle de acesso discricionário ) de um objeto sejam avaliadas.

O MIC usa níveis de integridade e a política obrigatória para avaliar o acesso. Entidades de segurança e objetos protegíveis recebem níveis de integridade que determinam seus níveis de proteção ou acesso. Por exemplo, uma entidade de segurança com um nível de integridade baixo não pode gravar em um objeto com um nível de integridade médio, mesmo que a DACL desse objeto permita acesso de gravação à entidade de segurança.

O Windows define quatro níveis de integridade: baixo, médio, alto e sistema. Os usuários padrão recebem usuários médios e elevados recebem alta. Os processos que você inicia e os objetos criados recebem seu nível de integridade (médio ou alto) ou baixo se o nível do arquivo executável for baixo; os serviços do sistema recebem integridade do sistema. Objetos que não têm um rótulo de integridade são tratados como médios pelo sistema operacional; isso impede que o código de baixa integridade modifique objetos sem rótulo. Além disso, o Windows garante que os processos em execução com um nível de integridade baixo não possam obter acesso a um processo associado a um contêiner de aplicativo.

Rótulos de integridade

Os rótulos de integridade especificam os níveis de integridade de objetos protegíveis e entidades de segurança. Os rótulos de integridade são representados por SIDs de integridade. O SID de integridade de um objeto protegível é armazenado em sua SACL ( lista de controle de acesso do sistema ). A SACL contém uma ACE (entrada de controle de acesso) SYSTEM_MANDATORY_LABEL_ACE que, por sua vez, contém o SID de integridade. Qualquer objeto sem um SID de integridade é tratado como se tivesse integridade média.

O SID de integridade de uma entidade de segurança é armazenado em seu token de acesso. Um token de acesso pode conter um ou mais SIDs de integridade.

Para obter informações detalhadas sobre os SIDs de integridade definidos, consulte SIDs conhecidos.

Criação de processos

Quando um usuário tenta iniciar um arquivo executável, o novo processo é criado com o mínimo do nível de integridade do usuário e do nível de integridade do arquivo. Isso significa que o novo processo nunca será executado com maior integridade do que o arquivo executável. Se o usuário administrador executar um programa de baixa integridade, o token para o novo processo funcionará com o nível de integridade baixo. Isso ajuda a proteger um usuário que inicia código não confiável contra atos mal-intencionados executados por esse código. Os dados do usuário, que estão no nível típico de integridade do usuário, são protegidos por gravação contra esse novo processo.

Política obrigatória

O SYSTEM_MANDATORY_LABEL_ACE ACE na SACL de um objeto protegível contém uma máscara de acesso que especifica o acesso que as entidades de segurança com níveis de integridade inferiores ao objeto são concedidas. Os valores definidos para essa máscara de acesso são SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP e SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP. Por padrão, o sistema cria todos os objetos com uma máscara de acesso de SYSTEM_MANDATORY_LABEL_NO_WRITE_UP.

Cada token de acesso também especifica uma política obrigatória definida pela LSA ( Autoridade de Segurança Local ) quando o token é criado. Essa política é especificada por uma estrutura TOKEN_MANDATORY_POLICY associada ao token. Essa estrutura pode ser consultada chamando a função GetTokenInformation com o valor do parâmetro TokenInformationClass definido como TokenMandatoryPolicy.