Opzioni di verifica driver e classi di regole

In questo argomento vengono descritte le funzionalità e le classi di regole facoltative 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 la memoria in un IRQL non corretto, chiama o rilascia in modo errato blocchi di spin e allocazioni di memoria, commuta in modo errato gli stack o libera il pool di memoria senza prima rimuovere timer, Il verificatore driver 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 versioni 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 seguente), separare ogni intero con un carattere di spazio.

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

Classi di regole standard

Classe Rule ID decimale
Pool speciale 1
Forzare il controllo IRQL 2
Rilevamento pool 4
Verifica di I/O 5
Rilevamento 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 I/O (5) che verrà abilitata automaticamente. I flag contrassegnati con (**) supportano la disabilitazione delle singole regole.

Classe Rule ID decimale
Simulazione di risorse basse casuali 3
Forzare le richieste di I/O in sospeso (*) 10
Registrazione IRP 11
Controllo MDL invariante per stack (*) 14
Controllo MDL invariante per 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 della sincronizzazione del kernel 24
Verifica del commutatore della 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 delle classi di funzionalità e regole facoltative

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 l'overrun della memoria, le sottorun di memoria e la memoria a cui viene eseguito l'accesso dopo che viene liberato.

Forza il controllo IRQL

Quando questa opzione è abilitata, Driver Verifier pone una pressione estrema sulla memoria sul driver invalidando il codice paginabile. Se il driver tenta di accedere alla memoria impaginata in IRQL sbagliato o mentre tiene premuto un blocco di rotazione, Driver Verifier rileva questo comportamento.

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

Quando questa opzione è abilitata, Driver Verifier non riesce in modo casuale le richieste di allocazione del pool e altre richieste di risorse. Inserendo questi errori di allocazione nel sistema, Driver Verifier verifica la capacità del driver di gestire una situazione a bassa risorsa.

Rilevamento 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 gli INDIRIZZI IP del driver da un pool speciale e monitora la gestione dell'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 di blocchi di spin, mutex e mutex veloci. Ciò rileva se il codice del driver ha il potenziale per 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 IRP WMI. In Windows 7 e versioni successive del sistema operativo Windows tutte le funzionalità della verifica avanzata di I/O sono incluse come parte della verifica di I/O e non è più disponibile né necessaria per 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. Questo rileva l'uso non corretto dei buffer, degli adattatori e dei 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.

Forza 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 valori restituiti 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 evitare 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).

Verifica della conformità DDI

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

Controllo MDL invariante per 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 Stack Based Failure Injection 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 relativi driver miniport AVStream. Vedere 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 del 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 Kernel-Mode Driver Framework (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 ai driver di Windows. I controlli monitorano le letture e le scritture del Registro di sistema non consentite per i pacchetti driver isolati.

Impostazioni standard

Opzioni incluse nelle impostazioni standard

Pool speciale

Forza 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 di I/O)

Verifica DMA

Controlli di sicurezza

Controlli vari (Windows Vista e versioni successive)

Verifica 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.