Quatre chercheurs de l’Institut Fraunhofer, basé à Munich et dont la spécialité est la sécurité intégrée et appliquée, ont publié cette semaine un document de recherche détaillant une méthode de récupération des données normalement chiffrées par la technologie de chiffrement SEV (Secure Encrypted Virtualization) d’AMD. Pour rappel, SEV est un mécanisme de sécurité conçu pour chiffrer les données de machines virtuelles exécutées sur des serveurs avec des processeurs AMD.
L’équipe de recherche affirme que leur attaque, baptisée SEVered, est capable de récupérer des données de mémoire en clair provenant de machines virtuelles invitées exécutées sur le même serveur que la machine virtuelle attaquée.
« Nous présentons la conception et la mise en œuvre de SEVered, une attaque d’un hyperviseur malveillant capable d’extraire le contenu complet de la mémoire principale en clair à partir de machines virtuelles chiffrées par SEV. SEVered ne nécessite ni accès physique ni collusion de machines virtuelles, mais repose uniquement sur un service de communication à distance, tel qu’un serveur Web, s’exécutant dans la machine virtuelle ciblée », peut-on lire dans le document publié par les chercheurs.
« Nous vérifions l’efficacité de SEVered sur une plateforme serveur AMD SEV récente qui exécute différents services, tels que des serveurs Web ou SSH, dans des machines virtuelles chiffrées ».
Un attaquant au niveau de l’hôte peut modifier les mappages de mémoire physique d’un invité via des tables de pages standard, ce qui provoque l’échec du mécanisme de virtualisation Secure Encrypted dans son opération consistant à isoler et brouiller certaines parties de la machine virtuelle dans la RAM.
« Pour SEVered, nous nous sommes appuyés sur l’observation selon laquelle le chiffrement de la mémoire principale par page manque de protection d’intégrité. Alors que la traduction de l’adresse virtuelle de l’invité (GVA – Guest Virtual Address) vers l’adresse physique de l’hôte (GPA – Guest Physical Address) est contrôlée par la machine virtuelle elle-même et opaque par rapport à l’hyperviseur, l’hyperviseur reste responsable de la traduction de l’adresse de second niveau (SLAT – Second Level Address Translation) ; ce qui signifie qu’il maintient l’adresse virtuel de l’invité dans l’adresse physique de l’hôte », poursuivent les chercheurs.
« Cela nous permet de changer la disposition de la mémoire de la machine virtuelle dans l’hyperviseur. Nous utilisons cette capacité pour tromper un service dans la machine virtuelle, comme un serveur Web, pour renvoyer des pages arbitraires de la machine virtuelle en texte brut à la demande d’une ressource extérieure ».
Les chercheurs ont mis en place un environnement de test exécutant un processeur AMD Epyc 7251 (un processeur AMD destiné aux centres de données, sorti en juin 2017.) avec SEV activé et Debian GNU / Linux installé, exécutant un serveur web Apache et OpenSSH dans deux machines virtuelles distinctes.
En modifiant l’hyperviseur KVM de la machine virtuelle basée sur le noyau du système, les experts ont démontré qu’il est possible d’observer quand un logiciel au sein d’un invité a accédé à la RAM physique.
Au cours des tests de leur attaque, les chercheurs ont déclaré qu’ils étaient en mesure de récupérer toute la mémoire de 2 Go d’un serveur de test, y compris les données d’une machine virtuelle invité.
Les chercheurs ont obtenu les meilleurs résultats en bombardant Apache et nginx avec des requêtes répétées, récupérant des données mémoire à une vitesse de 79,4 Ko / s, tandis qu’une attaque sur OpenSSH était plus lente, récupérant des données à seulement 41,6 Ko / s.
Une limitation importante qui réduit la faisabilité de l’attaque est le fait qu’un attaquant doit modifier l’hyperviseur d’un serveur pour effectuer une attaque SEVered, quelque chose qui peut être hors de portée de certains intrus louant une machine virtuelle invitée si le serveur est tenu à jour avec des correctifs de sécurité.