ArticleCybersécurité & Conformité
Comprendre les enclaves VBS, derniers remparts de la sécurité de Windows
Récemment, Microsoft a annoncé des efforts pour améliorer la sécurité de son assistant d'intelligence artificielle Recall. De nombreux détails n'ont pas été une surprise car ils s'appuient sur des outils et des services existants, mais la fonctionnalité la plus importante d'enclaves de sécurité basée sur la virtualisation (VBS), est inédite et cela vaut la peine de s'y intéresser.

VBS Enclaves constitue l'un des derniers efforts déployés par Microsoft pour utiliser la virtualisation afin de sécuriser Windows en isolant les fonctions critiques dans des machines virtuelles chiffrées à l'aide de son hyperviseur de bas niveau Krypton. Ce dernier est un élément important du Windows moderne, car il permet aux machines virtuelles et au système d'exploitation hôte de partager un planificateur, ce qui isole du reste du système d'exploitation des fonctions telles que la connexion à Windows. Elles peuvent ainsi continuer à s'exécuter comme des fonctions Windows tout en protégeant les mots de passe et les informations biométriques. Elles restent isolées, et les logiciels malveillants qui s'exécutent dans l'instance Windows hôte ne peuvent pas y accéder. Krypton est à la base d'une grande partie de la sécurité matérielle de Windows 11. Il travaille avec les modules de plate-forme de confiance (TPM) du PC pour gérer les clés de chiffrement, les signatures numériques et les hachages de vérification. Il s'agit d'un moyen de réduire considérablement le risque de fuite d'informations sensibles de votre PC, ainsi que le risque que des logiciels malveillants remplacent ce qui serait normalement des fonctions Windows de confiance.
La sécurité basée sur la virtualisation (VBS) est dans le collimateur de Microsoft depuis longtemps, avec un héritage qui remonte à Windows Server 2016 et à l'introduction des conteneurs Secure Windows. Bien que la prise en charge par Windows de Docker et d'autres outils d'isolation des applications basées sur des conteneurs ait permis une certaine forme d'isolation des processus, elle n'était pas parfaite. Les conteneurs Secure Windows ont mélangé à la fois les conteneurs et l'outil de sécurité d'Hyper-V pour ajouter plus d'isolation en hébergeant des conteneurs sécurisés dans une machine virtuelle plutôt que sur le système d'exploitation hôte. Cela a ajouté les frais généraux liés à l'exécution d'un système d'exploitation distinct pour vos conteneurs d'application, mais des fonctionnalités telles que Nano Server et Windows Server Core ont permis de les réduire au minimum, les versions successives réduisant considérablement la taille des images de serveur.
La sécurité basée sur la virtualisation dans Windows 11
Microsoft a combiné cette approche avec les capacités TPM pour ajouter une sécurité accrue à Windows au fil du temps, en l'appliquant à Windows 11. C'est pourquoi cet OS exige un matériel prenant en charge les TPM 2.0. Ces derniers contiennent les clés et les certificats pour gérer les signatures numériques afin que des outils tels que le service d'intégrité de la mémoire de Windows puissent fonctionner dans un environnement virtualisé renforcé à l'aide de VM sécurisées par Hyper-V et tourner sur Krypton. Grâce à l'intégrité de la mémoire, les pilotes et les binaires en mode noyau sont contrôlés pour vérifier la validité des signatures avant d'être exécutés ; le code non signé est bloqué avant qu'il ne puisse compromettre votre PC. La firme de Redmond a récemment étendu son modèle de sécurité basé sur la virtualisation à ce qu'elle appelle les enclaves VBS. Si vous avez envisagé de mettre en œuvre l'informatique confidentielle sur Windows Server ou dans Azure, vous connaissez le concept des enclaves, qui utilise le jeu d'instructions SGX d'Intel pour verrouiller des zones de mémoire et les utiliser comme un environnement d'exécution de confiance. Cette approche nécessite des processeurs spécifiques, la dernière génération de SGX étant limitée au matériel Xeon d'entreprise.
Les enclaves VBS offrent une approche similaire pour sécuriser la mémoire, mais sans nécessiter de matériel spécifique. Cela permet à Microsoft de fournir des enclaves sécurisées sur le matériel Intel, AMD et Arm. Ainsi, Recall ne s'exécutera que dans une mémoire de confiance sous le contrôle de l'hyperviseur Krypton, avec des clés de chiffrement gérées par le TPM de votre PC et un accès contrôlé par Windows Hello pour garantir la présence de l'utilisateur. La mise en place d'un environnement d'exécution de confiance sur un PC n'est pas seulement utile pour sécuriser l'IA. Il protège les données sensibles, ajoutant un nouveau niveau de protection au-delà de la protection au repos et en mouvement : en cours d'utilisation. Bien que la définition et l'utilisation d'une Enclave VBS requièrent davantage de travail, cela vaut la peine d'avoir plus de sécurité avec un impact limité sur les performances. Grâce aux outils d'intégrité de la mémoire de Windows 11, une enclave VBS utilise l'hyperviseur intégral de Windows pour créer une nouvelle zone de mémoire système isolée et à privilèges élevés : Virtual Trust Level 1 (niveau de confiance virtuel 1). La majeure partie de votre code, et Windows lui-même, continue de fonctionner au niveau de confiance virtuel 0. VTL 1 est utilisé par une version sécurisée du noyau Windows, avec son propre mode utilisateur isolé. C'est là que s'exécute votre enclave VBS, dans le cadre d'une application qui semble franchir la frontière entre les deux zones. En réalité, vous séparez l'enclave VTL 1 et utilisez des canaux sécurisés pour communiquer avec elle du reste de votre application dans la VTL 0.
Utilisation des enclaves VBS dans les applications
Comment construire et utiliser des enclaves VBS ? Tout d'abord, vous aurez besoin de Windows 11 ou de Windows Server 2019 ou d'une version ultérieure, avec VBS activé. Vous pouvez le faire à partir de l'outil de sécurité Windows, via une stratégie de groupe, ou avec Intune pour le contrôler via MDM. Il fait partie du service d'intégrité de la mémoire, donc vous devriez vraiment l'activer sur tous les appareils pris en charge pour aider à réduire les risques de sécurité, même si vous ne prévoyez pas d'utiliser les enclaves VBS dans votre code. La meilleure façon de l'envisager est d'utiliser le stockage crypté en toute sécurité. Par exemple, si vous utilisez une base de données pour stocker des données sensibles, vous pouvez utiliser un code s'exécutant dans une enclave pour traiter et interroger ces données, en transmettant les résultats au reste de votre application. Vous encapsulez les données dans un environnement sécurisé où seul l'accès essentiel est autorisé. Aucune autre partie de votre système n'a accès aux clés de décryptage, de sorte que les données sur disque restent sécurisées.
Le code exécuté dans l'environnement VTL 1 doit être signé par Microsoft, avec un transfert au niveau du système d'exploitation entre les deux zones de confiance qui réinitialise les registres du processeur afin de réduire le risque de transfert d'état entre des modes utilisateur relativement peu sûrs et votre Enclave VBS. L'utilisation d'une enclave VBS est naturellement plus coûteuse en termes de calcul et les opérations sont plus longues à exécuter (bien qu'elles ne durent que quelques microsecondes). Les enclaves VBS sont des DLL et nécessitent une application hôte pour fonctionner. Vous êtes limité à un sous-ensemble des API C++ disponibles au niveau du système Windows, avec une liste des API Universal C Runtime disponibles dans la documentation de développement. Les autres API prises en charge sont celles du VBS Enclave Runtime (Vertdll) et de la bibliothèque cryptographique Bcrypt.
Mettre le pied à l'étrier
Microsoft fournit un exemple d'application utile qui illustre le cycle de vie d'une application basée sur une enclave VBS, en montrant comment appeler les fonctions enclavées à partir de l'application hôte. Les fonctions externes doivent être explicitement exportées et seules ces fonctions peuvent être appelées par l'hôte. La compilation d'une enclave nécessite une configuration spécifique de l'éditeur de liens, garantissant que les bonnes bibliothèques sont incluses et que la DLL résultante est correctement instrumentée. D'autres caractéristiques garantissent que l'enclave VBS est protégée contre les attaques par des DLL de plate-forme falsifiées. Une fois compilé, votre code doit être signé. La signature de l'enclave VBS nécessite trois EKU (Extended Key Usage) spécifiques : un pour la signature du code, un pour l'enclave et un pour l'auteur. En production, vous pouvez utiliser le service Trusted Signing de Microsoft, qui propose un profil pour la signature des enclaves. Cette approche vous permet d'automatiser la signature à l'aide de la CLI Azure. Il y a quelques points importants à prendre en compte lors de l'écriture de code utilisant des enclaves VBS. Elles peuvent être chargées par n'importe quelle application s'exécutant sur le PC hôte, de sorte que vous devez écrire du code dans l'enclave qui traite explicitement tout ce qui se trouve en dehors de l'enclave comme n'étant pas fiable.
Une sécurité essentielle pour les données sensibles
La même technologie est utilisée pour Azure SQL et la fonction Always Encrypted de SQL Server. Cette approche garantit que seuls les utilisateurs autorisés ont accès aux données sensibles. Les opérations T-SQL peuvent franchir la limite de l'enclave sécurisée en utilisant des requêtes confidentielles sur un canal TLS interne. Les opérations se déroulent à l'intérieur de l'enclave, ce qui permet aux données sous-jacentes de toujours rester chiffrées. Les enclaves VBS sont nécessairement complexes et comportent des restrictions importantes par rapport aux DLL standard. Cependant, sans ces contraintes, elles ne seraient pas plus sûres qu'une DLL standard. En verrouillant le code au niveau de la bibliothèque et de l'en-tête pour qu'il s'exécute dans un environnement d'exécution fiable, vous réduisez considérablement le risque de fuite de données, qu'elle soit délibérée ou accidentelle. Bien que cela prenne un peu plus de temps et nécessite quelques ressources système supplémentaires, si vous travaillez avec des informations sensibles, c'est un compromis qui vaut la peine d'être fait. L'utilisation des enclaves VBS et du stockage chiffré devrait être essentielle partout où vous utilisez des informations personnellement identifiables, qu'il s'agisse de l'historique de rappel indexé par vecteur d'un utilisateur, d'informations de paiement stockées ou de dossiers médicaux. S'il existe un risque quelconque associé aux données, il faut vraiment avoir une raison impérieuse de ne pas utiliser cette technologie. Lorsqu'il s'agit de données sensibles, les enclaves VBS devraient être le choix par défaut.


