Nouvelle technique pour exploiter les vulnérabilités Spectre dans Chrome

Un groupe de chercheurs d'universités américaines, australiennes et israéliennes ont proposé une nouvelle technique d'attaque par canal secondaire pour exploiter les vulnérabilités de classe Spectre dans les navigateurs basés sur le moteur Chromium. L'attaque, nommée Spook.js, vous permet de contourner le mécanisme d'isolation du site en exécutant du code JavaScript et de lire le contenu de l'intégralité de l'espace d'adressage du processus en cours, c'est-à-dire accéder aux données des pages exécutées dans d’autres onglets, mais traitées dans le même processus.

Étant donné que Chrome gère différents sites selon différents processus, la capacité de mener des attaques pratiques est limitée aux services permettant à différents utilisateurs d'héberger leurs pages. Le procédé permet, à partir d'une page dans laquelle l'attaquant a la possibilité d'embarquer son code JavaScript, de déterminer la présence d'autres pages ouvertes par l'utilisateur à partir du même site et d'en extraire des informations confidentielles, par exemple des identifiants ou des coordonnées bancaires substituées. par le système de remplissage automatique des champs dans les formulaires Web. À titre de démonstration, il est montré comment attaquer le blog de quelqu'un d'autre sur le service Tumblr si son propriétaire ouvre le blog d'un attaquant hébergé sur le même service dans un autre onglet.

Une autre option pour utiliser la méthode est une attaque contre les modules complémentaires du navigateur, qui permet, lors de l'installation d'un module complémentaire contrôlé par l'attaquant, d'extraire des données d'autres modules complémentaires. À titre d'exemple, nous montrons comment, en installant un module complémentaire malveillant, vous pouvez extraire des informations confidentielles du gestionnaire de mots de passe LastPass.

Les chercheurs ont publié un prototype d'exploit qui fonctionne dans Chrome 89 sur des systèmes équipés d'un processeur Intel i7-6700K et i7-7600U. Lors de la création de l'exploit, des prototypes de code JavaScript précédemment publiés par Google ont été utilisés pour mener des attaques de classe Spectre. Il est à noter que les chercheurs ont pu préparer des exploits fonctionnels pour des systèmes basés sur des processeurs Intel et Apple M1, qui permettent d'organiser la lecture de la mémoire à une vitesse de 500 octets par seconde et une précision de 96 %. On suppose que la méthode est également applicable aux processeurs AMD, mais il n'a pas été possible de préparer un exploit entièrement fonctionnel.

L'attaque est applicable à tous les navigateurs basés sur le moteur Chromium, notamment Google Chrome, Microsoft Edge et Brave. Les chercheurs pensent également que la méthode peut être adaptée pour fonctionner avec Firefox, mais comme le moteur Firefox est très différent de Chrome, le travail de création d'un tel exploit est laissé pour le futur.

Pour se protéger contre les attaques basées sur le navigateur liées à l'exécution spéculative d'instructions, Chrome implémente la segmentation de l'espace d'adressage : l'isolation sandbox permet à JavaScript de fonctionner uniquement avec des pointeurs 32 bits et partage la mémoire des gestionnaires dans des tas disjoints de 4 Go. Pour donner accès à l'ensemble de l'espace d'adressage du processus et contourner la limitation de 32 bits, les chercheurs ont utilisé une technique appelée Type Confusion, qui oblige le moteur JavaScript à traiter un objet avec un type incorrect, ce qui permet de générer un 64 bits. pointeur basé sur une combinaison de deux valeurs de 32 bits.

L'essence de l'attaque est que lors du traitement d'un objet malveillant spécialement conçu dans le moteur JavaScript, des conditions sont créées qui conduisent à l'exécution spéculative des instructions qui accèdent au tableau. L'objet est sélectionné de telle manière que les champs contrôlés par l'attaquant soient placés dans la zone où le pointeur 64 bits est utilisé. Étant donné que le type de l'objet malveillant ne correspond pas au type du tableau en cours de traitement, dans des conditions normales, de telles actions sont bloquées dans Chrome par un mécanisme de désoptimisation du code utilisé pour accéder aux tableaux. Pour résoudre ce problème, le code de l'attaque Type Confusion est placé dans un bloc conditionnel « if », qui n'est pas activé dans des conditions normales, mais est exécuté en mode spéculatif, si le processeur prédit de manière incorrecte des branchements supplémentaires.

En conséquence, le processeur accède de manière spéculative au pointeur 64 bits généré et annule l'état après avoir déterminé une prédiction échouée, mais les traces de l'exécution restent dans le cache partagé et peuvent être restaurées à l'aide de méthodes de détection de cache à canal secondaire qui analysent les changements dans temps d'accès aux données mises en cache et non mises en cache. Pour analyser le contenu du cache dans des conditions de précision insuffisante du timer disponible en JavaScript, on utilise une méthode proposée par Google, qui trompe la stratégie d'éviction du cache Tree-PLRU utilisée dans les processeurs et permet, en augmentant le nombre de cycles, de augmenter considérablement la différence de temps entre la présence et l'absence d'une valeur dans le cache. .

Source: opennet.ru

Ajouter un commentaire