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

L'integrità della memoria è una funzionalità di sicurezza basata su virtualizzazione (VBS) disponibile in Windows. L'integrità della memoria e vbs migliorano il modello di minaccia di Windows e offrono protezioni più avanzate contro il malware che tenta di sfruttare il kernel di Windows. VBS usa l'hypervisor di Windows per creare un ambiente virtuale isolato che diventa la radice dell'attendibilità del sistema operativo che presuppone che il kernel possa essere compromesso. L'integrità della memoria è un componente critico che protegge e rafforza 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 possono essere usate per compromettere il sistema.

Nota

  • L'integrità della memoria è talvolta definita integrità del codice protetta da hypervisor (HVCI) o integrità del codice applicata dall'hypervisor ed è stata originariamente rilasciata come parte di Device Guard. Device Guard non viene più usato se non per individuare l'integrità della memoria e le impostazioni VBS in Criteri di gruppo o nel Registro di sistema di Windows.
  • L'integrità della memoria funziona meglio con Intel Kabylake e processori superiori con controllo dell'esecuzione basato sulla modalità e processori AMD Zen 2 e superiori con funzionalità Execute Trap in modalità guest . I processori meno recenti si basano su un'emulazione di queste funzionalità, denominata modalità utente con restrizioni, e avranno un impatto maggiore sulle prestazioni. Quando la virtualizzazione annidata è abilitata, l'integrità della memoria funziona meglio quando la macchina virtuale è la versione >= 9.3.

Warning

Alcune applicazioni e driver di dispositivo hardware potrebbero non essere compatibili con l'integrità della memoria. Questa incompatibilità può causare il malfunzionamento di dispositivi o software e in rari casi può causare un errore di avvio (schermata blu). Tali problemi possono verificarsi dopo che l'integrità della memoria è stata attivata o durante il processo di abilitazione stesso. Se si verificano problemi di compatibilità, vedere Risoluzione dei problemi relativi alla procedura di correzione.

Funzionalità di integrità della memoria

  • Protegge la modifica della bitmap di Control Flow Guard (CFG) per i driver in modalità kernel.
  • Protegge il processo di integrità del codice in modalità kernel che garantisce che altri processi kernel attendibili abbiano un certificato valido.

Come attivare l'integrità della memoria

Per abilitare l'integrità della memoria nei dispositivi Windows con hardware di supporto in un'azienda, usare una di queste opzioni:

Sicurezza di Windows

L'integrità della memoria può essere attivata nelle impostazioni di Sicurezza di Windows e disponibile in Sicurezza di Windows> I dettagli diisolamento> dei core di sicurezza> del dispositivoIntegrità della memoria. Per altre informazioni, vedere Protezione dei dispositivi in Sicurezza di Windows.

A partire da Windows 11 22H2, Sicurezza di Windows visualizza un avviso se l'integrità della memoria è disattivata. L'indicatore di avviso viene visualizzato anche sull'icona Sicurezza di Windows nella barra delle applicazioni di Windows e nel Centro notifiche di Windows. L'utente può ignorare l'avviso dall'interno di Sicurezza di Windows.

Abilitare l'integrità della memoria usando Intune

Usare l'impostazione Virtualization Based Technology>Hypervisor Enforced Code Integrity usando il catalogo delle impostazioni per abilitare l'integrità della memoria. È anche possibile usare il nodo HypervisorEnforcedCodeIntegrity nel CSP VirtualizationBasedTechnology.

Abilitare l'integrità della memoria 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. Selezionare Abilitato e in Protezione basata su virtualizzazione dell'integrità del codice selezionare Abilitato senza blocco UEFI. Selezionare Abilitato con blocco UEFI solo se si vuole impedire che l'integrità della memoria venga disabilitata in remoto o tramite l'aggiornamento dei criteri. Una volta abilitato con il blocco UEFI, è necessario avere accesso al menu DEL BIOS UEFI per disattivare l'avvio protetto se si vuole disattivare l'integrità della memoria. Abilitare l'integrità della memoria usando Criteri di gruppo.
  5. Selezionare 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 l'integrità della memoria

Impostare le chiavi del Registro di sistema seguenti per abilitare l'integrità della memoria. 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 offre all'avvio protetto la 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.

  • Se si seleziona Avvio protetto con DMA, l'integrità della memoria e le altre funzionalità VBS verranno attivate solo per i computer che supportano DMA. Ovvero, solo per i computer con IOMMU. Qualsiasi computer senza IOMMU non avrà protezione dall'integrità della memoria o vbS.

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

Impostazioni consigliate (per abilitare l'integrità della memoria 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 si desidera personalizzare le impostazioni consigliate precedenti, usare le chiavi del Registro di sistema seguenti.

Per abilitare solo VBS (nessuna integrità della memoria)

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 l'integrità della memoria

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

Per abilitare l'integrità della memoria senza blocco UEFI (valore 0)

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

Per abilitare l'integrità della memoria con il blocco UEFI (valore 1)

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

Per inattivare l'interfaccia utente di integrità della memoria e visualizzare il messaggio "Questa impostazione è gestita dall'amministratore"

reg delete HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity /v "WasEnabledBy" /f

Per consentire il comportamento normale dell'interfaccia utente dell'integrità della memoria (non disattivata)

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

Abilitare l'integrità della memoria usando Windows Defender controllo delle applicazioni (WDAC)

È possibile usare i criteri WDAC per attivare l'integrità della memoria usando una delle tecniche seguenti:

  1. Usare la Creazione guidata WDAC per creare o modificare i criteri WDAC e selezionare l'opzione Integrità del codice protetta da Hypervisor nella pagina Regole dei criteri della procedura guidata.
  2. Usare il cmdlet Di PowerShell Set-HVCIOptions .
  3. Modificare il codice XML dei criteri WDAC e modificare il valore impostato per l'elemento <HVCIOptions> .

Nota

Se il criterio WDAC è impostato per attivare l'integrità della memoria, verrà attivato anche se il criterio è in modalità di controllo.

Convalidare le funzionalità di integrità della memoria e vbs abilitate

Usare Win32_DeviceGuard classe WMI

Windows 10, Windows 11 e Windows Server 2016 e versioni successive hanno una classe WMI per le proprietà e le funzionalità correlate a VBS: 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. Questo valore viene segnalato sia per il controllo dell'esecuzione basato sulla modalità di Intel che per le funzionalità di esecuzione trap in modalità guest di AMD.

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 e segnalare lo stato sulle proprietà di sicurezza rilevanti per VBS e l'integrità della memoria.

Value 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

Stringa univoca per un dispositivo specifico e impostata da WMI.

RequiredSecurityProperties

Questo campo descrive le proprietà di sicurezza necessarie per abilitare VBS.

Value 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 Credential Guard o l'integrità della memoria è configurata.

Value Descrizione
0 Nessun servizio configurato.
1 Se presente, Credential Guard è configurato.
2 Se presente, viene configurata l'integrità della memoria.
3 Se presente, Protezione del sistema avvio sicuro è configurato.
4 Se presente, la misurazione del firmware SMM è configurata.
SecurityServicesRunning

Questo campo indica se Credential Guard o l'integrità della memoria è in esecuzione.

Value Descrizione
0 Nessun servizio in esecuzione.
1 Se presente, Credential Guard è in esecuzione.
2 Se presente, l'integrità della memoria è 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.

Usare msinfo32.exe

Un altro metodo per determinare le funzionalità VBS disponibili e abilitate consiste nell'eseguire msinfo32.exe da una sessione di PowerShell con privilegi elevati. Quando si esegue questo programma, le funzionalità VBS 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

  • Se un driver di dispositivo non riesce a caricare o si arresta in modo anomalo in fase di esecuzione, potrebbe essere possibile aggiornare il driver usando Gestione dispositivi.
  • Se si verifica un errore critico durante l'avvio o il sistema è instabile dopo l'attivazione dell'integrità della memoria, è possibile eseguire il ripristino usando Ambiente ripristino Windows (Ambiente ripristino Windows).
    1. Prima di tutto, disabilitare tutti i criteri usati per abilitare l'integrità di VBS e memoria, ad esempio Criteri di gruppo.

    2. Eseguire quindi l'avvio in Windows RE nel computer interessato, vedere Informazioni di riferimento tecnico su Re di Windows.

    3. Dopo aver eseguito l'accesso a Windows RE, impostare la chiave del Registro di sistema di integrità della memoria su off:

      reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
      
    4. Infine, riavviare il dispositivo.

Nota

Se l'integrità della memoria è stata attivata con il blocco UEFI, sarà necessario disabilitare l'avvio protetto per completare i passaggi di ripristino di Windows RE.

Distribuzione dell'integrità della memoria nelle macchine virtuali

L'integrità della memoria può proteggere una macchina virtuale Hyper-V, proprio come una macchina fisica. I passaggi per abilitare l'integrità della memoria sono gli stessi dall'interno della macchina virtuale.

L'integrità della memoria protegge dal malware in esecuzione nella macchina virtuale guest. Non offre protezione aggiuntiva dall'amministratore host. Dall'host è possibile disabilitare l'integrità della memoria per una macchina virtuale:

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

Requisiti per l'esecuzione dell'integrità della memoria 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.
  • L'integrità della memoria e la virtualizzazione annidata possono essere abilitate contemporaneamente. 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 l'integrità della memoria. 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 l'integrità della memoria. Prima di configurare un disco pass-through con AllowFullSCSICommandSet, è necessario rifiutare esplicitamente la sicurezza basata su virtualizzazione usando Set-VMSecurity.