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

Google a récemment publié plusieurs prototypes d'exploits démontrant la possibilité d'exploiter les vulnérabilités de la classe Spectre en exécutant du code JavaScript dans un navigateur, sans passer par les mesures de sécurité précédemment ajoutées.

Des failles de sécurité permettent d'accéder à la mémoire d'un processus traitant du contenu web dans l'onglet actif. Pour tester le fonctionnement de cette faille, le site web contenant la page divulguée a été ouvert et le code décrivant la logique de l'opération a été publié sur GitHub.

Le prototype proposé est conçu pour attaquer les systèmes dotés de processeurs Intel Core i7-6500U dans un environnement Linux et Chrome 88, bien que cela n'exclue pas la possibilité d'apporter des modifications pour utiliser l'exploit dans d'autres environnements.

Le mode opératoire n'est pas spécifique aux processeurs Intel : après adaptation, il a été confirmé que la faille fonctionne sur des systèmes équipés de processeurs d'autres fabricants, notamment le processeur Apple M1 basé sur l'architecture ARM. Après quelques ajustements mineurs, elle fonctionne également sur d'autres systèmes d'exploitation et 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 permet de se passer des minuteurs de haute précision disponibles via l'API performance.now() et sans prise en charge du type SharedArrayBuffer, qui 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 lequel une tentative est faite pour accéder à une zone en dehors des limites du tampon , ce qui affecte l'état du bloc de prédiction de branche en raison de la présence d'une vérification de la taille du tampon ajoutée par le compilateur (le processeur effectue de manière spéculative un accès anticipé, 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 démontrer la faisabilité des attaques utilisant des vulnérabilités de type Spectre et pour encourager les développeurs web à utiliser des techniques minimisant 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


Ajouter comme source préférée dans Google