Nouvelle vulnérabilité du moteur Chrome V8 : fuite d'Oddball non initialisé contournant le bac à sable

robot
Création du résumé en cours

Contre la protection durcie de Chrome V8 en contournant la valeur Sentinel par fuite

Introduction

La valeur sentinel est une valeur spéciale dans les algorithmes, souvent utilisée comme condition d'arrêt dans les algorithmes de boucle ou de récursion. Ce type de valeur est largement utilisé 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 sandbox de Chrome en divulguant l'objet TheHole. L'équipe de Google a rapidement corrigé ces deux vulnérabilités zero-day.

Cependant, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JavaScript. Cet article discutera d'un nouvel objet : Uninitialized Oddball. Cette méthode d'évasion est apparue pour la première fois dans un problème soumis par un membre de Project0 et est toujours disponible dans la dernière version de V8.

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

  1. Dans le CVE-2021-30551, le premier POC est la fuite d'un oddball interne non initialisé.

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

  3. Un problème sans CVE attribué a également utilisé cette méthode.

Ces cas suffisent à illustrer l'importance de cette question, ce qui mérite de réexaminer les logiciels potentiellement affectés.

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

Valeur Sentinel dans V8

La plupart des objets natifs de V8 sont définis dans le fichier v8/src/roots/roots.h, et ils sont disposés de manière consécutive en mémoire. Une fois que ces objets natifs, qui ne devraient pas être divulgués, sont divulgués dans JavaScript, cela peut entraîner l'exécution de code arbitraire dans le bac à sable.

Nous pouvons divulguer Uninitialized Oddball dans JavaScript en modifiant les fonctions natives de V8. La méthode consiste à modifier le décalage par rapport à isolate dans la fonction %TheHole() pour qu'elle retourne Uninitialized Oddball.

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

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

Contournement de HardenType

L'utilisation d'Uninitialized Oddball permet une lecture et une écriture relativement arbitraires. La clé réside dans le fait que la fonction read optimisée ne vérifie que l'attribut prop de l'objet, sans vérifier la valeur de obj.prop en tant que clé. Cela entraîne une confusion de type lors du calcul, permettant ainsi une lecture arbitraire.

Dévoilement exclusif : contourner Chrome v8 HardenProtect grâce à la fuite de Sentinel Value

Révélation exclusive sur la façon de contourner Chrome v8 HardenProtect en utilisant la fuite de Sentinel Value

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

Sous l'architecture x86, en raison de l'absence de compression d'adresse, la lecture et l'écriture arbitraires se font par rapport à l'ensemble du processus. Bien que l'absence de compression d'adresse entraîne une certaine inconvenience, il est néanmoins possible de lire et d'écrire avec une probabilité relativement élevée sur le contenu cible en raison de la taille relativement grande de certains fichiers logiciels.

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

Avertissement PatchGap

Ce patch PatchGap concerne non seulement l'Issue1352549, mais inclut également plusieurs vulnérabilités similaires à l'Issue1314616 et à l'Issue1216437. Après la publication de la nouvelle méthode d'esquive, la difficulté d'exploitation de ces vulnérabilités a considérablement diminué. Les hackers peuvent presque compléter une chaîne d'exploitation complète sans avoir besoin de recherches supplémentaires.

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

Résumé

Il y a aussi beaucoup d'autres valeurs Sentinel dans V8, qui peuvent également rencontrer des problèmes similaires. Cela nous donne quelques indications :

  1. D'autres fuites uninitialized_Oddball peuvent-elles également permettre un RCE V8 ?

  2. Ces problèmes devraient-ils être considérés comme des problèmes de sécurité de manière officielle ?

  3. Faut-il inclure une valeur Sentinel en tant que variable dans les tests Fuzzer?

Quoi qu'il en soit, ce type de problème réduira considérablement le temps nécessaire aux hackers pour exploiter pleinement la vulnérabilité, ce qui mérite notre grande attention.

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

SENC3.9%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 6
  • Reposter
  • Partager
Commentaire
0/400
ContractTestervip
· 08-15 05:19
Le vieux problème des nouvelles vulnérabilités est de retour.
Voir l'originalRépondre0
BlockchainWorkervip
· 08-13 17:55
La vulnérabilité v8 est très grave.
Voir l'originalRépondre0
SocialFiQueenvip
· 08-12 12:23
Sérieux problème à suivre pour résolution
Voir l'originalRépondre0
CryptoFortuneTellervip
· 08-12 12:15
Le contournement des vulnérabilités n'est pas encore corrigé.
Voir l'originalRépondre0
GamefiHarvestervip
· 08-12 12:12
Wow, le V8 est de retour.
Voir l'originalRépondre0
CryptoSurvivorvip
· 08-12 12:11
Le sandbox a encore été contourné.
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)