Dans Meltdown and Virtual Machines , il a été précisé qu'au moins Spectre fonctionne en croisant des machines virtuelles. Cela signifie bien sûr que l'hyperviseur doit être corrigé, mais
Le système d'exploitation VM doit-il également être corrigé?
N'étant pas de vrais processeurs, il n'est pas clair s'ils sont directement vulnérables aux attaques basées sur la prélecture, ou si le patch de l'hyperviseur est suffisant.
Ma compréhension, tout d'abord, est que le correctif OS/hyperviseur n'atténue que Meltdown, pas Spectre.
Deuxièmement, vous corrigez l'hyperviseur pour empêcher un VM de lire la mémoire appartenant au noyau de l'hyperviseur. Vous corrigez le système d'exploitation invité pour empêcher un processus de lire la mémoire appartenant au noyau du système d'exploitation invité . - Je crois comprendre qu’ils sont indépendants les uns des autres; l’application de correctifs n’a aucun effet sur l’autre.
Émulation vs virtualisation
Je ne suis pas un grand expert des technologies de virtualisation, mais votre question plonge dans émulation vs virtualisation : dans l'émulation, le CPU, y compris tous les registres, caches, etc. est entièrement simulé dans le logiciel et il peut utiliser un jeu d'instructions différent du matériel sous-jacent. Dans la virtualisation, les instructions sont transmises directement au matériel, mais avec une planification de processus supplémentaire imposée par l'hyperviseur. En particulier, ma compréhension de virtualisation x86 , en particulier technologie VT-x d'Intel , est qu'il s'agit d'un "vrai CPU" dans le sens où le système d'exploitation invité utilise du vrai x86 des instructions qui sont plus ou moins transmises directement au matériel sous-jacent.
Alors oui, le système d'exploitation invité sera vulnérable à Meltdown et nécessitera des correctifs indépendamment du fait que l'hyperviseur ait été corrigé.
Je viens de tester sur un jetable VM en utilisant le code de preuve de concept de SpectrePoC (qui est basé sur Spectre Attacks: Exploiting Speculative Execution , et cela a fonctionné, dans la mesure où il prétendait pouvoir exploiter le système. Je recommanderais certainement de patcher les noyaux invités des machines virtuelles ainsi que le noyau hôte.
Sur la base de la information QEMU publiée, le noyau invité doit être mis à jour et redémarré après que l'hyperviseur insère le nouveau CPUID et les nouveaux registres de machine. Cela résout l'un des problèmes de Spectre. Hélas, QEMU n'a pas encore publié le correctif source associé au moment de la rédaction de cet article, qui devrait être dans leur version 2.11.1, vous devrez donc peut-être redémarrer votre VM à nouveau après ce correctif si vous exécutez sur QEMU. Le noyau invité doit reconnaître le nouveau CPUID/MR et réagir de manière appropriée. D'autres hyperviseurs (et fournisseurs de cloud) ont peut-être déjà fourni ces modifications, mais le nouveau noyau est toujours requis pour protéger le système d'exploitation invité contre les applications malveillantes.