AMD a confirmé la vulnérabilité potentielle des processeurs AMD Zen 3 à l'attaque Spectre-STL

AMD a publié un rapport analysant la sécurité de la technologie d'optimisation PSF (Predictive Store Forwarding) mise en œuvre dans les processeurs de la série Zen 3. L'étude a théoriquement confirmé l'applicabilité de la méthode d'attaque Spectre-STL (Spectre-v4), identifiée en mai 2018, pour Technologie PSF, mais dans la pratique, aucun modèle de code capable de conduire à une attaque n'a encore été trouvé et le danger global est jugé insignifiant.

Rappelons que l'attaque Spectre-v4 (Speculative Store Bypass) repose sur la restauration des données déposées dans le cache du processeur après avoir rejeté le résultat de l'exécution spéculative d'opérations lors du traitement d'opérations d'écriture et de lecture alternées utilisant l'adressage indirect. Lorsqu'une opération de lecture suit une opération d'écriture (par exemple, mov [rbx + rcx], 0x0 ; mov rax, [rdx + rsi]), le décalage de l'adresse de lecture peut déjà être connu en raison d'opérations similaires effectuées (les opérations de lecture sont effectué beaucoup plus fréquemment et les lectures peuvent être effectuées à partir du cache) et le processeur peut effectuer de manière spéculative des lectures avant les écritures sans attendre que le décalage d'indirection de l'écriture soit calculé.

Cette fonctionnalité permet à une instruction de lecture d'accéder à une ancienne valeur à une certaine adresse alors que l'opération de stockage n'est pas encore terminée. S'il y a une erreur de prédiction, l'opération spéculative infructueuse sera rejetée, mais des traces de son exécution resteront dans le cache du processeur et pourront être récupérées par l'une des méthodes permettant de déterminer le contenu du cache sur la base d'une analyse des changements d'accès. temps pour les données mises en cache et non mises en cache.

Ajouté aux processeurs AMD Zen 3, PSF optimise STLF (Store-To-Load-Forwarding), qui effectue des opérations de lecture de manière spéculative en prédisant la relation entre les opérations de lecture et d'écriture. Lors de l'utilisation du STLF classique, le processeur effectue une opération de "chargement" sur les données directement transmises depuis la commande "store" précédente, sans attendre que le résultat soit effectivement écrit en mémoire, mais en s'assurant que les adresses utilisées dans le "chargement" et les commandes "store" correspondent. L'optimisation PSF rend la vérification d'adresse spéculative et effectue une opération de « chargement » avant que les informations d'adresse n'aient été calculées si une paire stockage/chargement manipulant une seule adresse a été précédemment exécutée. Si la prédiction échoue, l'état est annulé, mais les données restent dans le cache.

Une attaque contre PSF n'est possible que dans le cadre d'un seul niveau de privilèges, ne couvre que le contexte de processus actuel et est bloquée par des méthodes d'isolation de l'espace d'adressage ou des mécanismes de bac à sable matériel. Dans ce cas, les méthodes de sandboxing logiciel dans les processus peuvent potentiellement être affectées par le problème. L'attaque constitue une menace pour les systèmes tels que les navigateurs, les machines virtuelles d'exécution de code et les JIT qui exécutent du code tiers au sein d'un seul processus (l'attaque pourrait permettre à du code sandbox non fiable d'accéder à d'autres données de processus).

AMD a fourni un certain nombre de méthodes pour désactiver complètement ou sélectivement PSF, mais étant donné le risque négligeable pour la plupart des applications, a recommandé que cette optimisation ne soit pas désactivée par défaut. Pour protéger sélectivement les processus qui isolent ceux qui exécutent du code non fiable, il est proposé de désactiver PSF en définissant les bits MSR « SSBD » et « PSFD », y compris pour des threads individuels. Des correctifs ont été préparés pour le noyau Linux avec l'implémentation des options de ligne de commande « psfd » et « nopsfd » qui contrôlent la façon dont PSF est activé et désactivé.

Source: opennet.ru

Ajouter un commentaire