Compartilhar via


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 é adicional 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 política obrigatória para avaliar o acesso. As entidades de segurança e os objetos protegíveis recebem níveis de integridade que determinam seus níveis de proteção ou acesso. Por exemplo, uma entidade 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 o médio, os usuários elevados recebem o alto. Os processos iniciados 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. Os objetos que não possuem um rótulo de integridade são tratados como mídia pelo sistema operacional; Isso impede que o código de baixa integridade modifique objetos não rotulados. Além disso, o Windows garante que os processos em execução com um baixo nível de integridade 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 entrada de controle de acesso (ACE) 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 um código não confiável contra atos mal-intencionados realizados 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 contra gravação contra esse novo processo.

Política Obrigatória

A ACE SYSTEM_MANDATORY_LABEL_ACE na SACL de um objeto protegível contém uma máscara de acesso que especifica o acesso concedido às entidades principais com níveis de integridade inferiores ao objeto. 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 cada objeto 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 que é 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.