Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’option Vérifications de sécurité du vérificateur de pilotes surveille le pilote pour les erreurs courantes qui peuvent entraîner des vulnérabilités de sécurité. Cette option est disponible à partir de Windows Vista.
Plus précisément, l’option Vérifications de sécurité recherche le comportement de pilote incorrect suivant :
Appel des routines ZwXxx du noyau avec des adresses en mode utilisateur en tant que paramètres. Lorsque le pilote appelle des routines ZwXxx , le vérificateur de pilotes vérifie qu’aucun des paramètres n’est des adresses en mode utilisateur. Lors de l’appel d’une routine ZwXxx , le KPROCESSOR_MODE actuel devient KernelMode et tous les paramètres passés à cette routine sont traités comme s’ils sont des adresses en mode noyau. Par conséquent, le pilote doit sonder les mémoires tampons en mode utilisateur reçues des applications et les placer en mémoire en mode noyau (par exemple, dans un bloc de pool ou une structure de données allouée sur la pile du noyau) avant d’appeler la routine ZwXxx du noyau. Le pilote doit utiliser la mémoire tampon capturée plutôt que la mémoire tampon en mode utilisateur comme paramètre de la routine ZwXxx .
Appel des routines du noyau ZwXxx avec des UNICODE_STRINGs mal formés comme paramètres. Lorsque le pilote appelle une routine ZwXxx , le vérificateur de pilotes vérifie tous les paramètres qui sont UNICODE_STRING valeurs. Les erreurs courantes détectées par le vérificateur de pilotes dans ces chaînes de caractères sont les suivantes :
- Le champ de mémoire tampon pointe vers la mémoire en mode utilisateur.
- Les paramètres Length ou MaximumLength sont incorrects. Par exemple, Longueur Maximale<Longueur. Ou l’une ou l’autre de ces valeurs est un nombre impair. Ces deux valeurs doivent toujours être égales, car elles représentent le nombre d’octets utilisés pour représenter une chaîne Unicode.
Appel des routines ZwXxx du noyau avec une structure OBJECT_ATTRIBUTES incorrecte comme paramètre. Lorsque le pilote appelle une routine ZwXxx, Driver Verifier vérifie les paramètres qui sont des structures OBJECT_ATTRIBUTE. Les vérifications pour les adresses en mode utilisateur et les valeurs UNICODE_STRING décrites ci-dessus sont appliquées aux membres de chaque paramètre de structure OBJECT_ATTRIBUTE.
Paramètres incohérents pour Irp->RequestorMode et requête d'E/S. Chaque fois que l’Irp-> RequestorMode est défini sur KernelMode, le vérificateur de pilotes vérifie qu’aucun paramètre de requête d’E/S, Irp-AssociatedIrp.SystemBuffer> ou Irp-UserBuffer>, n’est des adresses en mode utilisateur.
À compter de Windows 7, lorsque vous activez n’importe quelle option de vérificateur de pilote, le vérificateur de pilotes vérifie le comportement du pilote suivant :
Le compteur de référence d’objet passe de 0 à 1. Lorsque le gestionnaire d’objets du noyau Windows crée un objet, tel qu’un objet File ou un objet Thread, le compteur de référence du nouvel objet est défini sur 1. Les appels aux fonctions système telles que ObReferenceObjectByPointer ou ObReferenceObjectByHandle incrémentent le compteur de référence. Chaque appel à ObDereferenceObject pour le même objet décrémente le compteur de référence.
Une fois que le compteur de référence atteint la valeur 0, l’objet devient éligible à la libération. Le gestionnaire d’objets peut le libérer immédiatement, ou il peut le libérer ultérieurement. Le vérificateur de pilotes vérifie les appels subséquents à ObReferenceObjectByPointer et ObReferenceObject pour le même objet. Ces appels modifient le compteur de référence de 0 à 1, ce qui signifie que le pilote a incrémenté le compteur de référence d’un objet déjà libéré. Cela est toujours incorrect, car il peut endommager d’autres allocations de mémoire.
Activation de cette option
Vous pouvez activer l’option Vérifications de sécurité pour un ou plusieurs pilotes à l’aide du Gestionnaire du vérificateur de pilotes ou de la ligne de commande Verifier.exe. Pour plus d’informations, consultez Sélection des options du vérificateur de pilote.
Utilisation de la ligne de commande
Sur la ligne de commande, l’option Vérifications de sécurité est représentée par Bit 8 (0x100). Pour activer les vérifications de sécurité, utilisez une valeur d’indicateur de 0x100 ou ajoutez 0x100 à la valeur de l’indicateur. Par exemple:
verifier /flags 0x100 /driver MyDriver.sysL’option sera active après le redémarrage de l’ordinateur.
À compter de Windows Vista, vous pouvez également activer et désactiver les vérifications de sécurité sans redémarrer l’ordinateur en ajoutant le paramètre /volatile à la commande. Par exemple:
verifier /volatile /flags 0x100 /adddriver MyDriver.sysCe paramètre est effectif immédiatement, mais est perdu lorsque vous arrêtez ou redémarrez l’ordinateur. Pour plus d’informations, consultez Utilisation des paramètres volatiles.
L’option Vérifications de sécurité est également incluse dans les paramètres standard. Par exemple:
verifier /standard /driver MyDriver.sysUtilisation du Gestionnaire du Vérificateur de Pilotes
- Démarrez le Gestionnaire du Vérificateur de pilotes. Tapez Verifier dans une fenêtre de l'invite de commandes.
- Sélectionnez Créer des paramètres personnalisés (pour les développeurs de code), puis cliquez sur Suivant.
- Sélectionnez Sélectionner des paramètres individuels dans une liste complète.
- Sélectionnez Vérifications de sécurité.
La fonctionnalité Vérifications de sécurité est également incluse dans les paramètres standard. Pour utiliser cette fonctionnalité dans le Gestionnaire du vérificateur de pilotes, cliquez sur Créer des paramètres standard.