Partager via


Sécurité basée sur la virtualisation (VBS)

La sécurité basée sur la virtualisation, ou VBS, utilise la virtualisation matérielle et l'hyperviseur Windows pour créer un environnement virtuel isolé servant de racine de confiance au système d'exploitation, même si le noyau est compromis. Windows utilise cet environnement isolé pour héberger plusieurs solutions de sécurité, offrant une protection accrue contre les vulnérabilités du système d'exploitation et empêchant les exploits malveillants de contourner les protections. VBS impose des restrictions pour protéger les ressources vitales du système d'exploitation et les ressources de sécurité, telles que les informations d'identification des utilisateurs authentifiés.

L'intégrité de la mémoire est une solution de sécurité qui renforce Windows en exécutant l'intégrité du code en mode noyau dans l'environnement virtuel isolé de VBS. L'intégrité du code en mode noyau est le processus par lequel Windows vérifie tous les pilotes et binaires en mode noyau avant leur lancement, empêchant ainsi les pilotes ou fichiers système non signés ou non fiables d'être chargés en mémoire. L'intégrité de la mémoire restreint également les allocations de mémoire du noyau qui pourraient être utilisées pour compromettre le système, en s'assurant que les pages de mémoire du noyau ne deviennent exécutables qu'après avoir passé les contrôles d'intégrité du code dans l'environnement sécurisé, et que les pages exécutables ne soient jamais accessibles en écriture. Ainsi, même en présence de vulnérabilités comme un dépassement de mémoire tampon permettant aux logiciels malveillants de tenter de modifier la mémoire, les pages de code exécutables ne peuvent pas être modifiées, et la mémoire modifiée ne peut pas être rendue exécutable

Remarque

L'intégrité de la mémoire est également appelée intégrité du code protégée par l'hyperviseur (HVCI) ou intégrité du code appliquée par l'hyperviseur, et a été initialement publiée dans le cadre de Device Guard. Device Guard n'est plus utilisé, sauf pour localiser l'intégrité de la mémoire et les paramètres VBS dans la stratégie de groupe ou le registre Windows.

VBS nécessite la présence et la configuration correcte des composants suivants :

Configuration matérielle Détails
Processeur 64 bits La sécurité basée sur la virtualisation (VBS) exige l'hyperviseur Windows, pris en charge uniquement sur les processeurs IA 64 bits avec extensions de virtualisation, notamment Intel VT-X et AMD-V.
Traduction d’adresse de second niveau (SLAT, Second Level Address Translation) VBS nécessite également que la virtualisation du processeur prenne en charge la traduction d'adresses de second niveau (SLAT), soit Intel VT-X2 avec les tables de pages étendues (EPT), soit AMD-V avec l'indexation de virtualisation rapide (RVI).
IOMMUs ou SMMUs (Intel VT-D, AMD-Vi, Arm64 SMMUs) Tous les appareils d'E/S capables de DMA doivent être placés derrière une IOMMU ou une SMMU. Une IOMMU peut améliorer la résilience du système contre les attaques de la mémoire.
Trusted Platform Module (TPM) 2.0 Pour plus d'informations, consultez Trusted Platform Module (TPM) 2.0.
Prise en charge du microprogramme pour la protection SMM Le microprogramme du système doit respecter les recommandations de durcissement du code SMM de la spécification Windows SMM Security Mitigations Table (WMST). La spécification WMST décrit une table ACPI utilisée avec les systèmes d'exploitation Windows qui prennent en charge les fonctionnalités VBS. Le microprogramme doit mettre en œuvre les protections de la spécification WSMT et définir les indicateurs de protection correspondants, signalant ainsi au système d'exploitation la conformité à ces exigences.
Rapport sur la mémoire de l'interface de microprogramme extensible unifiée (UEFI) Le microprogramme UEFI doit respecter le format de rapport de carte mémoire et les directives d'allocation de mémoire suivants pour être compatible avec VBS.

  • UEFI v2.6 Memory Attributes Table (MAT) - Pour assurer la compatibilité avec VBS, le microprogramme doit séparer proprement les plages de mémoire d'exécution EFI pour le code et les données, et le signaler au système d'exploitation. Une séparation et un rapport corrects des plages de mémoire d'exécution EFI permettent à VBS d'appliquer les protections de page nécessaires aux pages de code des services d'exécution EFI dans la région sécurisée de VBS. Ces informations sont transmises au système d'exploitation via la table EFI_MEMORY_ATTRIBUTES_TABLE. Pour implémenter la MAT UEFI, suivez les lignes directrices suivantes :
    1. L'ensemble du temps d'exécution EFI doit être décrit par cette table.
    2. Tous les attributs appropriés pour les pages EfiRuntimeServicesData et EfiRuntimeServicesCode doivent être marqués.
    3. Ces plages doivent être alignées sur les limites de la page (4 Ko) et ne peuvent pas se chevaucher.
  • Protections de page EFI - Toutes les entrées doivent inclure les attributs EFI_MEMORY_RO, EFI_MEMORY_XP, ou les deux. Toute la mémoire UEFI marquée comme exécutable doit être en lecture seule. La mémoire marquée en écriture ne doit pas être exécutable. Les entrées ne peuvent pas être laissées sans attributs définis, ce qui indiquerait que la mémoire est à la fois exécutable et inscriptible.
  • Secure Memory Overwrite Request (MOR) révision 2 Secure MOR v2 est amélioré pour protéger le paramètre de verrouillage MOR à l'aide d'une variable sécurisée UEFI. Cela permet de se prémunir contre les attaques avancées de la mémoire. Pour plus d'informations, consultez la section Mise en œuvre de Secure MOR.
    Pilotes compatibles avec l'intégrité de la mémoire Assurez-vous que tous les pilotes du système ont été testés et vérifiés pour être compatibles avec l'intégrité de la mémoire. Le kit de pilotes Windows et le vérificateur de pilotes contiennent des tests de compatibilité des pilotes avec l'intégrité de la mémoire. La vérification de la compatibilité des pilotes s'effectue en trois étapes :
    1. Utilisez Driver Verifier avec les contrôles Code Integrity compatibility activés.
    2. Exécutez le test de préparation à l'intégrité du code de l'hyperviseur dans le Windows HLK.
    3. Testez le pilote sur un système où le VBS et l'intégrité de la mémoire sont activés. Cette étape est impérative pour valider le comportement du pilote avec l'intégrité de la mémoire, car les outils d'analyse statique du code ne peuvent pas détecter toutes les violations possibles de l'intégrité de la mémoire au moment de l'exécution.
    Démarrage sécurisé Secure Boot doit être activé sur les appareils utilisant VBS. Pour plus d'informations, consultez Secure Boot.

    VBS fonctionne sur les machines virtuelles prenant en charge la virtualisation imbriquée. Cela inclut toutes les machines virtuelles Gen2 et Gen1 prenant en charge la virtualisation imbriquée. La liste des séries de machines virtuelles prises en charge est détaillée ci-dessous.

    Nom de la série de VM Virtualisation imbriquée Génération de la VM
    Av2 Oui 1 (certaines tailles internes prennent en charge la génération 2)
    G Non 1 et 2
    Dsv2/Dv2/Dv3/Ev3 Oui 1
    Dsv3/Ddsv3 Oui 1 et 2
    Dsv4/Ddsv4 Oui 1 et 2
    Esv3/Edsv3 Oui 1 et 2
    Esv4/Edsv4 Oui 1 et 2
    Ev4/Edv4 Oui Ev4 - 1 uniquement
    Edv4 -1&2
    Dv4/Ddv4 Oui 1 et 2
    Dv5/Ddv5/Dsv5/Ddsv5 Oui 1 et 2
    Ev5/Edv5/Esv5/Edsv5 Oui 1 et 2
    Dasv5/Dadsv5/Easv5/ Eadsv5 Oui 1 et 2
    Ebsv5/Edbsv5 Oui 1 et 2
    Fsv2 Oui 1 et 2
    Fx Oui 2
    Lsv2 Oui 1 et 2

    Pour plus d'informations sur Hyper-V, consultez Hyper-V sur Windows Server 2016 ou Introduction à Hyper-V sur Windows 10. Pour plus d'informations sur l'hyperviseur, consultez Spécifications de l'hyperviseur.