Options du Vérificateur de pilotes et classes de règles
Cette rubrique décrit les fonctionnalités optionnelles et les classes de règles du Vérificateur de pilotes. Veuillez consulter la section Paramètres standard pour la liste des options incluses lorsque vous utilisez les paramètres standard.
Remarque
Certains contrôles automatiques sont toujours effectués sur un pilote en cours de vérification, quelle que soit l’option sélectionnée. Si le pilote utilise la mémoire à un IRQL inapproprié, appelle ou libère de façon incorrecte les verrous tournants et les allocations de mémoire, change incorrectement de pile, ou libère la mémoire sans avoir d’abord supprimé les minuteries, le Vérificateur de pilotes détectera ce comportement. Lorsque le pilote est déchargé, le Vérificateur de pilotes vérifiera qu’il a correctement libéré ses ressources.
Activation des classes de règles avec /ruleclasses
À partir de Windows 10, version 17627 et ultérieures, vous pouvez activer des classes de règles avec la syntaxe suivante :
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
Notez que lors de l’activation de plusieurs classes (représentées par l’entier décimal positif ci-dessous), chaque entier doit être séparé par un espace.
Les descriptions de ces classes de règles se trouvent ci-dessous.
Classes de règles standard
Classe de règles | ID décimal |
---|---|
Pool spécial | 1 |
Forcer la vérification IRQL | 2 |
Suivi du pool | 4 |
Vérification des E/S | 5 |
Détection de blocage | 6 |
Vérification DMA | 8 |
Vérifications de sécurité | 9 |
Vérifications diverses | 12 |
Vérification de la conformité DDI | 18 |
Vérification WDF | 34 |
Classes de règles supplémentaires
Ces classes de règles sont destinées aux tests de scénarios spécifiques. Les classes de règles marquées d’un (*) nécessitent la vérification E/S (5) qui sera automatiquement activée. Les indicateurs marqués de (**) prennent en charge la désactivation de règles individuelles.
Classe de règles | ID décimal |
---|---|
Simulation aléatoire de faibles ressources | 3 |
Forcer les demandes d’E/S en attente (*) | 10 |
La journalisation IRP | 11 |
Vérification MDL invariante pour stack (*) | 14 |
Vérification MDL invariante pour le pilote (*) | 15 |
Fuzzing différé de Power Framework | 16 |
Vérification de l’interface port/miniport | 17 |
Simulation systématique de ressources faibles | 19 |
Vérification de conformité DDI (supplémentaire) | 20 |
Fuzzing du délai de synchronisation du noyau | 24 |
Vérification du commutateur de machine virtuelle | 25 |
Vérifications de l’intégrité du code | 26 |
Vérifications d’isolation du pilote (nécessite 36) | 33 |
Vérification IRQL supplémentaire | 35 |
Activer DIF | 36 |
Descriptions des fonctionnalités optionnelles et des classes de règles
Lorsque cette option est activée, le Vérificateur de pilotes alloue la plupart des demandes de mémoire du pilote à partir d’un pool spécial. Ce pool spécial est surveillé pour les dépassements, les sous-utilisations de mémoire et la mémoire accédée après sa libération.
Lorsque cette option est activée, le Vérificateur de pilotes exerce une pression extrême sur la mémoire du pilote en invalidant le code paginable. Si le pilote tente d’accéder à de la mémoire paginée à un IRQL incorrect ou tout en maintenant un verrou tournant, le Vérificateur de pilotes détecte ce comportement.
Simulation de faibles ressources (appelée Simulation aléatoire de faibles ressources dans Windows 8.1)
Lorsque cette option est activée, le Vérificateur de pilotes échoue de manière aléatoire les demandes d’allocation de pool et d’autres demandes de ressources. En injectant ces défauts d’allocation dans le système, le Vérificateur de pilotes teste la capacité du pilote à gérer une situation de faible ressource.
Lorsque cette option est activée, le Vérificateur de pilotes vérifie si le pilote a libéré toutes ses allocations de mémoire lorsqu’il est déchargé. Cela permet de révéler des fuites de mémoire.
Lorsque cette option est active, le Vérificateur de pilotes alloue les IRP du pilote à partir d’un pool spécial et surveille la gestion des E/S du pilote. Cela détecte une utilisation illégale ou incohérente des routines d’E/S.
Lorsque cette option est active, le Vérificateur de pilotes surveille l’utilisation des verrous tournants, mutex et mutex rapides par le pilote. Cela permet de détecter si le code du pilote pourrait provoquer un blocage à un moment donné.
Vérification améliorée des E/S
Lorsque cette option est active, le Vérificateur de pilotes surveille les appels de plusieurs routines du gestionnaire d’E/S et effectue des tests de résistance sur les IRP PnP, IRP d’alimentation et IRP WMI. Dans Windows 7 et les versions ultérieures du système d’exploitation Windows, toutes les fonctionnalités de la vérification améliorée des E/S sont incluses dans Vérification E/S et il n’est plus nécessaire de sélectionner cette option dans le Gestionnaire du Vérificateur de pilotes ou depuis la ligne de commande.
Lorsque cette option est active, le Vérificateur de pilotes surveille l’utilisation des routines DMA par le pilote. Cela permet de détecter une mauvaise utilisation des tampons DMA, des adaptateurs et des registres de mappage.
(Windows Vista et versions ultérieures) Lorsque cette option est active, le Vérificateur de pilotes recherche des erreurs courantes pouvant entraîner des vulnérabilités de sécurité, telles qu’une référence à des adresses en mode utilisateur par des routines en mode noyau.
(Windows Vista et versions ultérieures) Lorsque cette option est active, le Vérificateur de pilotes recherche les causes courantes de plantages de pilotes, telles que la mauvaise gestion de la mémoire libérée.
Forcer les demandes d’E/S en attente
(Windows Vista et versions ultérieures) Lorsque cette option est active, le Vérificateur de pilotes teste la réponse du pilote aux valeurs de retour STATUS_PENDING en retournant STATUS_PENDING pour des appels aléatoires à IoCallDriver.
(Windows Server 2003 et versions ultérieures) Lorsque cette option est active, le Vérificateur de pilotes surveille l’utilisation des IRP par un pilote et crée un journal d’utilisation des IRP.
(Windows Vista et versions ultérieures) Lorsque cette option est active, le Vérificateur de pilotes surveille un pilote miniport Storport pour une mauvaise utilisation des routines exportées par Storport, des retards excessifs et une mauvaise gestion des requêtes Storport.
Fuzzing différé de Power Framework
(À partir de Windows 8) Lorsque cette option est active, le Vérificateur de pilotes randomise les plannings des threads pour aider à identifier les erreurs de concurrence dans les pilotes qui utilisent le framework de gestion d’alimentation (PoFx). Cette option n’est pas recommandée pour les pilotes qui n’utilisent pas directement le framework de gestion d’alimentation (PoFx).
Vérification de la conformité DDI
(À partir de Windows 8) Lorsque cette option est active, le Vérificateur de pilotes applique un ensemble de règles d’interface de pilotes de périphériques (DDI) qui vérifient l’interaction correcte entre un pilote et l’interface noyau du système d’exploitation.
Vérification MDL invariante pour stack
(À partir de Windows 8) L’option Vérification MDL invariante pour la pile surveille la manière dont le pilote gère les tampons MDL invariants à travers la pile de pilotes. Le Vérificateur de pilotes peut détecter une modification illégale des tampons MDL invariants. Pour utiliser cette option, la Vérification E/S doit être activée sur au moins un pilote.
Vérification MDL invariante pour le pilote
(À partir de Windows 8) L’option Vérification MDL invariante pour le pilote surveille la manière dont le pilote gère les tampons MDL invariants sur une base par pilote. Cette option détecte la modification illégale des tampons MDL invariants. Pour utiliser cette option, vous devez activer la Vérification E/S sur au moins un pilote.
Injection d’échec basée sur la pile
(Disponible uniquement avec Windows 8 et WDK 8) L’option Injection de défaillance basée sur la pile injecte des défaillances de ressources dans les pilotes en mode noyau. Cette option utilise un pilote spécial, KmAutoFail.sys, conjointement avec le Vérificateur de pilotes pour pénétrer les chemins de gestion des erreurs des pilotes.
Simulation systématique de ressources faibles
(À partir de Windows 8.1) L’option Simulation systématique de faibles ressources injecte des défaillances de ressources dans les pilotes en mode noyau.
(À partir de Windows 8.1) Lorsque cette option est active, le Vérificateur de pilotes applique un ensemble de règles NDIS et réseau sans fil (WIFI) qui vérifient l’interaction correcte entre un pilote miniport NDIS et le noyau du système d’exploitation.
Fuzzing du délai de synchronisation du noyau
(À partir de Windows 8.1) Cette option randomise les plannings de threads pour aider à détecter des bugs de concurrence dans les pilotes.
Vérification du commutateur de machine virtuelle
(À partir de Windows 8.1) Cette option surveille les pilotes de filtre (extensions de commutateur extensible) qui s’exécutent à l’intérieur du Commutateur extensible Hyper-V.
Vérification de l’interface Port/Miniport
La vérification de l’interface Port/Miniport permet au Vérificateur de pilotes d’inspecter l’interface DDI entre PortCls.sys et ses pilotes miniports audio, ainsi qu’entre ks.sys et ses pilotes miniports AVStream. Voir Règles pour les pilotes AVStream et Règles pour les pilotes audio.
Vérification de l’intégrité du code
Lors de l’utilisation de la sécurité basée sur la virtualisation pour isoler l’intégrité du code, la seule manière dont la mémoire noyau peut devenir exécutable est via une vérification de l’intégrité du code. Cela signifie que les pages de mémoire du noyau ne peuvent jamais être à la fois écrites et exécutables (W+X) et que le code exécutable ne peut pas être modifié directement. Les vérifications de l’intégrité du code garantissent la compatibilité de ces règles d’intégrité du code et détectent les violations.
La vérification WDF vérifie si un pilote en mode noyau suit correctement les exigences du Kernel-Mode Driver Framework (KMDF).
Vérification IRQL supplémentaire
La vérification IRQL supplémentaire complète les règles de conformité DDI IRQL pour PASSIVE_LEVEL. Elle se compose de deux règles :
- La règle IrqlIoRtlZwPassive spécifie que le pilote appelle les DDI répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL.
- La règle IrqlNtifsApcPassive spécifie que le pilote appelle les DDI répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL ou à IRQL <= APC_LEVEL.
Vérifications d’isolement du pilote
Les vérifications d’isolement du pilote sont essentielles pour valider les exigences d’isolement du package de pilotes en temps réel dans Windows. Pour plus d’informations, consultez Premiers pas dans le développement de pilotes Windows. Les vérifications surveillent les lectures et écritures du registre qui ne sont pas autorisées pour les packages de pilotes isolés.
Paramètres standard
Options incluses dans les paramètres standard |
---|
Vérification améliorée des E/S (Dans Windows 7 et versions ultérieures, cette option est automatiquement activée lorsque vous sélectionnez Vérification E/S) |
Contrôles divers (Windows Vista et les versions ultérieures) |
Vérification de conformité DDI (À partir de Windows 8) |
Options du Vérificateur de pilotes nécessitant la Vérification E/S
Il existe quatre options qui nécessitent que vous activiez d’abord la Vérification E/S. Si la Vérification E/S n’est pas activée, ces options ne sont pas activées.