Google démontre l'exploitation des vulnérabilités de Spectre à l'aide de JavaScript dans un navigateur

Google a dévoilé il y a plusieurs jours divers prototypes d'exploit qui démontrent la possibilité d'exploiter des vulnérabilités de la classe Spectre lors de l'exécution de code JavaScript dans un navigateur, sans passer par les méthodes de sécurité ajoutées ci-dessus.

Les exploits peuvent être utilisés pour accéder à la mémoire d'un processus qui traite le contenu Web dans l'onglet actuel. Pour tester le fonctionnement de l'exploit, le site Web de la page qui fuit a été lancé et le code décrivant la logique de l'opération est posté sur GitHub.

Le prototype proposé est conçu pour systèmes d'attaque avec Processeurs Intel Core i7-6500U dans un environnement Linux et Chrome 88, bien que cela n'exclut pas que des modifications puissent être apportées pour utiliser l'exploit dans d'autres environnements.

Le mode de fonctionnement n'est pas spécifique à les processeurs Intel: après une bonne adaptation, L'exploit a été confirmé pour fonctionner sur des systèmes avec des processeurs tiers, y compris l'Apple M1 basé sur l'architecture ARM. Après quelques modifications mineures, l'exploit fonctionne également sur d'autres systèmes d'exploitation et d'autres navigateurs basés sur le moteur Chromium.

Dans un environnement basé sur les processeurs Chrome 88 et Intel Skylake standard, nous avons obtenu une fuite de données du processus responsable du rendu du contenu Web dans l'onglet Chrome actuel (processus de rendu) à une vitesse de 1 kilo-octet par seconde. De plus, des prototypes alternatifs ont été développés, par exemple, un exploit qui permet, au prix d'une stabilité réduite, d'augmenter le taux de fuite à 8 ko / s lors de l'utilisation du timer performance.now () avec une précision de 5 microsecondes (0.005 millisecondes) ). Une variante a également été développée qui fonctionnait avec une précision de minuterie d'une milliseconde, qui pourrait être utilisée pour organiser l'accès à la mémoire d'un autre processus à une vitesse d'environ 60 octets par seconde.

Le code de démonstration publié se compose de trois parties:

  • La première partie calibrer la minuterie pour estimer le temps de fonctionnement des opérations nécessaires pour récupérer les données qui restent dans le cache du processeur suite à l'exécution spéculative des instructions du processeur.
  • La deuxième partie Définit la disposition de la mémoire utilisée lors de l'allocation du tableau JavaScript.
  • La troisième partie exploite directement la vulnérabilité Spectre pour déterminer le contenu de la mémoire du processus en cours à la suite de la création de conditions pour l'exécution spéculative de certaines opérations, dont le résultat est ignoré par le processeur après avoir déterminé une prévision échouée, mais les traces d'exécution sont réglées dans le cache partagé et peuvent être restaurées en utilisant méthodes pour déterminer le contenu du cache à l'aide de canaux tiers qui analysent la modification du temps d'accès aux données mises en cache et non mises en cache.

La technique d'exploitation proposée élimine les minuteries de haute précision disponible via l'API performance.now () et sans prise en charge du type SharedArrayBuffer, qui vous permet de créer des tableaux en mémoire partagée.

L'exploit comprend le dispositif Spectre, qui provoque l'exécution de code spéculatif contrôlé, et un analyseur de fuite de canal latéral, qui détermine quelles données ont été mises en cache pendant l'exécution spéculative.

Le gadget est implémenté à l'aide d'un tableau JavaScript, dans laquelle une tentative est faite pour accéder à une zone en dehors des limites du tampon, qui affecte l'état du bloc de prédiction de branchement en raison de la présence d'une vérification de la taille de la mémoire tampon ajoutée par le compilateur (le processeur effectue spéculativement un accès à l'avance, mais rétablit l'état après vérification).

Pour analyser le contenu du cache dans des conditions de précision de minuterie insuffisante, une méthode a été proposée qui trompe la stratégie d'éviction des données du cache Tree-PLRU utilisée dans les processeurs et permet, en augmentant le nombre de cycles, d'augmenter significativement le temps de différence lorsque la valeur est renvoyé du cache et en l'absence de valeur dans le cache.

Google a publié un prototype de l'exploit pour montrer la faisabilité des attaques utilisation des vulnérabilités de classe Spectre et encouragez les développeurs Web à utiliser des techniques qui minimisent les risques de telles attaques.

Dans le même temps, Google estime que sans une révision significative du prototype proposé, il est impossible de créer des exploits universels prêts non seulement pour la démonstration, mais aussi pour une utilisation généralisée.

source: https://security.googleblog.com


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.