sicurezza basata sulla virtualizzazione (VBS)

La sicurezza basata sulla virtualizzazione, o VBS, usa le funzionalità di virtualizzazione hardware per creare e isolare un'area di memoria sicura dal normale sistema operativo. Windows possibile usare questa "modalità sicura virtuale" per ospitare una serie di soluzioni di sicurezza, offrendo una protezione notevolmente maggiore dalle vulnerabilità del sistema operativo e impedendo l'uso di exploit dannosi che tentano di sfasare le protezioni.

Una di queste soluzioni di sicurezza di esempio è l'integrità del codice Hypervisor-Enforced (HVCI), comunemente definita integrità della memoria, che usa vbs per rafforzare significativamente l'applicazione dei criteri di integrità del codice. L'integrità del codice in modalità kernel controlla tutti i driver e i file binari in modalità kernel prima dell'avvio e impedisce il caricamento di driver o file di sistema non firmati nella memoria di sistema.

VBS usa l'hypervisor Windows per creare questa modalità protetta virtuale e per applicare restrizioni che proteggono le risorse vitali del sistema e del sistema operativo o per proteggere gli asset di sicurezza, ad esempio le credenziali utente autenticate. Con le maggiori protezioni offerte da VBS, anche se il malware ottiene l'accesso al kernel del sistema operativo, i possibili exploit possono essere notevolmente limitati e contenuti, perché l'hypervisor può impedire al malware di eseguire codice o accedere ai segreti della piattaforma.

Analogamente, i criteri di integrità del codice configurabili in modalità utente controllano le applicazioni prima che siano caricate e avviano solo i file eseguibili firmati da firmatari noti e approvati. HVCI sfrutta vbs per eseguire il servizio di integrità del codice all'interno di un ambiente sicuro, offrendo protezione più avanzata da virus del kernel e malware. L'hypervisor, il livello con privilegi più elevati del software di sistema, imposta e applica le autorizzazioni di pagina in tutta la memoria di sistema. Le pagine vengono rese eseguibili solo dopo che sono stati superati i controlli di integrità del codice all'interno dell'area protetta e le pagine eseguibili non sono scrivibili. In questo modo, anche se esistono vulnerabilità come un overflow del buffer che consentono al malware di tentare di modificare la memoria, le pagine di codice non possono essere modificate e la memoria modificata non può essere resa eseguibile.

VBS richiede che i componenti seguenti siano presenti e configurati correttamente.

Si noti che il TPM non è un requisito obbligatorio, ma è consigliabile implementare il TPM.

Requisito hardware Dettagli
CPU a 64 bit La sicurezza basata sulla virtualizzazione richiede l'hypervisor Windows, supportato solo nei processori IA a 64 bit con estensioni di virtualizzazione, tra cui Intel VT-X e AMD-v.
Conversione indirizzi di secondo livello (SLAT) VBS richiede anche che il supporto della virtualizzazione del processore includa SLAT (Second Level Address Translation), Intel VT-X2 con Extended Page Tables (EPT) o AMD-v con Rapid Virtualization Indexing (RVI).
IOMMU o SMMU (Intel VT-D, AMD-Vi, ARM64 SMMUs) Tutti i dispositivi di I/O in grado di DMA devono essere dietro un dispositivo IOMMU o SMMU. Un IOMMU può essere usato per migliorare la resilienza del sistema contro gli attacchi alla memoria.
Trusted Platform Module (TPM) 2.0 I TPM, discreti o firmware, saranno sufficiente. Per altre informazioni, vedere Trusted Platform Module (TPM) 2.0.
Supporto del firmware per la protezione SMM Il firmware di sistema deve rispettare le raccomandazioni per la protezione avanzata del codice SMM descritto nella specifica Windows SMM Security Mitigations Table (WMST). La specifica WSMT contiene i dettagli di una tabella ACPI creata per l'utilizzo con i sistemi operativi Windows che supportano le funzionalità di sicurezza basata su virtualizzazione di Windows. Il firmware deve implementare le protezioni descritte nella specifica WSMT e impostare i flag di protezione corrispondenti come descritto nella specifica per segnalare la conformità a questi requisiti al sistema operativo.
Creazione di report Extensible Firmware Interface unificati (UEFI) Affinché il firmware garantisca la compatibilità con VBS, il firmware UEFI deve rispettare le seguenti linee guida per il formato di creazione di report della mappa della memoria e l'allocazione della memoria.

  • Tabella degli attributi di memoria UEFI v2.6 (MAT) - Per garantire la compatibilità con VBS, il firmware deve separare in modo pulito gli intervalli di memoria di runtime EFI per il codice e i dati e segnalare questo al sistema operativo. La separazione e la creazione di report adeguati degli intervalli di memoria di runtime EFI consentono a VBS di applicare le protezioni di pagina necessarie alle code page dei servizi di runtime EFI all'interno dell'area protetta vbs. La trasmissione di queste informazioni al sistema operativo viene eseguita usando il EFI_MEMORY_ATTRIBUTES_TABLE. Per implementare UEFI MAT, seguire queste linee guida:
    1. L'intero runtime EFI deve essere descritto da questa tabella.
    2. Tutti gli attributi appropriati per le pagine EfiRuntimeServicesData ed EfiRuntimeServicesCode devono essere contrassegnati.
    3. Questi intervalli devono essere allineati ai limiti di pagina (4 KB) e non possono sovrapporsi.
  • Protezione delle pagine EFI - Tutte le voci devono includere attributi EFI_MEMORY_RO, EFI_MEMORY_XP o entrambi. Tutta la memoria UEFI contrassegnata come eseguibile deve essere di sola lettura. La memoria contrassegnata come scrivibile non deve essere eseguibile. Le voci non possono essere lasciati con nessuno degli attributi impostati, a indicare la memoria eseguibile e scrivibile.
  • Richiesta di sovrascrittura della memoria sicura (MOR) revisione 2 Secure MOR v2 è stato migliorato per proteggere l'impostazione di blocco MOR usando una variabile sicura UEFI. Ciò consente di proteggersi da attacchi avanzati alla memoria. Per informazioni dettagliate, vedere Secure MOR implementation (Implementazione sicura di MOR).
    Driver compatibili con HVCI (Hypervisor Code Integrity) Verificare che tutti i driver di sistema siano stati testati e verificati per essere compatibili con HVCI. Il Windows Driver Kit e Driver Verifier contengono test per la compatibilità HVCI del driver. Per verificare la compatibilità dei driver, è necessario eseguire quattro passaggi:
    1. Usare Driver Verifier con i nuovi controlli di compatibilità dell'integrità del codice abilitati.
    2. Eseguire il test di conformità dell'integrità del codice dell'hypervisor Windows HLK.
    3. Testare il driver in un sistema con VBS e HVCI abilitati. Questo passaggio è fondamentale per convalidare il comportamento del driver con HVCI, perché gli strumenti di analisi del codice statici non sono semplicemente in grado di rilevare tutte le violazioni di HVCI possibili in fase di esecuzione.
    4. Usare lo strumento DGReadiness.

    Per altre informazioni su Hyper-V, vedere Hyper-V in Windows Server 2016o Introduzione a Hyper-V in Windows 10. Per altre informazioni sull'hypervisor, vedere Specifiche dell'hypervisor.