Analyse des exploits de la vulnérabilité Sentinel Value du moteur Chrome V8 : exécution de code à distance (RCE) réalisable sans études supplémentaires.

robot
Création du résumé en cours

Analyse de l'exploitation de la vulnérabilité de la valeur sentinelle dans le moteur Chrome V8

La valeur sentinel est une valeur spéciale dans les algorithmes, généralement utilisée comme condition de terminaison dans les algorithmes de boucle ou de récursion. Il existe de nombreuses valeurs sentinel dans le code source de Chrome. Des recherches antérieures ont montré qu'il était possible d'exécuter n'importe quel code dans le bac à sable de Chrome en divulguant l'objet TheHole. L'équipe de Google a ensuite corrigé les vulnérabilités associées.

Cependant, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JS. Cet article traite de l'objet Uninitialized Oddball, dont la divulgation peut conduire à des méthodes de contournement de sandbox qui sont encore disponibles dans la dernière version de V8.

Il convient de noter que cette méthode présente une certaine généralité :

  1. CVE-2021-30551 Le PoC initial était la fuite d'un oddball interne non initialisé.

  2. Le PoC de CVE-2022-1486 a également directement révélé UninitializedOddball.

  3. Issue1352549 ( fournit des détails sur la méthode d'exploitation de CVE) non attribué.

Ces cas montrent qu'il est important de prêter attention à la possibilité d'attaques utilisant l'exploitation de l'Uninitialized Oddball.

Valeur sentinelle dans V8

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

Pour vérifier cela, vous pouvez modifier la valeur de retour de la fonction native %TheHole() de V8 en Uninitialized Oddball.

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

Contourner la protection HardenType

Le code de contournement complet est donné dans l'issue 1352549. La logique de base simplifiée est la suivante :

javascript fonction lire(objet, idx) { return obj[idx]; }

let uninitialized = %TheHole(); let arr = [1.1]; let res = read(non initialisé, 0x12345); %DebugPrint(res);

Ce code peut toujours réaliser une lecture relativement arbitraire dans la dernière version V8 11.0.0.

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

En analysant le code d'assemblage de la fonction read optimisée, on peut constater qu'elle ne vérifie que si la propriété prop de l'objet obj est correcte, mais ne vérifie pas la valeur de obj.prop en tant que clé. Cela entraîne une confusion de type lors du calcul, permettant une lecture arbitraire.

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

Lorsqu'un uninitialized_oddball est passé, le calcul commence à partir de obj à partir d'une instruction spécifique, et se termine finalement par l'instruction vmovsd xmm0,[r9+r11*8+0x7] qui effectue une lecture arbitraire, les données étant stockées dans le registre xmm0.

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

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

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

Avertissement PatchGap

Lors de l'examen des logiciels susceptibles de présenter un PatchGap, il a été constaté que Skype n'avait pas encore corrigé cette vulnérabilité. Dans l'architecture x86, en raison de l'absence de compression d'adresse, la lecture et l'écriture arbitraires se font directement par rapport à l'ensemble du processus.

Bien que Skype ait activé l'ASLR, en raison de la taille importante de ses fichiers, placés directement dans 4 Go de mémoire, un attaquant n'a qu'à lire ou écrire à une adresse fixe pour avoir une forte probabilité d'accéder au contenu des fichiers de Skype. En combinant cela avec des méthodes traditionnelles telles que l'analyse PE, il est possible de compléter toute la chaîne d'exploitation de la vulnérabilité.

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

Cette fois, PatchGap concerne non seulement l'Issue1352549, mais a également considérablement réduit la difficulté d'exploitation de problèmes similaires à l'Issue1314616 et à l'Issue1216437. Les hackers n'ont presque pas besoin de recherches supplémentaires pour réaliser une exploitation complète de toute fuite d'une vulnérabilité uninitialized_oddball.

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

Résumé

Cet article présente une méthode pour réaliser une lecture arbitraire en révélant un uninitialized_Oddball dans la valeur Sentinel. Il existe également d'autres valeurs Sentinel dans V8 qui pourraient causer des problèmes similaires. Cela nous donne les enseignements suivants :

  1. D'autres fuites uninitialized_Oddball peuvent-elles également permettre une exécution de code à distance (RCE) facile dans V8.

  2. Il existe encore un débat sur la question de savoir si de tels problèmes doivent être traités officiellement comme des problèmes de sécurité.

  3. Dans le fuzzer, il peut être envisagé d'ajouter des valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables pour explorer d'autres primitives d'exploitation.

Quoi qu'il en soit, ce type de problème raccourcira considérablement le délai dans lequel les hackers peuvent exploiter pleinement.

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

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

SENC-3.37%
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
  • 5
  • Reposter
  • Partager
Commentaire
0/400
CoffeeNFTradervip
· 07-22 08:13
Encore une vulnérabilité de sécurité, cela panique tout le monde.
Voir l'originalRépondre0
Hash_Banditvip
· 07-21 21:23
l'exploitation minière du moteur js vient de devenir réelle... la difficulté d'exploitation est au maximum
Voir l'originalRépondre0
ConsensusDissentervip
· 07-20 00:25
Un autre trou noir de code est apparu, c'est trop effrayant.
Voir l'originalRépondre0
Blockblindvip
· 07-20 00:19
v8 a aussi une si grande vulnérabilité ? Je meurs de rire
Voir l'originalRépondre0
BlockchainTalkervip
· 07-20 00:12
je suis en fait surpris que V8 ait encore du mal avec ça... p.s. où est mon isolation d'exécution fam ?
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)