Driver Verifier-Optionen und Regelklassen
Dieses Thema beschreibt die optionalen Funktionen und Regelklassen innerhalb von Driver Verifier. Unter Standardeinstellungen finden Sie eine Liste der Optionen, die enthalten sind, wenn Sie die Standardeinstellungen verwenden.
Hinweis
Einige automatische Prüfungen werden bei einem zu prüfenden Treiber immer durchgeführt, unabhängig davon, welche Optionen ausgewählt wurden. Wenn der Treiber Speicher an einem unzulässigen IRQL verwendet, Spin Locks und Speicherzuweisungen unzulässig aufruft oder freigibt, Stacks unzulässig wechselt oder den Speicherpool freigibt, ohne zuvor die Timer zu entfernen, wird Driver Verifier dieses Verhalten erkennen. Wenn der Treiber entladen wird, überprüft Driver Verifier, ob er seine Ressourcen ordnungsgemäß freigegeben hat.
Aktivieren von Regelklassen mit /ruleclasses
Ab Windows 10, Version 17627 und höher, können Sie Regelklassen mit der folgenden Syntax aktivieren:
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
Beachten Sie, dass Sie bei der Aktivierung mehrerer Klassen (dargestellt durch die unten stehende positive Dezimalzahl) jede Ganzzahl durch ein Leerzeichen trennen.
Die Beschreibungen für diese Regelklassen finden Sie unten.
Standard-Regelklassen
Regelklasse | Dezimale ID |
---|---|
Spezieller Pool | 1 |
IRQL-Überprüfung erzwingen | 2 |
Pool-Verfolgung | 4 |
E/A-Überprüfung | 5 |
Deadlockerkennung | 6 |
DMA-Überprüfung | 8 |
Sicherheitsüberprüfungen | 9 |
Verschiedene Prüfungen | 12 |
Complianceüberprüfung | 18 |
WDF-Überprüfung | 34 |
Zusätzliche Regelklassen
Diese Regelklassen sind für spezielle Testszenarien vorgesehen. Regelklassen, die mit (*) gekennzeichnet sind, erfordern eine E/A-Prüfung (5), die automatisch aktiviert wird. Flags, die mit (**) markiert sind, unterstützen die Deaktivierung einzelner Regeln.
Regelklasse | Dezimale ID |
---|---|
Simulation niedriger Ressourcen nach dem Zufallsprinzip | 3 |
Anstehende E/A-Anfragen erzwingen (*) | 10 |
IRP-Protokollierung | 11 |
Invariante MDL-Überprüfung für Stack | 14 |
Invariant MDL-Prüfung für Treiber (*) | 15 |
Power Framework Delay Fuzzing | 16 |
Überprüfung der Port-/Miniport-Schnittstelle | 17 |
Systematische Simulation geringer Ressourcen | 19 |
DDI-Compliance-Prüfung (zusätzlich) | 20 |
Fuzzing der Kernelsynchronisierungsverzögerung | 24 |
Überprüfung des VM-Switches | 25 |
Code-Integritätsprüfungen | 26 |
Überprüfung der Treiberisolation (erfordert 36) | 33 |
Zusätzliche IRQL-Prüfung | 35 |
Aktivieren der DIF | 36 |
Optionale Funktionen und Regelklassenbeschreibungen
Wenn diese Option aktiviert ist, weist Driver Verifier die meisten Anfragen des Treibers an den Speicher aus einem speziellen Pool zu. Dieser spezielle Pool wird auf Speicherüberschreitung, Speicherunterschreitung und auf Speicher, auf den zugegriffen wird, nachdem er freigegeben wurde, überwacht.
Wenn diese Option aktiviert ist, setzt Driver Verifier den Treiber unter extremen Speicherdruck, indem auslagerbarer Code ungültig gemacht wird. Wenn der Treiber versucht, auf ausgelagerten Speicher mit dem falschen IRQL zuzugreifen oder während er einen Spin Lock hält, erkennt Driver Verifier dieses Verhalten.
Simulation knapper Ressourcen (in Windows 8.1 Zufallsgenerierte Simulation knapper Ressourcen genannt)
Wenn diese Option aktiviert ist, schlägt Driver Verifier Anfragen zur Pool-Zuweisung und andere Anfragen zu Ressourcen nach dem Zufallsprinzip fehl. Indem diese Zuweisungsfehler in das System injiziert werden, testet Driver Verifier die Fähigkeit des Treibers, mit einer Situation mit knappen Ressourcen umzugehen.
Wenn diese Option aktiviert ist, prüft Driver Verifier, ob der Treiber alle seine Speicherzuweisungen freigegeben hat, wenn er entladen wird. Dadurch werden Speicherlecks aufgedeckt.
Wenn diese Option aktiviert ist, weist Driver Verifier die IRPs des Treibers aus einem speziellen Pool zu und überwacht die E/A-Verarbeitung des Treibers. Dadurch wird die illegale oder inkonsistente Verwendung von E/A-Funktionen aufgedeckt.
Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von Spin Locks, Mutexes und Fast Mutexes durch den Treiber. Dadurch wird festgestellt, ob der Code des Treibers irgendwann einmal einen Deadlock verursachen könnte.
Wenn diese Option aktiviert ist, überwacht Driver Verifier die Aufrufe mehrerer E/A-Manager-Routinen und führt Stresstests von PnP IRPs, Power IRPs und WMI IRPs durch. In Windows 7 und neueren Versionen des Windows-Betriebssystems sind alle Funktionen der Erweiterten E/A-Verifizierung als Teil der E/A-Verifizierung enthalten und es ist nicht mehr verfügbar und auch nicht mehr notwendig, diese Option im Driver Verifier Manager oder über die Kommandozeile zu wählen.
Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von DMA-Funktionen durch den Treiber. Dadurch wird die unsachgemäße Verwendung von DMA-Puffern, Adaptern und Zuordnungsregistern erkannt.
(Windows Vista und höher) Wenn diese Option aktiviert ist, sucht Driver Verifier nach allgemeinen Fehlern, die zu Sicherheitsschwachstellen führen können, so z. B. ein Verweis auf Adressen im Benutzermodus durch Funktionen im Kernel-Modus.
(Windows Vista und höher) Wenn diese Option aktiviert ist, sucht Driver Verifier nach allgemeinen Ursachen für Treiberabstürze, wie z. B. die falsche Handhabung von freigegebenem Speicher.
Ausstehende E/A-Anfrage erzwingen
(Windows Vista und höher) Wenn diese Option aktiviert ist, testet Driver Verifier die Reaktion des Treibers auf STATUS_PENDING-Rückgabewerte, indem STATUS_PENDING für zufällige Aufrufe von IoCallDriver zurückgegeben wird.
(Windows Server 2003 und höher) Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von IRPs durch einen Treiber und erstellt eine Log-Datei der IRP-Verwendung.
(Windows Vista und höher) Wenn diese Option aktiviert ist, überwacht Driver Verifier einen Storport-Miniport-Treiber auf die unsachgemäße Verwendung von exportierten Storport-Funktionen, übermäßige Verzögerungen und die unsachgemäße Behandlung von Storport-Anfragen.
(Ab Windows 8) Wenn diese Option aktiviert ist, randomisiert Driver Verifier die Thread-Zeitpläne, um Parallelitätsfehler in den Treibern zu beseitigen, die das Power Management Framework (PoFx) verwenden. Diese Option wird nicht für Treiber empfohlen, die das Power Management Framework (PoFx) nicht direkt nutzen.
(Ab Windows 8) Wenn diese Option aktiviert ist, wendet Driver Verifier eine Reihe von DDI-Regeln (Device Driver Interface) an, die die korrekte Interaktion zwischen einem Treiber und der Kernel-Schnittstelle des Betriebssystems überprüfen.
Invariante MDL-Überprüfung für Stack
(Ab Windows 8) Die Option Invariante-MDL-Prüfung für Stack überwacht, wie der Treiber mit invarianten MDL-Puffern über den Stack des Treibers umgeht. Driver Verifier kann illegale Änderungen an Invariant-MDL Puffern erkennen. Um diese Option zu verwenden, muss die E/A-Überprüfung bei mindestens einem Treiber aktiviert sein.
Invariante MDL-Überprüfung für Treiber
(Ab Windows 8) Die Option Prüfung von Invariant-MDL-Treibern überwacht, wie der Treiber mit invarianten MDL-Puffern umgeht, und zwar auf der Basis einzelner Treiber. Diese Option erkennt illegale Änderungen an Invariant-MDL-Puffern. Um diese Option zu verwenden, müssen Sie die E/A-Überprüfung bei mindestens einem Treiber aktivieren.
Stackbasierte Fehlereinschleusung
(Nur verfügbar mit Windows 8 und WDK 8) Die Option Stack Based Failure Injection injiziert Ressourcen-Fehler in Kernel-Modus-Treiber. Diese Option verwendet einen speziellen Treiber, KmAutoFail.sys, in Verbindung mit Driver Verifier, um in die Fehlerbehandlungspfade der Treiber einzudringen.
Systematische Simulation geringer Ressourcen
(Ab Windows 8.1) Die Option Systematische Simulation knapper Ressourcen injiziert Ressourcen-Fehler in Kernel-Modus-Treiber.
(Ab Windows 8.1) Wenn diese Option aktiviert ist, wendet Driver Verifier eine Reihe von NDIS- und Wireless LAN (WIFI)-Regeln an, die die korrekte Interaktion zwischen einem NDIS-Miniport-Treiber und dem Kernel des Betriebssystems überprüfen.
Fuzzing der Kernelsynchronisierungsverzögerung
(Ab Windows 8.1) Mit dieser Option werden Thread-Zeitpläne zufällig erstellt, um Parallelitätsfehler in Treibern zu erkennen.
(Ab Windows 8.1) Diese Option überwacht Filtertreiber (erweiterbare Switch-Erweiterungen), die innerhalb des Hyper-V Extensible Switch ausgeführt werden.
Überprüfung der Port-/Miniport-Schnittstelle
Mit der Überprüfung der Port-/Miniport-Schnittstelle kann Driver Verifier die DDI-Schnittstelle zwischen PortCls.sys und seinen Audio-Miniport-Treibern sowie ks.sys und seinen AVStream-Miniport-Treibern überprüfen. Siehe Regeln für AVStream-Treiber und Regeln für Audiotreiber.
Überprüfung der Codeintegrität
Wenn Sie virtualisierungsbasierte Sicherheit verwenden, um die Code-Integrität zu isolieren, kann der Kernelspeicher nur durch eine Code-Integritätsprüfung ausführbar werden. Das bedeutet, dass Kernelspeicherseiten nie beschreibbar und ausführbar sein können, und ausführbarer Code kann nicht direkt geändert werden. Die Code-Integritätsprüfungen stellen die Kompatibilität dieser Code-Integritätsregeln sicher und erkennen Verstöße.
Die WDF-Prüfung prüft, ob ein Kernel-Mode-Treiber die Anforderungen des Kernel-Mode Driver Framework (KMDF) korrekt erfüllt.
Zusätzliche IRQL-Prüfung
Die zusätzliche IRQL-Prüfung ergänzt die DDI Compliance Checking IRQL-Regeln für PASSIVE_LEVEL. Sie besteht aus zwei Regeln:
- Die Regel IrqlIoRtlZwPassive legt fest, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er mit IRQL = PASSIVE_LEVEL ausgeführt wird.
- Die Regel IrqlNtifsApcPassive legt fest, dass der Treiber die in der Regel aufgeführten DDIs nur dann aufruft, wenn er entweder bei IRQL = PASSIVE_LEVEL oder bei IRQL <= APC_LEVEL ausgeführt wird.
Treiber-Isolationsüberprüfungen
Treiber-Isolationsprüfungen sind entscheidend für die Überprüfung der Anforderungen an die Isolation des Runtime-Treiberpakets von Windows-Treibern. Weitere Informationen finden Sie unter Erste Schritte bei der Entwicklung von Windows-Treibern. Die Prüfungen überwachen Lese- und Schreibvorgänge in der Registrierung, die für isolierte Treiberpakete nicht zulässig sind.
Standardeinstellungen
In den Standardeinstellungen enthaltene Optionen |
---|
Erweiterte E/A-Prüfung (In Windows 7 und höher wird diese Option automatisch aktiviert, wenn Sie E/A-Prüfung wählen) |
Sonstige Überprüfungen (Windows Vista und höher) |
DDI-Compliance-Prüfung (ab Windows 8) |
Optionen von Driver Verifier, die eine E/A-Prüfung erfordern
Es gibt vier Optionen, für die Sie zunächst die E/A-Überprüfung aktivieren müssen. Wenn die E/A-Prüfung nicht aktiviert ist, sind diese Optionen nicht aktiviert.