Analyse approfondie des vulnérabilités de sécurité de la valeur Sentinel du moteur Chrome V8

robot
Création du résumé en cours

Discussion approfondie des vulnérabilités de sécurité liées à Sentinel Value dans le moteur Chrome V8

La valeur sentinelle est une valeur spéciale dans les algorithmes, généralement utilisée comme condition d'arrêt dans les algorithmes de boucle ou de récursion. La valeur sentinelle est largement utilisée dans le code source de Chrome. Récemment, des chercheurs en sécurité ont découvert qu'il était possible d'exécuter du code arbitraire dans le bac à sable de Chrome en divulguant l'objet TheHole. L'équipe de Google a rapidement corrigé cette vulnérabilité.

Cependant, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JavaScript. Cet article se concentrera sur l'objet Uninitialized Oddball, dont la divulgation pourrait entraîner des risques de sécurité plus larges. Actuellement, cette méthode est toujours disponible dans la dernière version de V8, et Google n'a pas encore corrigé ce problème.

Il convient de noter que cette méthode présente une grande polyvalence :

  1. Le poc de fuite d'internal uninitialized oddball a été proposé pour la première fois dans CVE-2021-30551.

  2. Le poc de CVE-2022-1486 a également divulgué directement UninitializedOddball.

  3. L'issue1352549( n'a pas encore attribué de CVE) et a montré le code d'exploitation complet.

Ces cas montrent clairement la nécessité d'une vérification complète des logiciels qui pourraient être affectés. À ce jour, Skype n'a toujours pas corrigé cette vulnérabilité.

Valeur Sentinel dans V8

La plupart des objets natifs de V8 sont définis dans le fichier v8/src/roots/roots.h, et ces objets sont disposés de manière contiguë en mémoire. Une fois qu'un objet natif qui ne devrait pas être divulgué est exposé à JavaScript, il est possible d'exécuter n'importe quel code dans le bac à sable.

Pour vérifier l'efficacité de cette méthode dans la dernière version de V8, nous pouvons modifier la fonction native de V8 pour faire fuiter l'Uninitialized Oddball dans JavaScript. La méthode spécifique consiste à modifier le décalage relatif de la fonction %TheHole() par rapport à isolate, afin qu'elle renvoie l'Uninitialized Oddball.

Exclusif : Comment contourner le HardenProtect de Chrome v8 grâce à la fuite de la valeur Sentinel

Contourner la protection HardenType

En simplifiant le code donné dans l'Issue1352549, nous pouvons réaliser une lecture relativement arbitraire dans la version V8 11.0.0 :

Révélation exclusive sur la façon de contourner Chrome v8 HardenProtect en divulguant la valeur Sentinel

Lorsque %TheHole() renvoie UninitializedOddball, la fonction read optimisée en JavaScript calcule directement le décalage selon la sémantique JavaScript, sans vérifier la valeur de obj.prop, ce qui entraîne une confusion de types et permet une lecture arbitraire.

Révélation exclusive sur la manière de contourner Chrome v8 HardenProtect en divulguant Sentinel Value

Comme l'objet TheHole, uninitialized_oddball est en tête de mémoire V8 et plus primitif, ce qui le rend plus facile à falsifier. Une fois que les mesures d'atténuation de TheHole ont été contournées, cette méthode est devenue la solution de contournement privilégiée.

La méthode de réparation suggérée consiste à ajouter une vérification de la carte du tableau lors du retour des éléments du tableau dans la fonction optimisée, afin d'éviter de calculer directement le décalage pour retourner les valeurs du tableau.

Révélation exclusive sur la façon de contourner Chrome v8 HardenProtect en fuyant la valeur Sentinel

Alerte PatchGap

Après avoir analysé l'Issue1352549, nous avons constaté que Skype n'a toujours pas corrigé cette vulnérabilité. Dans un environnement x86, la lecture et l'écriture arbitraires sont légèrement différentes : en raison de l'absence de compression d'adresse, la lecture et l'écriture arbitraires sont directement relatives à l'ensemble du processus.

Bien que Skype ait activé l'ASLR, en raison de la taille importante du fichier, en le plaçant directement dans 4 Go de mémoire, un attaquant n'a qu'à lire et écrire à des adresses spécifiques pour avoir une forte probabilité de lire et d'écrire le contenu des fichiers Skype. En combinant des méthodes traditionnelles comme l'analyse PE, il n'est pas difficile de compléter toute la chaîne d'exploitation de la vulnérabilité.

Révélation exclusive sur la manière de contourner Chrome v8 HardenProtect via la fuite de la valeur Sentinel

Cette fois, PatchGap concerne non seulement l'Issue1352549, mais la divulgation de la nouvelle méthode d'esquive a également considérablement réduit la difficulté d'exploitation de vulnérabilités similaires à CVE-2022-1486 et CVE-2021-30551. Les attaquants peuvent exploiter complètement toute vulnérabilité de fuite d'uninitialized_oddball sans presque aucun besoin d'études supplémentaires.

Révélation exclusive sur le contournement de Chrome v8 HardenProtect grâce à la fuite de la valeur Sentinel

Résumé

Cet article discute brièvement de la possibilité de réaliser des lectures arbitraires en divulguant un Uninitialized_Oddball dans la valeur Sentinel. D'autres valeurs Sentinel existent également dans V8, et des plantages sont souvent rencontrés lors des tests. Étant donné qu'Uninitialized_Oddball et TheHole peuvent tous deux permettre des contournements dans V8, nous avons des raisons de soupçonner que d'autres valeurs Sentinel pourraient également causer des problèmes similaires.

Cela nous donne les enseignements suivants :

  1. D'autres fuites uninitialized_Oddball peuvent-elles également permettre d'atteindre facilement RCE dans V8 ?

  2. Google a rapidement corrigé le contournement de TheHole, mais le fait que l'exploitation du ramassage des ordures pour réaliser un contournement ASLR soit laissée de côté pendant longtemps indique qu'il existe encore une frontière floue sur la manière dont de tels problèmes sont considérés comme des problèmes de sécurité formels.

  3. S'il est considéré comme un problème de sécurité officiel, est-il nécessaire d'inclure des valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables dans le fuzzer, afin de découvrir d'autres utilisations primitives.

Quoi qu'il en soit, ce type de problème réduira considérablement le temps nécessaire aux attaquants pour exploiter complètement.

Révélation exclusive sur la contournement de Chrome v8 HardenProtect via la fuite de la valeur Sentinel

Révélation exclusive sur le contournement de Chrome v8 HardenProtect via la fuite de Sentinel Value

Révélation exclusive sur la façon de contourner Chrome v8 HardenProtect en divulguant la valeur Sentinel

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 3
  • Partager
Commentaire
0/400
GateUser-afe07a92vip
· Il y a 20h
Que fait Google, ça fuit aussi ?
Voir l'originalRépondre0
SelfRuggervip
· Il y a 20h
Il semble que V8 va connaître de grands événements cette année.
Voir l'originalRépondre0
SchrodingerGasvip
· Il y a 20h
Après une nuit de sommeil, v8 est toujours au travail, qui va payer pour ce gas ?
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)