Partilhar via


Verificação de integridade do código

A integridade da memória é um recurso de VBS (segurança baseada em virtualização) disponível em Windows 10, Windows 11 e Windows Server 2016 e posteriores. A integridade da memória e o VBS melhoram o modelo de ameaça do Windows e fornecem proteções mais fortes contra malware que tenta explorar o kernel do Windows. A VBS usa o hipervisor do Windows para criar um ambiente virtual isolado que se torna a raiz de confiança do sistema operacional que pressupõe que o kernel pode ser comprometido. A integridade da memória é um componente crítico que protege e protege o Windows executando a integridade do código do modo kernel no ambiente virtual isolado do VBS. A integridade da memória também restringe as alocações de memória do kernel que podem ser usadas para comprometer o sistema, garantindo que as páginas de memória do kernel sejam executadas somente depois de passar em verificações de integridade de código dentro do ambiente de runtime seguro e as próprias páginas executáveis nunca sejam graváveis.

Observação

Às vezes, a integridade da memória é conhecida como HVCI (integridade de código protegida por hipervisor) ou integridade de código imposta pelo hipervisor e foi originalmente lançada como parte do Device Guard. O Device Guard não é mais usado, exceto para localizar a integridade da memória e as configurações de VBS no Política de Grupo ou no Registro do Windows.

As verificações de integridade de código garantem a compatibilidade com os requisitos de uso de memória do kernel da integridade da memória e detectam as seguintes violações:

Código do erro Problema de integridade do código
0x2000:
  • 2 – O endereço no código do driver em que o erro foi detectado.
  • 3 – Tipo de pool.
  • 4 – Marca de pool (se fornecido).

O chamador especificou um tipo de pool executável. (Esperado: NonPagedPoolNx)
0x2001:
  • 2 – O endereço no código do driver em que o erro foi detectado.
  • 3 – Proteção de Página (WIN32_PROTECTION_MASK).
O chamador especificou uma proteção de página executável. (Esperado: PAGE_EXECUTE* bits limpos)
0x2002:
  • 2 – O endereço no código do driver em que o erro foi detectado.
  • 3 – Prioridade de página (MM_PAGE_PRIORITY logicamente OR'd com MdlMapping*).
O chamador especificou um mapeamento de MDL executável. (Esperado: MdlMappingNoExecute).
0x2003:
  • 2 - O nome do arquivo de imagem (cadeia de caracteres Unicode).
  • 3 – O endereço do cabeçalho da seção.
  • 4 – O nome da seção (cadeia de caracteres codificada em UTF-8).
A imagem contém uma seção executável e gravável.
0x2004:
  • 2 - O nome do arquivo de imagem (cadeia de caracteres Unicode).
  • 3 – O endereço do cabeçalho da seção.
  • 4 – O nome da seção (cadeia de caracteres codificada em UTF-8).
A imagem contém uma seção que não está alinhada à página.
0x2005:
  • 2 - O nome do arquivo de imagem (cadeia de caracteres Unicode).
  • 3 – Diretório IAT.
  • 4 – O nome da seção (cadeia de caracteres codificada em UTF-8).
A imagem contém um IAT localizado em uma seção executável.

Ativando essa opção:

Você pode ativar a verificação de integridade de código para um ou mais drivers usando o Gerenciador de Verificador de Driver ou a linha de comando Verifier.exe. Para obter detalhes, consulte Selecionando opções de verificador de driver. Você deve reiniciar o computador para ativar ou desativar a opção de verificação de integridade de código.

  • Na linha de comando

    Na linha de comando, a verificação de integridade do código é representada por 0x02000000 (Bit 25). Por exemplo:

    verifier /flags 0x02000000 /driver MyDriver.sys

    O recurso estará ativo após a próxima inicialização.

  • Usando o Gerenciador de Verificador de Driver

  1. Iniciar o Gerenciador de Verificador de Driver. Digite Verificador em uma janela do Prompt de Comando.
  2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
  3. Selecione(marcar) verificação de integridade de código.
  4. Reinicie o computador.

Implementar código compatível com integridade de memória