SWAPGS une nouvelle vulnérabilité d'exécution spéculative

SWAPGS-exploit-2

Les Les chercheurs de Bitdefender ont identifié une nouvelle vulnérabilité dans le mécanisme d'exécution spéculative des instructions dans les processeurs modernes, qui a reçu le nom SWAPGS, A correspondant au nom de l'instruction du processeur à l'origine du problème.

Vulnérabilité permet à un attaquant non privilégié de déterminer le contenu des zones de mémoire du noyau ou exécuter des machines virtuelles. Le problème est confirmé sur les processeurs Intel (x86_64) et affecte partiellement les processeurs AMD pour lesquels le vecteur d'attaque principal n'apparaît pas.

Les méthodes anti-vulnérabilité Spectre et Meltdown précédemment implémentées ne protègent pas contre les attaques SWAPGS utilisant des processeurs Intel, mais des solutions pour Linux, ChromeOS, Android et Windows ont déjà été proposées.

La vulnérabilité appartient à la classe Spectre v1 et est basé sur l'idée de récupérer les données du cache du processeur qui restent après l'exécution spéculative des instructions.

Les blocs de prédiction de conversion des processeurs modernes utilisent l'exécution proactive de certaines instructions, qui sont plus susceptibles d'être exécutées, pour améliorer les performances, mais sans attendre le calcul de tous les facteurs qui déterminent leur exécution (par exemple, lorsque les instructions les conditions de transition ou les paramètres d'accès n'ont pas encore été calculés).

Si la prévision n'est pas confirmée, le processeur rejette le résultat de l'exécution spéculative, mais les données traitées pendant l'exécution sont mises en cache par le processeur et peuvent être restaurées à l'aide de méthodes pour déterminer le contenu du cache sur les canaux. Des tiers qui analysent la modification du temps d'accès aux données mises en cache et non mises en cache.

À propos de SWAPGS

La particularité de la nouvelle attaque est l'utilisation d'une fuite qui survient lors de l'exécution spéculative de l'instruction SWAPGS, qui est utilisé dans les systèmes d'exploitation pour remplacer la valeur du registre GS lorsque le contrôle est transféré de l'espace utilisateur au noyau du système d'exploitation (la valeur GS utilisée dans l'espace utilisateur est remplacée par la valeur utilisée dans les opérations du noyau) .

Noyau Linux dans les magasins GS pointeur per_cpu, qui est utilisé pour accéder aux données du noyau, et pointe vers TLS (Thread Local Storage) dans l'espace utilisateur.

Pour exclure le double appel de l'instruction SWAPGS après un accès répété au noyau depuis l'espace noyau ou lors de l'exécution de code ne nécessitant pas de remplacement du registre GS, une vérification et une transition conditionnelle sont effectuées avant l'instruction.

Le mécanisme d'exécution spéculative précède l'exécution du code avec l'instruction SWAPGS, sans attendre le résultat de la vérification, et si la branche sélectionnée n'est pas confirmée, il rejette le résultat.

Par conséquent, une situation peut survenir lorsqu'une succursale spécifiant l'exécution de SWAPGS est sélectionnée de manière spéculative, mais pendant l'exécution spéculative, la valeur du registre GS sera modifiée par l'instruction SWAPGS et sera utilisée dans les opérations dépendantes de la mémoire qui sont mises en cache par la CPU.

Les chercheurs ont proposé deux scénarios d'attaque pour lesquels des prototypes d'exploit ont été préparés.

  • Le premier scénario est basé sur la situation où l'instruction SWAPGS n'est pas exécutée de manière spéculative, même si elle est utilisée dans l'exécution réelle, et le second scénario est le contraire, lorsque l'instruction SWAPGS est exécutée de manière spéculative, bien que cela ne devrait vraiment pas.
  • Pour chaque scénario, il existe deux options opérationnelles: l'attaquant peut déterminer la valeur d'une adresse spécifique dans la zone centrale, et l'attaquant peut rechercher une valeur spécifique dans des adresses aléatoires dans le cœur.

La solution nécessite l'installation d'une mise à jour du noyau à la fois sur le système principal et les environnements invités, suivie d'un redémarrage du système. Pour désactiver la protection sous Linux, vous pouvez utiliser l'option "nospectre_v1", qui désactive également les mesures de blocage de la vulnérabilité SWAPGS.

La solution est disponible sous forme de patch pour le noyau Linux, qui est déjà inclus dans les versions 4.19.65, 5.2.7, 4.14.137, 4.9.188 et 4.4.188, tandis que pour les différentes distributions Linux, les corrections pertinentes arriveront au cours de la période de cette semaine et de la semaine suivante .


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.