Condividi tramite


Opzioni e classi di regole del driver Verifier

In questo argomento vengono descritte le funzionalità facoltative e le classi di regole all'interno di Driver Verifier. Vedere Impostazioni standard per l'elenco delle opzioni incluse quando si usano le impostazioni standard.

Nota

Alcuni controlli automatici vengono sempre eseguiti su un driver verificato, indipendentemente dalle opzioni selezionate. Se il driver usa memoria in un IRQL non corretto, chiama o rilascia in modo non corretto blocchi di selezione e allocazioni di memoria, commutatori non appropriati o libera pool di memoria senza prima rimuovere timer, Driver Verifier rileverà questo comportamento. Quando il driver viene scaricato, Driver Verifier verificherà che abbia rilasciato correttamente le risorse.

Abilitazione delle classi di regole con /ruleclasses

A partire da Windows 10, versione 17627 e successive, è possibile abilitare le classi di regole con la sintassi seguente:

/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]

Si noti che quando si abilitano più classi (rappresentate dal numero intero decimale positivo riportato di seguito), separare ogni intero con un carattere di spazio.

Le descrizioni di queste classi di regole sono disponibili di seguito.

Classi di regole standard

Classe Rule ID decimale
Piscina speciale 1
Forzare il controllo IRQL 2
Monitoraggio pool 4
Verifica di I/O 5
Rilevamento di deadlock 6
Controllo DMA 8
Controlli di sicurezza 9
Controlli vari 12
Controllo della conformità DDI 18
Verifica WDF 34

Classi di regole aggiuntive

Queste classi di regole sono destinate a test specifici dello scenario. Le classi di regole sono contrassegnate con (*) richiedono la verifica di I/O (5) che verrà abilitata automaticamente. I flag contrassegnati con (**) supportano la disabilitazione delle singole regole.

Classe Rule ID decimale
Simulazione casuale di risorse basse 3
Forzare le richieste di I/O in sospeso (*) 10
Registrazione di IRP 11
Controllo MDL invariante per lo stack (*) 14
Controllo MDL invariante per il driver (*) 15
Ritardo della fuzzing del framework di alimentazione 16
Controllo dell'interfaccia porta/miniport 17
Simulazione sistematica di risorse basse 19
Controllo della conformità DDI (aggiuntivo) 20
Ritardo sincronizzazione kernel fuzzing 24
Verifica del commutatore di macchina virtuale 25
Controlli di integrità del codice 26
Controlli di isolamento del driver (richiede 36) 33
Controllo IRQL aggiuntivo 35
Abilitare DIF 36

Descrizioni facoltative delle classi di funzionalità e regole

Pool speciale

Quando questa opzione è abilitata, Driver Verifier alloca la maggior parte delle richieste di memoria del driver da un pool speciale. Questo pool speciale viene monitorato per il sovraccarico della memoria, le sottorune di memoria e la memoria a cui si accede dopo che è stata liberata.

Forzare il controllo IRQL

Quando questa opzione è abilitata, Driver Verifier applica un'estrema pressione di memoria al driver invalidando il codice di paging. Se il driver tenta di accedere alla memoria impaginata in irQL non corretta o mentre tiene premuto un blocco di selezione, Driver Verifier rileva questo comportamento.

Simulazione risorse basse (denominata simulazione di risorse basse casuali in Windows 8.1)

Quando questa opzione è abilitata, Driver Verifier ha esito negativo casualmente nelle richieste di allocazione del pool e in altre richieste di risorse. Inserendo questi errori di allocazione nel sistema, Driver Verifier verifica la capacità del driver di far fronte a una situazione con risorse basse.

Monitoraggio pool

Quando questa opzione è abilitata, Driver Verifier verifica se il driver ha liberato tutte le allocazioni di memoria quando viene scaricato. Ciò rivela perdite di memoria.

Verifica di I/O

Quando questa opzione è attiva, Driver Verifier alloca i runtime di integrazione del driver da un pool speciale e monitora la gestione di I/O del driver. Ciò rileva l'uso illegale o incoerente delle routine di I/O.

Rilevamento deadlock

Quando questa opzione è attiva, Driver Verifier monitora l'uso dei blocchi di rotazione, dei mutex e dei mutex veloci del driver. Ciò rileva se il codice del driver può causare un deadlock a un certo punto.

Verifica di I/O avanzata

Quando questa opzione è attiva, Driver Verifier monitora le chiamate di diverse routine di I/O Manager ed esegue test di stress di PnP IRP, power IRP e WMI IRP. In Windows 7 e versioni successive del sistema operativo Windows, tutte le funzionalità della verifica di I/O avanzata sono incluse come parte della verifica di I/O e non è più disponibile né è più necessario selezionare questa opzione in Gestione verifica driver o dalla riga di comando.

Verifica DMA

Quando questa opzione è attiva, Driver Verifier monitora l'uso delle routine DMA del driver. In questo modo viene rilevato un uso improprio di buffer, adattatori e registri mappa DMA.

Controlli di sicurezza

(Windows Vista e versioni successive) Quando questa opzione è attiva, Driver Verifier cerca errori comuni che possono causare vulnerabilità di sicurezza, ad esempio un riferimento agli indirizzi in modalità utente da routine in modalità kernel.

Controlli vari

(Windows Vista e versioni successive) Quando questa opzione è attiva, Driver Verifier cerca cause comuni di arresti anomali del driver, ad esempio la gestione errata della memoria liberata.

Forzare le richieste di I/O in sospeso

(Windows Vista e versioni successive) Quando questa opzione è attiva, Driver Verifier verifica la risposta del driver a STATUS_PENDING restituire valori restituendo STATUS_PENDING per le chiamate casuali a IoCallDriver.

Registrazione IRP

(Windows Server 2003 e versioni successive) Quando questa opzione è attiva, Driver Verifier monitora l'uso di irP di un driver e crea un log di utilizzo di IRP.

Verifica storport

(Windows Vista e versioni successive) Quando questa opzione è attiva, Driver Verifier monitora un driver miniport Storport per l'uso improprio di routine Storport esportate, ritardi eccessivi e gestione impropria delle richieste Storport.

Ritardo fuzzing di Power Framework

(a partire da Windows 8) Quando questa opzione è attiva, Driver Verifier randomizza le pianificazioni dei thread per eliminare gli errori di concorrenza nei driver che usano il framework di risparmio energia (PoFx). Questa opzione non è consigliata per i driver che non usano direttamente il framework di risparmio energia (PoFx).

Controllo della conformità DDI

(a partire da Windows 8) Quando questa opzione è attiva, Driver Verifier applica un set di regole DDI (Device Driver Interface) che controllano l'interazione corretta tra un driver e l'interfaccia kernel del sistema operativo.

Controllo MDL invariante per lo stack

(a partire da Windows 8) L'opzione Controllo MDL invariante per stack monitora il modo in cui il driver gestisce i buffer MDL invarianti nello stack di driver. Driver Verifier può rilevare modifiche non valide dei buffer MDL invarianti. Per usare questa opzione, la verifica di I/O deve essere abilitata in almeno un driver.

Controllo MDL invariante per driver

(a partire da Windows 8) L'opzione Controllo MDL invariante per driver monitora il modo in cui il driver gestisce i buffer MDL invarianti per ogni driver. Questa opzione rileva modifiche non valide dei buffer MDL invarianti. Per usare questa opzione, è necessario abilitare la verifica di I/O in almeno un driver.

Inserimento di errori basati su stack

(Disponibile solo con Windows 8 e WDK 8) L'opzione Inserimento errori basati su stack inserisce errori di risorse nei driver in modalità kernel. Questa opzione usa un driver speciale, KmAutoFail.sys, insieme a Driver Verifier per penetrare i percorsi di gestione degli errori del driver.

Simulazione sistematica di risorse basse

(A partire da Windows 8.1) L'opzione di simulazione sistematica delle risorse basse inserisce errori di risorse nei driver in modalità kernel.

Verifica NDIS/WIFI

(A partire da Windows 8.1) Quando questa opzione è attiva, Driver Verifier applica un set di regole NDIS e LAN wireless (WIFI) che controllano l'interazione corretta tra un driver miniport NDIS e il kernel del sistema operativo.

Ritardo sincronizzazione kernel fuzzing

(A partire da Windows 8.1) Questa opzione consente di definire in modo casuale le pianificazioni dei thread per rilevare i bug di concorrenza nei driver.

Verifica del commutatore di macchina virtuale

(A partire da Windows 8.1) Questa opzione monitora i driver di filtro (estensioni del commutatore estendibile) eseguiti all'interno del commutatore estendibile Hyper-V.

Controllo dell'interfaccia porta/miniport

Il controllo dell'interfaccia porta/miniport consente a Driver Verifier di controllare l'interfaccia DDI tra PortCls.sys e i relativi driver miniport audio, insieme a ks.sys e ai driver miniport AVStream. Vedi Regole per driver AVStream e regole per i driver audio.

Controllo dell'integrità del codice

Quando si usa la sicurezza basata su virtualizzazione per isolare l'integrità del codice, l'unico modo in cui la memoria del kernel può diventare eseguibile è tramite una verifica dell'integrità del codice. Ciò significa che le pagine di memoria kernel non possono mai essere scrivibili e eseguibili (W+X) e il codice eseguibile non può essere modificato direttamente. L'integrità del codice verifica la compatibilità di queste regole di integrità del codice e rileva le violazioni.

Verifica WDF

La verifica WDF verifica se un driver in modalità kernel segue correttamente i requisiti del framework del driver in modalità kernel (KMDF).

Controllo IRQL aggiuntivo

Il controllo IRQL aggiuntivo aumenta le regole IRQL di controllo della conformità DDI per PASSIVE_LEVEL. È costituito da due regole:

  • La regola IrqlIoRtlZwPassive specifica che il driver chiama le DDI elencate nella regola solo quando viene eseguito in IRQL = PASSIVE_LEVEL.
  • La regola IrqlNtifsApcPassive specifica che il driver chiama le DDI elencate nella regola solo quando viene eseguito in IRQL = PASSIVE_LEVEL o in IRQL <= APC_LEVEL.

Controlli di isolamento driver

I controlli di isolamento driver sono fondamentali per convalidare i requisiti di isolamento del pacchetto driver di runtime dei driver di Windows Per altre informazioni, vedere Introduzione allo sviluppo di driver Windows. I controlli monitorano le letture e le scritture del Registro di sistema che non sono consentite per i pacchetti driver isolati.

Impostazioni standard

Opzioni incluse nelle impostazioni standard

Pool speciale

Forzare il controllo IRQL

Monitoraggio pool

Verifica di I/O

Rilevamento deadlock

Verifica di I/O avanzata (in Windows 7 e versioni successive questa opzione viene attivata automaticamente quando si seleziona Verifica I/O)

Verifica DMA

Controlli di sicurezza

Controlli vari (Windows Vista e versioni successive)

Controllo della conformità DDI (a partire da Windows 8)

Opzioni di Verifica driver che richiedono la verifica di I/O

Sono disponibili quattro opzioni che richiedono prima di tutto di abilitare la verifica di I/O. Se la verifica di I/O non è abilitata, queste opzioni non sono abilitate.