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
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.
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.
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.
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.
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.
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.
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.
(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.
(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.
(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.
(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).
(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.
(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.
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 |
---|
Verifica di I/O avanzata (in Windows 7 e versioni successive questa opzione viene attivata automaticamente quando si seleziona Verifica di I/O) |
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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per