Opções do Verificador de Driver e classes de regras
Neste assunto, você encontra descrições dos recursos opcionais e das classes de regras no Verificador de Drivers. Para ver quais são as opções disponíveis quando você usa as configurações padrão, consulte Configurações padrão.
Observação
Algumas verificações automáticas são sempre executadas em um driver que está sendo verificado, independentemente de quais opções foram selecionadas. Se o driver usar memória em um IRQL impróprio, chamar ou liberar incorretamente bloqueios de rotação e alocações de memória, alternar pilhas incorretamente ou liberar o pool de memória sem primeiro remover temporizadores, o verificador de driver detectará esse comportamento. Quando o driver for descarregado, o verificador de driver irá conferir se ele liberou corretamente seus recursos.
Habilitar classes de regra com /ruleclasses
A partir do Windows 10, versão 17627 e posteriores, você pode habilitar classes de regra com a seguinte sintaxe:
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
Ao habilitar várias classes (representadas pelo inteiro decimal positivo abaixo), separe cada inteiro com um caractere de espaço.
As descrições dessas classes de regras podem ser encontradas abaixo.
Classes de regras padrão
Classe de regra | ID decimal |
---|---|
Pool especial | 1 |
Forçar verificação de IRQL | 2 |
Rastreamento de pool | 4 |
Verificação de E/S | 5 |
Detecção de deadlocks | 6 |
Verificação de DMA | 8 |
Verificações de segurança | 9 |
Verificações diversas | 12 |
Verificação de conformidade DDI | 18 |
Verificação de WDF | 34 |
Classes de regras adicionais
Essas classes de regras destinam-se a testes de cenários específicos. As classes de regra marcadas com (*) requerem a verificação de E/S (5), que será habilitada automaticamente. Os sinalizadores marcados com (**) dão suporte à desativação de regras individuais.
Classe de regra | ID decimal |
---|---|
Simulação aleatória de poucos recursos | 3 |
Forçar solicitações de E/S pendentes (*) | 10 |
Registro em log do IRP | 11 |
Verificação MDL invariável para pilha (*) | 14 |
Verificação MDL invariável para driver (*) | 15 |
Fuzzing de atraso do Power Framework | 16 |
Verificação da interface de porta/miniporta | 17 |
Simulação sistemática de recursos baixos | 19 |
Verificação de conformidade com DDI (adicional) | 20 |
Fuzzing de atraso de sincronização do kernel | 24 |
Verificação do comutador VM | 25 |
Verificações de integridade de código | 26 |
Verificações de isolamento de driver (requer 36) | 33 |
Verificação adicional de IRQL | 35 |
Habilitar DIF | 36 |
Descrições opcionais de recursos e classes de regras
Quando essa opção está habilitada, o verificador de driver aloca a maioria das solicitações de memória do driver de um pool especial. Esse pool especial é monitorado quanto a saturações de memória, insuficiências de memória e memória que é acessada depois de liberada.
Quando essa opção está habilitada, o verificador de driver coloca uma pressão extrema de memória sobre o driver invalidando o código paginável. Se o driver tentar acessar a memória paginada no IRQL errado ou enquanto mantém um bloqueio de rotação, o verificador de driver detectará esse comportamento.
Simulação de recursos baixos (chamada de Simulação aleatória de poucos recursos no Windows 8.1)
Quando essa opção está habilitada, o verificador de driver falha aleatoriamente nas solicitações de alocação de pool e em outras solicitações de recursos. Ao injetar essas falhas de alocação no sistema, o verificador de driver testa a capacidade do driver de lidar com uma situação de poucos recursos.
Quando essa opção está habilitada, o verificador de driver verifica se o driver liberou todas as suas alocações de memória quando ele é descarregado. Isso revela vazamentos de memória.
Quando essa opção está ativa, o verificador de driver aloca os IRPs do driver de um pool especial e monitora a manipulação de E/S do driver. Isso detecta o uso ilegal ou inconsistente de rotinas de E/S.
Quando essa opção está ativa, o verificador de driver monitora o uso do driver de bloqueios de rotação, mutexes e mutexes rápidos. Isso detecta se o código do driver tem o potencial de causar um deadlock em algum momento.
Quando essa opção está ativa, o verificador de driver monitora as chamadas de várias rotinas do Gerenciador de E/S e executa testes de estresse de IRPs PnP, IRPs de energia e IRPs WMI. No Windows 7 e versões posteriores do sistema operacional Windows, todos os recursos da verificação de E/S aprimorada estão incluídos como parte da verificação de E/S e não está mais disponíveis, nem é necessário selecionar essa opção no Gerenciador de Verificação de Driver ou na linha de comando.
Quando essa opção está ativa, o verificador de driver monitora o uso de rotinas de DMA pelo driver. Isso detecta o uso indevido de buffers, adaptadores e registros de mapa DMA.
(Windows Vista e versões posteriores) Quando essa opção está ativa, o verificador de driver procura erros comuns que podem resultar em vulnerabilidades de segurança, como uma referência a endereços de modo de usuário por rotinas do modo kernel.
(Windows Vista e versões posteriores) Quando essa opção está ativa, o verificador de driver procura causas comuns de falhas de driver, como o manuseio incorreto da memória liberada.
Forçar solicitações de E/S pendentes
(Windows Vista e versões posteriores) Quando essa opção está ativa, o verificador de driver testa a resposta do driver aos valores retornados STATUS_PENDING retornando STATUS_PENDING para chamadas aleatórias para IoCallDriver.
(Windows Server 2003 e versões posteriores) Quando essa opção está ativa, o verificador de driver monitora o uso de IRPs de um driver e cria um log de uso de IRP.
(Windows Vista e versões posteriores) Quando essa opção está ativa, o verificador de driver monitora um driver de miniporta do Storport quanto ao uso indevido de rotinas do Storport exportadas, atrasos excessivos e tratamento inadequado de solicitações do Storport.
Fuzzing de atraso do Power Framework
(A partir do Windows 8) Quando essa opção está ativa, o verificador de driver gera aleatoriamente agendamentos de thread para ajudar a eliminar erros de simultaneidade nos drivers que usam a estrutura de gerenciamento de energia (PoFx). Essa opção não é recomendada para drivers que não utilizam diretamente a estrutura de gerenciamento de energia (PoFx).
Verificação de conformidade DDI
(A partir do Windows 8) Quando essa opção está ativa, o verificador de driver aplica um conjunto de regras da interface do driver de dispositivo (DDI) que verificam a interação correta entre um driver e a interface do kernel do sistema operacional.
Verificação MDL invariável para pilha
(A partir do Windows 8) A opção Verificação MDL invariável para pilha monitora como o driver lida com buffers MDL invariáveis na pilha de driver. O verificador de driver pode detectar modificações ilegais de buffers MDL invariáveis. Para usar essa opção, a Verificação de E/S deve estar habilitada em pelo menos um driver.
Verificação MDL invariável para driver
(A partir do Windows 8) A opção Verificação MDL invariável para driver monitora como o driver lida com buffers MDL invariáveis em cada driver. Essa opção detecta modificações ilegais de buffers MDL invariáveis. Para usar essa opção, você deve habilitar a Verificação de E/S em pelo menos um driver.
Injeção de falha baseada em pilha
(Disponível somente com Windows 8 e WDK 8) A opção Injeção de falha baseada em pilha injeta falhas de recursos em drivers do modo kernel. Essa opção usa um driver especial, KmAutoFail.sys, em conjunto com o verificador de driver para penetrar nos caminhos de tratamento de erros do driver.
Simulação sistemática de recursos baixos
(A partir do Windows 8.1) A opção Simulação sistemática de recursos baixos injeta falhas de recursos em drivers do modo kernel.
(A partir do Windows 8.1) Quando essa opção está ativa, o verificador de driver aplica um conjunto de regras NDIS e LAN sem fio (Wi-Fi) que verificam a interação adequada entre um driver de miniporta NDIS e o kernel do sistema operacional.
Fuzzing de atraso de sincronização do kernel
(A partir do Windows 8.1) Essa opção gera aleatoriamente agendamentos de thread para ajudar a detectar bugs de simultaneidade em drivers.
(A partir do Windows 8.1) Essa opção monitora drivers de filtro (extensões de comutador extensível) que são executados dentro do Comutador Extensível do Hyper-V.
Verificação da interface de porta/miniporta
A verificação de interface de porta/miniporta permite que o verificador de driver inspecione a interface DDI entre PortCls.sys e seus drivers de miniporta de áudio, junto com ks.sys e seus drivers de miniporta AVStream. Consulte Regras para drivers AVStream e Regras para drivers de áudio.
Verificação de integridade de código
Ao usar a segurança baseada em virtualização para isolar a integridade do código, a única maneira de a memória do kernel se tornar executável é por meio de uma verificação de integridade do código. Isso significa que as páginas de memória do kernel nunca podem ser graváveis e executáveis (W + X), e o código executável não pode ser modificado diretamente. As verificações de integridade do código garantem a compatibilidade dessas regras de integridade do código e detectam violações.
A verificação do WDF verifica se um driver no modo kernel está seguindo os requisitos da estrutura do driver no modo kernel (KMDF) corretamente.
Verificação adicional de IRQL
A verificação adicional de IRQL aumenta as regras de IRQL de Verificação de conformidade DDI para PASSIVE_LEVEL. Ela é composta por duas regras:
- A regra IrqlIoRtlZwPassive especifica que o driver chama os DDIs listados na regra somente quando ele está sendo executado em IRQL = PASSIVE_LEVEL.
- A regra IrqlNtifsApcPassive especifica que o driver chama os DDIs listados na regra somente quando ele está sendo executado em IRQL = PASSIVE_LEVEL ou em IRQL <= APC_LEVEL.
Verificações de isolamento de driver
As verificações de isolamento de driver são críticas para validar os requisitos de isolamento do pacote de driver de tempo de execução dos drivers do Windows. Para obter mais informações, consulte Introdução ao desenvolvimento de drivers do Windows. As verificações monitoram leituras e gravações do registro que não são permitidas para pacotes de driver isolados.
Configurações padrão
Opções incluídas nas configurações padrão |
---|
Verificação de E/S aprimorada (no Windows 7 e versões posteriores, essa opção é ativada automaticamente quando você seleciona a Verificação de E/S) |
Verificações diversas (Windows Vista e versões posteriores) |
Verificação de conformidade de DDI (a partir do Windows 8) |
Opções do verificador de driver que exigem Verificação de E/S
Há quatro opções que exigem que você habilite primeiro a Verificação de E/S. Se a Verificação de E/S não estiver habilitada, essas opções não serão habilitadas.