Controllo dell'integrità del codice

L'integrità della memoria è una funzionalità di sicurezza basata su virtualizzazione disponibile in Windows 10, Windows 11 e Windows Server 2016 e versioni successive. Integrità della memoria e VBS migliorano il modello di minaccia di Windows e forniscono protezioni più forti contro malware che tentano di sfruttare il kernel di Windows. VBS usa l'hypervisor Windows per creare un ambiente virtuale isolato che diventa la radice di attendibilità del sistema operativo che presuppone che il kernel possa essere compromesso. L'integrità della memoria è un componente critico che protegge e protegge Windows eseguendo l'integrità del codice in modalità kernel all'interno dell'ambiente virtuale isolato di VBS. L'integrità della memoria limita anche le allocazioni di memoria del kernel che potrebbero essere usate per compromettere il sistema, assicurando che le pagine di memoria del kernel vengano eseguite solo dopo aver superato i controlli di integrità del codice all'interno dell'ambiente di runtime sicuro e le pagine eseguibili stesse non sono mai scrivibili.

Nota

L'integrità della memoria viene talvolta definita integrità del codice protetta da hypervisor (HVCI) o hypervisor applicata all'integrità del codice ed è stata originariamente rilasciata come parte di Device Guard. Device Guard non viene più usato tranne per individuare l'integrità della memoria e le impostazioni VBS in Criteri di gruppo o nel Registro di sistema di Windows.

L'integrità del codice verifica la compatibilità con i requisiti di utilizzo della memoria kernel dell'integrità della memoria e rileva le violazioni seguenti:

Codice di errore Problema di integrità del codice
0x2000:
  • 2 : indirizzo nel codice del driver in cui è stato rilevato l'errore.
  • 3 - Tipo di pool.
  • 4 - Tag pool (se specificato).

Il chiamante ha specificato un tipo di pool eseguibile. (previsto: NonPagedPoolNx)
0x2001:
  • 2 : indirizzo nel codice del driver in cui è stato rilevato l'errore.
  • 3 - Protezione pagina (WIN32_PROTECTION_MASK).
Il chiamante ha specificato una protezione della pagina eseguibile. (Previsto: PAGE_EXECUTE cancellati* bit)
0x2002:
  • 2 : indirizzo nel codice del driver in cui è stato rilevato l'errore.
  • 3 - Priorità pagina (MM_PAGE_PRIORITY logicamente OR con MdlMapping*).
Il chiamante ha specificato un mapping MDL eseguibile. (previsto: MdlMappingNoExecute).
0x2003:
  • 2 - Nome file immagine (stringa Unicode).
  • 3 : indirizzo dell'intestazione della sezione.
  • 4 - Nome sezione (stringa codificata UTF-8).
L'immagine contiene una sezione eseguibile e scrivibile.
0x2004:
  • 2 - Nome file immagine (stringa Unicode).
  • 3 : indirizzo dell'intestazione della sezione.
  • 4 - Nome sezione (stringa codificata UTF-8).
L'immagine contiene una sezione non allineata alla pagina.
0x2005:
  • 2 - Nome file immagine (stringa Unicode).
  • 3 - Directory IAT.
  • 4 - Nome sezione (stringa codificata UTF-8).
L'immagine contiene un IAT situato in una sezione eseguibile.

Attivazione di questa opzione:

È possibile attivare il controllo dell'integrità del codice per uno o più driver usando Gestione verifica driver o la riga di comando Verifier.exe. Per informazioni dettagliate, vedere Selezione delle opzioni di verifica driver. È necessario riavviare il computer per attivare o disattivare l'opzione di controllo dell'integrità del codice.

  • Nella riga di comando

    Nella riga di comando il controllo dell'integrità del codice è rappresentato da 0x02000000 (Bit 25). Ad esempio:

    verifier /flags 0x02000000 /driver MyDriver.sys

    La funzionalità sarà attiva dopo l'avvio successivo.

  • Uso di Gestione verifica driver

  1. Avviare Gestione verifica driver. Digitare Verifica in una finestra del prompt dei comandi.
  2. Selezionare Crea impostazioni personalizzate (per sviluppatori di codice) e quindi fare clic su Avanti.
  3. Controllo dell'integrità del codice Select(check).
  4. Riavviare il computer.

Implementare il codice compatibile con l'integrità della memoria