La sécurité des hyperviseurs est relative à toute menace ou toute attaque par des virus informatiques qui remettrait en question la sécurité (au sens informatique) basée sur les services de confidentialité, d’intégrité et de disponibilité.
Cet article aborde successivement la description, l’évolution de la sécurité et les risques encourus quant à l’utilisation des hyperviseurs. Puis, il traite de la vulnérabilité des hyperviseurs, des attaques et des solutions apportées pour les sécuriser.
Présentation La virtualisation consiste à faire fonctionner un ou plusieurs systèmes d'exploitation ou applications sur un ou plusieurs ordinateurs/Serveur informatique au lieu d'en installer un(e) seul(e) par machine. Ces ordinateurs virtuels sont aussi appelés serveur privé virtuel (Virtual Private Server ou VPS) ou encore environnement virtuel (Virtual Environment ou VE). Un Hyperviseur est une plate-forme de virtualisation qui permet à plusieurs systèmes d’exploitation de travailler sur une même machine physique en même temps. Les hyperviseurs sont classés en 2 catégories Type 1 natif et Type 2: thumb|upright=1|right|Architecture des hyperviseurs de type 1. La paravirtualisation : ou hyperviseur de type 1 ou natif encore appelé "bare metal" (littéralement "métal nu"), est un logiciel qui s'exécute directement sur une plateforme matérielle. Cette plateforme est alors considérée comme outil de contrôle du système d'exploitation. Un système d'exploitation secondaire peut être exécuté au-dessus du matériel. Il implémente la plupart des services que fournissent les noyaux des systèmes d’exploitation courants, entre autres la gestion mémoire complète des machines virtuelles ainsi que leur ordonnancement. Parmi les solutions logicielles existantes figurent : XEN libre, hyperviseur supportant des noyaux Linux, Plan 9 from Bell Labs, NetBSD. Oracle VM propriétaire, hyperviseur sur plateforme x86. VMware ESX propriétaire, hyperviseur sur plateforme x86 (produits ESX et ESXi-gratuit). Hyper V propriétaire, hyperviseur sur plateforme x64 uniquement. KVM libre, module noyau Linux tirant parti des instructions de virtualisation des processeurs Intel et AMD (Intel VT ou AMD-V). thumb|upright=1|right|Architecture des hyperviseurs de type 2. La virtualisation complète : ou hyperviseur de type 2 (hébergé, host-based) ou hypervisor call, ou hypercall, est un logiciel qui s'exécute à l'intérieur d'un autre système d'exploitation. Un système d'exploitation invité s'exécutera donc en troisième niveau au-dessus du matériel. Il utilise les services fournis par le système d’exploitation hôte pour gérer la mémoire et l’ordonnancement des machines virtuelles. Le microprocesseur, la mémoire de travail RAM (Random-access memory) ainsi que la mémoire de stockage sont directement accessibles aux machines virtuelles. Parmi les technologies existantes il faut noter : QEMU émulateur de plateformes x86, PPC, Sparc, ARM. Bochs émulateur de plateforme x86. VirtualBox émulateur de plateforme x86. VMware Server émulateur de plateforme x86 (produits VWware Server, VMware Player et VMware Workstation). Virtual PC propriétaire, émulateur de plateforme x86. MAC on Linux émulateur de plateforme Mac OS sur Linux PPC.
La sécurité en informatique est l’ensemble des moyens techniques, organisationnels, juridiques et humains nécessaires et mis en place pour conserver, rétablir et garantir la sécurité du système d’information.
La sécurité se définit sur 3 critères de base :
Disponibilité : propriété d'un système d'information capable d'assurer ses fonctions sans interruption.
Intégrité : propriété d'une donnée dont la valeur est conforme à celle définie par son propriétaire.
Confidentialité : propriété d'une donnée dont la diffusion doit être limitée aux seules personnes autorisées.
Évolution et sécurité de l'hyperviseur Les technologies de virtualisation prennent une part de plus en plus importante depuis les années 2000. Ce phénomène est lié notamment au développement de nouveaux usages comme la virtualisation des postes de travail, la virtualisation des applications d’entreprise, la virtualisation du stockage, ou l’apparition du cloud computing. thumb|upright=4|center|Chronologie de la Virtualisation.
De plus la virtualisation permet de faire des économies de place, d’énergie et de budget en diminuant le nombre de serveurs utilisés en les mutualisants et en optimisant leurs usages. Cette technologie est mise en avant comme élément d'amélioration que ce soit dans le cadre de la sécurité, de la fiabilité ou de la disponibilité. Cette technologie touche de plus en plus les grandes entreprises mais également les PME (Petite et Moyenne Entreprise) et PMI (Petite et Moyenne Industrie).
L'Hyperviseur améliore la sécurité du point de vue : Disponibilité
L'Hyperviseur repose sur le matériel et en cas de défaillance sur la machine il suffit de posséder un équipement compatible avec le produit de virtualisation pour en fabriquer une équivalente.
Intégrité Avec l’utilisation des solutions de stockage partagé de type SAN (Storage Area Network), l'Hyperviseur permet la réplication synchrone.
Confidentialité L'Hyperviseur permet de concevoir des architectures isolées au sein d’un hôte. Il permet également d’œuvrer sur le réseau local sans utiliser physiquement de carte réseau.
Hyperviseur et ses risques L'Hyperviseur de par sa technologie engendre de nouveaux risques comme les attaques entre machines virtuelles, la fuite d'information d’une machine virtuelle, la prise de contrôle du système hôte… Ci-dessous un ensemble des risques liés à ces nouvelles technologies:
Risque accru de compromission des systèmes La compromission est la prise de contrôle par un acteur malveillant d’un système invité depuis un autre système invité ou de la couche d’abstraction depuis un système invité. Le risque qui en découle est la fuite d'information ou des perturbations du système pouvant aller jusqu'à l'indisponibilité d'un service. Il est essentiel que chaque brique matériel, système d’exploitation hôte et système d’exploitation invité soient à jour de tous les correctifs de sécurité.
Accroissement du risque d’indisponibilité La panne d’une ressource commune peut engendrer l'indisponibilité simultanée de plusieurs systèmes et potentiellement tous les services hébergés sur la même machine.
Fuite d’information par manque de cloisonnement
Dans le cas de la virtualisation, les instances que sont le système d’exploitation, les applications, le système de stockage de données et autres… se partagent une même ressource. De ce fait il devient difficile de maitriser les différents échanges internes à une même machine physique et donc de garantir que les ressources bas niveaux partagés n'introduisent pas de possibilité de fuite d’information.
Prenons l'exemple avec l’accès au réseau d’une machine informatique :
Dans une architecture sans virtualisation, les machines communiquent sur des réseaux physiques au moyen d’une carte réseau spécifique. Les flux de données sont ainsi traités au niveau des machines par chaque carte réseau et peuvent être identifiés précisément.
Dans une architecture avec virtualisation, les machines virtuelles peuvent communiquer sur des réseaux physiques par le biais d’une carte unique appartenant à la machine physique qui les héberge. Les flux de données de chaque machine virtuelle sont donc traités par cette unique carte réseau. Dès lors, il n’est pas possible de garantir un cloisonnement des flux au niveau de la ressource partagée. La carte réseau a la possibilité en cas d’erreur ou de compromission de mélanger les différents flux d’information.
Complexification de l’administration La virtualisation fait apparaitre des opérations d’administration nouvelles comme la mise en place des quotas sur des ressources partagées ou la gestion d'ajout de disque ou de périphérique de stockage réseau entre les machines virtuelles. L'administration s'en trouve complexifiée d'autant plus que ce sont en général des personnes différentes qui gèrent les parties réseaux, serveurs, sauvegardes et stockages.
Complexification de la supervision Les opérations de supervision peuvent s’avérer complexes du fait de l’incompatibilité entre le cloisonnement nécessaire des machines virtuelles et la nécessité de vision d’ensemble de la part de la supervision. Dès lors il devient difficile de tracer un événement ou une action de bout en bout.
Prolifération non souhaitée des données et des systèmes Les systèmes invités sont moins adhérents aux équipements c'est-à-dire qu'un système se voit reproduit à l'identique sur plusieurs machines. En conséquence la localisation précise d’une donnée s'en trouve complexifiée et les risques de copie non maîtrisée s'en trouve accrus avec les conséquences graves que cela peut engendrer comme la modification ou le vol d'informations.
Incapacité à gérer voire à comprendre les erreurs Avec la virtualisation il est possible à la suite de dysfonctionnements d'arrêter et de redémarrer plusieurs systèmes invités sur un même système hôte mais il devient complexe de gérer ces erreurs sans leur prise en compte globale.
Il convient donc de mettre en place une centralisation et une corrélation des journaux sur l'ensemble des systèmes.
Investigations post incident plus difficiles Certaines investigations menées après incident lié au partage de ressources matérielles par plusieurs systèmes peuvent s'avérer plus difficile. L'optimisation de la gestion de la mémoire vive par la solution de virtualisation rend plus délicate l'analyse de l'historique des états de la machine et par conséquent le traitement d'un incident dans la mesure où cette mémoire est réallouée à une autre machine virtuelle dès que celle-ci n’est plus utilisée.
Hyperviseurs vulnérabilités et attaques Le contexte Les hyperviseurs ont été graduellement utilisés dans des applications de plus en plus critiques, leur fiabilité est d'une importance vitale. Contrairement aux systèmes d'exploitation traditionnels qui doivent supporter le système de fichier, les piles réseaux, etc., un hyperviseur présente des abstractions relativement simples telles la CPU et la mémoire. En conséquence de ces propriétés, les hyperviseurs ont été largement considérés comme une architecture pour construire des systèmes d'exploitation sécurisés.
Cependant, il y a diverses inquiétudes concernant les hyperviseurs actuels. Avec de plus en plus de machines virtuelles déployées sur une seule plate-forme gérée par un seul hyperviseur, la robustesse est aussi un point posant problème. Les hyperviseurs modernes dérivent des systèmes d'exploitation contemporains. Malheureusement beaucoup de décisions de conception "restent inchangées, même si dans le même temps le matériel et logiciel ont évolué". Exemple de la conception monolithique qui utilise des langages procéduraux tels que le langage de programmation C. Un trop grand nombre de lignes de code n'est pas adapté à une vérification formelle. En fait les meilleurs techniques de vérification disponibles peuvent gérer environ 10K lignes de code. De cela résulte une piètre maintenabilité. Il est donc difficile d'étendre les fonctionnalités des hyperviseurs.
Pour construire un hyperviseur robuste le choix du langage de programmation est critique. Le langage doit être suffisamment efficace pour manipuler les objets de bas niveau, expressif et permettre de vérifier l'intégrité du code. Le TCB (Trusted Computing Base) est défini comme la totalité des mécanismes de protection dans un système informatique, incluant le hardware (matériel informatique), le firmware, et le software (logiciel).
De leur combinaison ressort la partie responsable du renforcement de la politique de sécurité. Ainsi, malgré une faible empreinte de l'hyperviseur en lui-même, ces plates-formes ont un large TCB.