Abilitare la protezione basata su virtualizzazione dell'integrità del codice

Si applica a

  • Windows 10
  • Windows 11

Questo argomento illustra diversi modi per abilitare l'integrità del codice protetto da Hypervisor in Windows 10 e Windows 11. Alcune applicazioni, inclusi i driver di dispositivo, potrebbero non essere compatibili con HVCI. Questa incompatibilità può causare malfunzionamenti di dispositivi o software e in rari casi può causare uno schermo blu. Problemi di questo tipo possono verificarsi dopo che HVCI è stato attivato o durante il processo stesso di abilitazione. Se si verificano questi problemi, vedere Risoluzione dei problemi relativi alla procedura di correzione.

Nota

Poiché usa il controllo dell'esecuzione basato su modalità, HVCI funziona meglio con Intel Kaby Lake o AMD Zen 2 CPU e versioni successive. I processori senza MBEC si basano su un'emulazione di questa funzionalità, denominata modalità utente con restrizioni, che ha un impatto maggiore sulle prestazioni.

Funzionalità di HVCI

  • HVCI protegge la modifica della bitmap di Control Flow Guard (CFG).
  • HVCI garantisce anche che gli altri processi attendibili, ad esempio Credential Guard, abbiano un certificato valido.
  • I driver di dispositivo moderni devono anche avere un certificato EV (Convalida estesa) e devono supportare HVCI.

Come attivare HVCI in Windows 10 e Windows 11

Per abilitare HVCI nei dispositivi Windows 10 e Windows 11 con hardware di supporto in un'azienda, usare una di queste opzioni:

Sicurezza di Windows'app

HVCI è etichettata come integrità della memoria nell'app Sicurezza di Windows e può essere accessibile tramite Impostazioni>Sicurezza aggiornamenti &>Sicurezza di Windows>Sicurezza del dispositivo>Dettagli> di isolamento coreIntegrità della memoria. Per altre informazioni, vedere KB4096339.

Abilitare HVCI usando Intune

L'abilitazione in Intune richiede l'uso del nodo Integrità del codice nel CSP VirtualizationBasedTechnology. È possibile configurare le impostazioni in Windows usando il catalogo delle impostazioni.

Abilitare HVCI usando Criteri di gruppo

  1. Usare Criteri di gruppo Editor (gpedit.msc) per modificare un oggetto Criteri di gruppo esistente o crearne uno nuovo.

  2. Passare a Configurazione> computerModelli> amministrativi DeviceGuard disistema>.

  3. Fare doppio clic su Attiva sicurezza basata su virtualizzazione.

  4. Fare clic su Abilitato e in Protezione basata sulla virtualizzazione dell'integrità del codice selezionare Abilitato con blocco UEFI per assicurarsi che HVCI non possa essere disabilitato in remoto o selezionare Abilitato senza blocco UEFI.

    Abilitare HVCI usando Criteri di gruppo.

  5. Fare clic su OK per chiudere l'editor.

Per applicare i nuovi criteri in un computer aggiunto a un dominio, riavviare o eseguire gpupdate /force in un prompt dei comandi con privilegi elevati.

Usare le chiavi del Registro di sistema per abilitare la protezione basata su virtualizzazione dell'integrità del codice

Imposta le seguenti chiavi del Registro di sistema per abilitare HVCI. Queste chiavi forniscono esattamente lo stesso set di opzioni di configurazione fornite da Criteri di gruppo.

Importante

  • Tra i comandi seguenti, puoi scegliere le impostazioni per Avvio protetto e Avvio protetto e protezione DMA. Nella maggior parte dei casi ti consigliamo di scegliere Avvio protetto. Questa opzione fornisce l'avvio protetto con la massima protezione supportata dall'hardware di un determinato computer. Un computer con unità di gestione della memoria di input/output (IOMMU) avrà l'avvio protetto e protezione DMA. In un computer senza IOMMU sarà abilitato il semplice avvio protetto.

  • Al contrario, con l'Avvio protetto e protezione DMA, l'impostazione abiliterà l'avvio protetto, e la sicurezza basata su virtualizzazione in sé, solo in un computer che supporta DMA, ovvero un computer con IOMMU. Con questa impostazione, qualsiasi computer senza IOMMU non avrà la protezione VBS o HVCI, anche se può comunque avere Windows Defender Controllo applicazioni abilitato.

  • Tutti i driver nel sistema devono essere compatibili con la protezione basata su virtualizzazione dell'integrità del codice. In caso contrario, possono verificarsi errori di sistema. Ti consigliamo di abilitare queste funzionalità in un gruppo di computer di test prima di abilitarle nei computer degli utenti.

Per Windows 10 versione 1607 e successive e per Windows 11 versione 21H2

Impostazioni consigliate (per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice, senza blocco UEFI):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

Se vuoi personalizzare le impostazioni consigliate precedenti, usa le impostazioni seguenti.

Per abilitare la sicurezza basata su virtualizzazione

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

Per abilitare la sicurezza basata su virtualizzazione e richiedere solo l'avvio protetto (valore 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

Per abilitare VBS con avvio protetto e DMA (valore 3)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

Per abilitare la sicurezza basata su virtualizzazione senza blocco UEFI (valore 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f

Per abilitare VBS con blocco UEFI (valore 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 1 /f

Per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

Per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice senza blocco UEFI (valore 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

Per abilitare la protezione basata sulla virtualizzazione dei criteri di integrità del codice con blocco UEFI (valore 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 1 /f

Per Windows 10 versione 1511 e precedenti

Impostazioni consigliate (per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice, senza blocco UEFI):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t REG_DWORD /d 1 /f

Se vuoi personalizzare le impostazioni consigliate precedenti, usa le impostazioni seguenti.

Per abilitare la sicurezza basata su virtualizzazione (sempre bloccata per UEFI)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

Per abilitare la sicurezza basata su virtualizzazione e richiedere solo l'avvio protetto (valore 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

Per abilitare VBS con avvio protetto e DMA (valore 3)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

Per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice (con blocco UEFI predefinito)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

Per abilitare la protezione basata su virtualizzazione dei criteri di integrità del codice senza blocco UEFI

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t REG_DWORD /d 1 /f

Convalidare le funzionalità di sicurezza basata su hardware di Windows Defender Device Guard

Windows 10, Windows 11 e Windows Server 2016 dispongono di una classe WMI per le proprietà e le funzionalità correlate: Win32_DeviceGuard. È possibile eseguire query su questa classe da una sessione di Windows PowerShell con privilegi elevati, usando il comando seguente:

Get-CimInstance –ClassName Win32_DeviceGuard –Namespace root\Microsoft\Windows\DeviceGuard

Nota

La proprietà Mode Based Execution Control verrà elencata come disponibile solo a partire da Windows 10 versione 1803 e Windows 11 versione 21H2.

L'output di questo comando fornisce informazioni dettagliate sulle funzionalità di sicurezza basate su hardware disponibili e sulle funzionalità attualmente abilitate.

AvailableSecurityProperties

Questo campo consente di enumerare le proprietà di sicurezza appropriate per Windows Defender Device Guard e il relativo stato.

Valore Descrizione
0. Se presente, nel dispositivo non esistono proprietà appropriate.
1. Se presente, il supporto per gli hypervisor è disponibile.
2. Se presente, Avvio protetto è disponibile.
3. Se presente, la protezione DMA è disponibile.
4. Se presente, Proteggi sovrascrittura memoria è disponibile.
5. Se presente, le protezioni NX sono disponibili.
6. Se presente, le prevenzioni SMM sono disponibili.
7. Se presente, è disponibile MBEC/GMET.
8. Se presente, è disponibile la virtualizzazione APIC.

InstanceIdentifier

Una stringa univoca di un particolare dispositivo. I valori validi sono determinati da WMI.

RequiredSecurityProperties

Questo campo descrive le proprietà di sicurezza necessarie per abilitare la sicurezza basata su virtualizzazione.

Valore Descrizione
0. Non ci sono altri requisiti.
1. Se presente, è necessario il supporto per gli hypervisor.
2. Se presente, è necessario l'avvio protetto.
3. Se presente, è necessaria la protezione DMA.
4. Se presente, è necessario Proteggi sovrascrittura memoria.
5. Se presente, sono necessarie le protezioni NX.
6. Se presente, sono necessarie le prevenzioni SMM.
7. Se presente, è necessario MBEC/GMET.

SecurityServicesConfigured

Questo campo indica se Windows Defender Credential Guard o il servizio di integrità del codice applicata da hypervisor è stato configurato.

Valore Descrizione
0. Nessun servizio configurato.
1. Se presente, Windows Defender Credential Guard è configurato.
2. Se presente, il servizio di integrità del codice applicata da hypervisor è configurato.
3. Se presente, Protezione del sistema avvio sicuro è configurato.
4. Se presente, la misurazione del firmware SMM è configurata.

SecurityServicesRunning

Questo campo indica se Windows Defender Credential Guard o il servizio di integrità del codice applicata da hypervisor è in esecuzione.

Valore Descrizione
0. Nessun servizio in esecuzione.
1. Se presente, Windows Defender Credential Guard è in esecuzione.
2. Se presente, il servizio di integrità del codice applicata da hypervisor è in esecuzione.
3. Se presente, Protezione del sistema avvio sicuro è in esecuzione.
4. Se presente, la misurazione del firmware SMM è in esecuzione.

Version

Questo campo elenca la versione di questa classe WMI. Oggi l'unico valore valido è 1.0.

VirtualizationBasedSecurityStatus

Questo campo indica se la sicurezza basata su virtualizzazione è abilitata e in esecuzione.

Valore Descrizione
0. VBS non è abilitato.
1. La sicurezza basata su virtualizzazione è abilitata, ma non in esecuzione.
2. La sicurezza basata su virtualizzazione è abilitata e in esecuzione.

PSComputerName

Questo campo elenca il nome computer. Tutti i valori validi per il nome computer.

Un altro metodo per determinare le funzionalità di sicurezza disponibili e abilitate basate sulla virtualizzazione consiste nell'eseguire msinfo32.exe da una sessione di PowerShell con privilegi elevati. Quando si esegue questo programma, le funzionalità di sicurezza basate sulla virtualizzazione vengono visualizzate nella parte inferiore della sezione Riepilogo sistema .

Funzionalità di sicurezza basate su virtualizzazione nel riepilogo del sistema delle informazioni di sistema.

Risoluzione dei problemi

A. Se un driver di dispositivo non riesce a caricare o si arresta in modo anomalo in fase di runtime, potresti essere in grado di aggiornare il driver utilizzando Gestione dispositivi.

B. Se si verifica un malfunzionamento del software o del dispositivo dopo aver usato la procedura precedente per attivare HVCI, ma si è in grado di accedere a Windows, è possibile disattivare HVCI rinominando o eliminando il file SIPolicy.p7b da <OS Volume>\Windows\System32\CodeIntegrity\ e quindi riavviare il dispositivo.

C. Se si verifica un errore critico durante l'avvio o il sistema è instabile dopo che hai utilizzato la procedura precedente per abilitare HVCI, puoi eseguire il ripristino utilizzando Ambiente ripristino Windows. Per eseguire l'avvio in Ambiente ripristino Windows, vedi la documentazione tecnica su Ambiente ripristino Windows. Dopo aver eseguito l'accesso a Windows RE, è possibile disattivare HVCI rinominando o eliminando il file SIPolicy.p7b da <OS Volume>\Windows\System32\CodeIntegrity\ e quindi riavviare il dispositivo.

Come disattivare HVCI

  1. Eseguire il comando seguente da un prompt con privilegi elevati per impostare la chiave del Registro di sistema HVCI su off:

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
    
  2. Riavvia il dispositivo.

  3. Per verificare la corretta disabilitazione di HVCI, apri Informazioni di sistema e seleziona Servizi di sicurezza basata su virtualizzazione in esecuzione, che adesso non dovrebbe mostrare alcun valore.

Distribuzione HVCI nelle macchine virtuali

HVCI può proteggere una macchina virtuale Hyper-V, proprio come una macchina fisica. I passaggi per abilitare Windows Defender controllo applicazione sono gli stessi dall'interno della macchina virtuale.

WDAC protegge dal malware in esecuzione nella macchina virtuale guest. Non offre protezione aggiuntiva dall'amministratore host. Dall'host è possibile disabilitare WDAC per una macchina virtuale:

Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true

Requisiti per l'esecuzione di HVCI nelle macchine virtuali Hyper-V

  • L'host Hyper-V deve eseguire almeno Windows Server 2016 o Windows 10 versione 1607.
  • La macchina virtuale Hyper-V deve essere di seconda generazione ed eseguire almeno Windows Server 2016 o Windows 10.
  • È possibile abilitare contemporaneamente HVCI e la virtualizzazione annidata . Per abilitare il ruolo Hyper-V nella macchina virtuale, è prima necessario installare il ruolo Hyper-V in un ambiente di virtualizzazione annidato di Windows.
  • Fibre Channel virtuale adattatori non sono compatibili con HVCI. Prima di collegare un adattatore Fibre Channel virtuale a una macchina virtuale, è necessario rifiutare esplicitamente la sicurezza basata su virtualizzazione usando Set-VMSecurity.
  • L'opzione AllowFullSCSICommandSet per i dischi pass-through non è compatibile con HVCI. Prima di configurare un disco pass-through con AllowFullSCSICommandSet, è necessario rifiutare esplicitamente la sicurezza basata su virtualizzazione usando Set-VMSecurity.