En 2017, une faille critique dans le très populaire hyperviseur open source Xen permet à des attaquants de s’introduire dans un système d’exploitation invité tournant à l’intérieur d’une machine virtuelle et d’accéder à toute la mémoire du système hôte. Cette violation grave de la barrière de sécurité nous mène à se poser des questions autour de la sécurité des hyperviseurs.
L’hyperviseur est le composant logiciel qui contrôle l’accès aux ressources de l’hôte et est responsable du cloisonnement entre les machines virtuelles, c’est donc un composant critique du point de vue de la sécurité.
Dans cet article, on abordera les vulnérabilités et attaques susceptibles de se produire au niveau des hyperviseurs, on parlera par la suite des différentes techniques utilisées afin de protéger les environnement virtualisés.
When Virtual is Harder than Real:Garfinkel et Rosenblum
L’article de Garfinkel et Rosenblum de l’université de Stanford intitulé: “When Virtual is Harder than Real: Security Challenges in Virtual Machine
Based Computing Environments” recense les différentes fonctionnalités qu’apporte les systèmes virtualisés accompagnés des vulnérabilités qu’ils peuvent représenter.
Le Scaling ou passage à l’échelle en français, on l’appelle aussi VM Sprawl. De nos jours, les machines virtuelles peuvent être créés et déployés en l’espace de quelques secondes, ce qui est nettement plus court que le temps nécessaire pour s’assurer que tous les ordinateurs virtuels sont à jour et sécurisés. La plus grande vulnérabilité des ordinateurs virtuels tient à la facilité avec laquelle les utilisateurs peuvent créer de nombreux ordinateurs virtuels, qui deviennent très difficiles à sécuriser, à surveiller et à entretenir. Les administrateurs du système ne configurent pas convenablement les outils de sécurité et n’ont pas tendance à utiliser les outils d’automatisation. D’autant plus que les utilisateurs ne déclarent pas systématiquement l’ajout des machines virtuelles dans le parc.
Définition snapshots: Ou point de contrôle en français, est une technologie des systèmes de virtualisation qui permet de sauvegarder l’état entier d’un disque de machine virtuelle voire de la machine entière. L’utilisation des points de contrôle peut affecter le cycle de vie et le versioning des logiciels mais aussi altérer la durée de vie d’une donnée.
Le cycle de vie du logiciel: Les logiciels hébergés dans un environnement physique ont un cycle de vie assez linéaire. Ils évoluent incrémentalement dans le temps en termes de version. Dans le cas des logiciels exécutés dans une machine virtuelle, les snapshots font en sorte que les mises à jour effectuées par le système durant son exécution seront oubliées au prochain redémarrage, d’autant plus que des vulnérabilités ayant été corrigées peuvent même être restaurées.
Durée de vie des données: Limiter la durée pendant laquelle une donnée sensible reste présente dans un système augmente la confidentialité. Si nous prenons l’exemple des systèmes cryptographiques, une clé privée est lue uniquement pour chiffrer ou déchiffrer des données et est ensuite effacée de la mémoire. Lors de la création d’un snapshot, la mémoire vive est en partie recopiées dans un fichier, cette copie peut donc rendre persistantes en mémoire des données à caractère sensible
Les points forts de la virtualisation sont les principaux vecteurs d’attaque
On l’a bien compris, la vulnérabilité des machines virtuelle réside notamment dans les fonctionnalités attrayantes qu’elles offrent.
Mobilité: Les machines virtuelles ne sont par nature pas physiques, ce qui signifie que leur vol peut avoir lieu sans vol physique de la machine hôte. Le contenu du disque virtuel de chaque ordinateur virtuel est stocké sous forme de fichier par la plupart des hyperviseurs, ce qui permet aux ordinateurs virtuels d’être copiés et exécutés à partir d’autres ordinateurs physiques. Bien qu’il s’agisse d’une fonctionnalité pratique, c’est aussi une menace pour la sécurité. Les pirates peuvent copier la machine virtuelle sur le réseau ou sur un support de stockage portable et accéder aux données sur leur propre machine sans voler physiquement un disque dur. Une fois que les attaquants ont un accès direct au disque virtuel, ils disposent d’un temps illimité pour neutraliser tous les mécanismes de sécurité, tels que les mots de passe, à l’aide d’attaques hors ligne. Étant donné que l’attaquant accède à une copie de la machine virtuelle plutôt qu’à l’original, la machine virtuelle ne montrera aucun enregistrement d’intrusion.
Hypercalls: Un hypercall est équivalent à un appel système sur les systèmes d’exploitation, il est utilisé par les machines virtuelles pour demander des services explicites à l’hyperviseur. Bien qu’une machine virtuelle ne puisse pas modifier des informations comme les structures de données reliés à l’OS, elle peut demander de faire ces opérations à travers les hypercalls et donc de modifier les droits d’accès à ces données ou encore causer une attaque de type deny of service à l’encontre des utilisateurs de la VM.
Un rapport de sécurité de IBM sorti en novembre 2010 a analysé les vulnérabilités de virtualisation et de sécurité des hyperviseurs au cours des dix dernières années fournies par Citrix Systems, IBM, Microsoft, Oracle, Red Hat et VMware. Il indique que 35% des vulnérabilités de sécurité permettent à un intrus d’échapper à un serveur virtuel invité pour affecter d’autres serveurs virtuels ou l’hyperviseur, et 15% des vulnérabilités affectent un ordinateur virtuel invité sans affecter l’hyperviseur ou le système d’exploitation hôte.
Communication: VM Communication désigne des attaques «invité à invité», dans lesquelles des attaquants utilisent une VM pour accéder à ou contrôler d’autres ordinateurs virtuels sur le même hyperviseur. Ces attaques peuvent se produire sans compromettre la couche d’hyperviseur. Une machine virtuelle malveillante peut potentiellement accéder à d’autres machines virtuelles via la mémoire partagée, les connexions réseau et d’autres ressources partagées. Par exemple, si une machine virtuelle malveillante détermine l’emplacement de la mémoire allouée à une autre machine virtuelle, elle pourrait alors lire ou écrire à cet emplacement et interférer avec le fonctionnement de cette autre machine. L’image ci-dessous une attaque de VM1 sur VM2 et VM3.
Des extensions ont été développées pour ajouter des fonctionnalités de
sécurité au sein de l’hyperviseur. La principale contribution dans cette catégorie est représentée par Xen Security Modules, un framework implémentant de nouvelles règles de sécurité pour Xen que l’administrateur peut choisir ou non d’activer.
Microsoft propose également pour sécuriser ses machines virtuelles dans Azure un chiffrement des disques virtuels.
VMware recommande les bonnes pratiques suivantes concernant les snapshots:
- Ne pas conserver pas un seul snapshot pendant plus de 72 heures. Malgré que VMware prend en charge jusqu’à 32 Snapshots dans une chaîne, essayer de limiter les chaînes à trois Snapshots.
Checklist de sécurité pour les utilisateurs des VM
○ Désactiver le matériel ou les services virtuels inutilisés et inutiles (par exemple, le presse-papiers et le partage de fichiers) pour réduire la surface d’attaque.
○ Garder un œil sur l’hyperviseur pour détecter les activités anormales.
○ Surveiller activement le trafic entre les machines virtuelles; leur visibilité doit être explicitement activée.
○ Suivre les instances et limiter la création de machines virtuelles et de serveurs virtuels afin d’empêcher la prolifération des VMs.
○ Utiliser des protocoles de communication sécurisés et cryptés (par exemple, Secure Sockets Layer) pour atténuer les attaques de type «Man in the middle» ou pour protéger les données lors de la migration ou du stockage d’images VM.
Source: https://www.usenix.org/legacy/event/hotos05/final_papers/full_papers/garfinkel/garfinkel_old.pdf
Pierre Bolinches, Hamza Dardouri, Ghita Laoud, Tanina Soualah, Emel Topal