web-dev-qa-db-fra.com

the security of specter peut-être elle dans une machine virtuelle?

Est-il possible qu'une machine virtuelle telle que VirtualBox ait la vulnérabilité de sécurité "spectre"? Je pense que la VM exécute peut-être dans le désordre, mais à mon avis, il n'est pas possible de jeter un coup d'œil sur le cache pour lire le résultat.

Existe-t-il une explication quant à la possibilité de lire le cache d'un processeur virtuel?

13
jms

Oui Spectre peut dépasser les limites hôte/invité, invité/hôte et invité/invité, car il s’agit là d’une faille au niveau du processeur, ce qui signifie que des informations potentiellement sensibles peuvent être divulguées sur tout ce qui s’exécute sur un cœur de processeur.

La plupart des reportages sur Internet parlent des fournisseurs de cloud computing les plus touchés, car ils disposent d'énormes grappes de systèmes virtualisés qui pourraient potentiellement être utilisés pour divulguer des informations sensibles.

La plupart des grands fournisseurs auraient déjà dû être corrigés contre les failles, du mieux qu'ils peuvent être, mais ce problème persistera pendant un certain temps.

Security.SE a un Q & A canonique à ce sujet et il mentionne les VM:

J'utilise une machine virtuelle/des conteneurs, dans quelle mesure suis-je vulnérable?

Selon la réponse de de Steffen Ullrich

  • Les attaques de fusion ne traversent pas les ordinateurs virtuels, elles ne font que fuir la mémoire du noyau vers les processus locaux.
  • Spectre peut fonctionner sur plusieurs ordinateurs virtuels.

De plus, à partir de Steffen à nouveau , Meltdown et Specter fonctionnent avec des conteneurs, car ceux-ci reposent sur le noyau de l'hôte.

Les ordinateurs virtuels utilisent le processeur réel de votre système avec des instructions privilégiées piégées pouvant être redirigées. Il utilise les mêmes caches et instructions que l'hôte. Il ne s'agit essentiellement que d'une couche supplémentaire au sein de la CPU physique de votre système.

La virtualisation est rapide car elle utilise le processeur physique avec le moins d'abstraction possible et utilise le matériel du processeur pour assurer l'isolation. Des choses comme qemu peuvent faire une émulation ce qui serait plus sûr car ce n'est pas un processeur matériel, mais il est beaucoup plus lent et différent de la virtualisation.

De la Security.se post canonique :

Spectre fonctionne à un niveau différent et n'autorise pas l'accès aux données de l'espace noyau à partir de l'espace utilisateur. Dans cette attaque, l'attaquant trompe l'exécution spéculative pour exécuter de manière prédictive des instructions erronées. En un mot, le prédicteur est contraint de prédire un résultat de branche spécifique (si -> true), ce qui conduit à demander un accès mémoire en dehors de la limite que le processus victime n'aurait normalement pas demandé, entraînant une exécution spéculative incorrecte. Ensuite, par le canal latéral, récupère la valeur de cette mémoire. De cette manière, la mémoire appartenant au processus victime est filtrée vers le processus malveillant.

Donc, parce que VM s'exécute dans le matériel de la CPU réelle et qu'il ne lui reste plus qu'à exécuter une boucle particulière pour "entraîner" le moteur d'exécution spéculatif. Ensuite, il peut utiliser un minutage précis pour surveiller les caches pour des modèles d'accès particuliers indiquant le processus de l'hôte ou de l'invité (ou autre machine virtuelle) qu'il cherche à exploiter.

De cette façon, cela signifie qu'une machine est exploitable dans toutes les directions. D'hôte à machine virtuelle, de VM à hôte et de VM à machine virtuelle.

Oui, ce n’est pas facile et c’est une chose difficile à retirer, car le VM processeur peut changer à la guise de l’hôte et celui-ci pourrait planifier des tâches sur différents cœurs, mais sur une Pendant une longue période, il est possible que suffisamment d’informations soient divulguées pour donner une clé secrète à un système ou à un compte important. Si on dispose de suffisamment de temps et de logiciels suffisamment furtifs, tout est potentiellement ouvert.

Si vous voulez un "sécurisé" VM, vous devez vous assurer que ses cœurs sont isolés. Le seul moyen réel de bloquer cette attaque serait de "forcer" l'hôte et les ordinateurs virtuels à n'utiliser que certains cœurs afin qu'ils ne s'exécutent jamais sur le même matériel, ce qui entraînerait une augmentation effective des coûts, car vous ne pourriez pas avoir autant de machines virtuelles sur un hôte donné. Vous ne seriez jamais en mesure d'exécuter plus de machines virtuelles que de cœurs disponibles, ce que je m'attendrais à faire sur des serveurs "à faible charge", car de nombreux systèmes restent inactifs pendant 90% de leur durée de vie.

14
Mokubai

gem5

Si vous souhaitez étudier/reproduire des vulnérabilités uniquement avec une émulation, sans utiliser le processeur hôte, je ne pense pas que QEMU est suffisamment détaillé pour pouvoir les observer car il ne simule pas le pipeline de processeur.

cependant, gem5 est utilisé pour estimer les performances du système en recherche et développement et simule suffisamment d'internes de processeur pour vous permettre d'observer Specter dans un environnement entièrement propre et contrôlé.

Une démo x86_64 avec visualisation a été publiée à l'adresse suivante: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

L'inconvénient de gem5 est qu'il est beaucoup plus lent que QEMU et que la simulation est plus détaillée.