La fuite de la valeur Sentinel du moteur V8 entraîne des risques de sécurité. Un Oddball non initialisé devient un nouveau vecteur d'attaque.

robot
Création du résumé en cours

Analyse des problèmes de sécurité causés par la fuite de la valeur Sentinel dans le moteur Chrome v8

La valeur Sentinel 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. Il existe plusieurs valeurs Sentinel dans le code source de Chrome, dont certaines, si elles sont divulguées dans l'environnement JavaScript, pourraient poser des problèmes de sécurité.

Des études antérieures ont montré qu'il était possible d'exécuter n'importe quel code dans le sandbox Chrome via la fuite de l'objet TheHole. L'équipe de Google a rapidement corrigé le CVE associé. Cependant, en plus de l'objet TheHole, il existe d'autres objets natifs dans v8 qui ne devraient pas être exposés à JS. Cet article discutera de l'objet Oddball non initialisé, cette méthode de contournement est encore utilisable dans la dernière version de V8.

Il est à noter que cette méthode a une certaine universalité :

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

  2. Dans CVE-2022-1486, le POC a également directement divulgué UninitializedOddball.

  3. L'issue 1352549( fournit le code d'exploitation complet pour le CVE) non attribué.

Ces cas montrent que la fuite d'Uninitialized Oddball peut entraîner de graves problèmes de sécurité.

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. Si des objets natifs qui ne devraient pas être divulgués sont divulgués à JavaScript, cela pourrait permettre l'exécution de n'importe quel code dans le bac à sable.

Pour vérifier cela, nous pouvons modifier la fonction native de V8 pour révéler Uninitialized Oddball dans JavaScript. Plus précisément, nous pouvons modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate, afin qu'elle retourne Uninitialized Oddball.

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

Contourner la protection HardenType

L'utilisation d'Uninitialized Oddball permet de réaliser des lectures relativement arbitraires. Le code clé est le suivant :

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

let uninitialized_oddball = %TheHole(); let ab = new ArrayBuffer(8); let fa = new Float64Array(ab); let ia = new BigInt64Array(ab);

let evil = [1.1, 2.2, 3.3]; evil.prop = 1;

%PréparerFonctionPourOptimisation(lire); lire(mal, 0); lire(mal, 1); %OptimizeFunctionOnNextCall(lire); lire(mal, 0);

let val = read(uninitialized_oddball, "prop"); fa[0] = val; console.log(ia[0]);

Dans le code assembleur optimisé, le décalage est calculé directement selon la sémantique JavaScript et la valeur du tableau est renvoyée, sans vérifier que obj.prop est la valeur de key. Cela a conduit à une confusion de type, permettant ainsi une lecture arbitraire.

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

Étant donné que Uninitialized Oddball est trié en premier dans la mémoire V8 et est plus primitif, il est plus facile à falsifier que l'objet TheHole, ce qui en fait la méthode préférée pour contourner HardenType.

La solution de réparation recommandé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 le décalage pour retourner les valeurs du tableau.

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

Alerte PatchGap

Après analyse de l'Issue1352549, il a été constaté que certains logiciels pourraient présenter un problème de PatchGap. Par exemple, Skype n'a pas encore corrigé cette vulnérabilité. Sur la plateforme x86, en raison de l'absence de compression d'adresse, la lecture et l'écriture arbitraires sont relatives à l'ensemble du processus.

Bien que Skype ait activé l'ASLR, en raison de la taille importante des fichiers, un hacker peut facilement lire ou écrire à une adresse fixe, ce qui augmente fortement la 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 réaliser toute la chaîne d'exploitation de la vulnérabilité.

Cette fois, le PatchGap concerne non seulement l'Issue1352549, mais il va également considérablement réduire la difficulté d'exploitation de vulnérabilités similaires telles que CVE-2022-1486 et CVE-2021-30551. Les hackers n'ont presque pas besoin de recherches supplémentaires pour réaliser une exploitation complète.

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

Résumé

Cet article aborde brièvement les méthodes pour réaliser des lectures arbitraires en exploitant la fuite de Uninitialized Oddball. Il existe de nombreuses autres valeurs Sentinel dans V8, qui pourraient présenter des vulnérabilités similaires. Cela nous donne les enseignements suivants :

  1. D'autres fuites d'Uninitialized Oddball peuvent-elles également permettre une exécution de code à distance (RCE) sur V8 ?

  2. La question de savoir si ce type de problème doit être officiellement considéré comme un problème de sécurité reste controversée.

  3. Est-il nécessaire d'inclure des variables comme %TheHole/Uninitialized Oddball dans Fuzzer pour découvrir de nouveaux primitives d'exploitation ?

Quoi qu'il en soit, ce type de problème réduira considérablement le cycle d'exploitation complet pour les hackers, ce qui mérite notre attention particulière.

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

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

Révélation exclusive sur la façon de contourner 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 le contournement de Chrome v8 HardenProtect via la fuite de Sentinel Value

SENC0.27%
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
  • Partager
Commentaire
0/400
HallucinationGrowervip
· Il y a 11h
Oh mince, comment cela peut-il encore être divulgué ?
Voir l'originalRépondre0
CodeAuditQueenvip
· Il y a 11h
Encore un surface d'attaque de variante CVE, tsk tsk.
Voir l'originalRépondre0
WhaleWatchervip
· Il y a 11h
Google joue avec le feu ? Recul historique.
Voir l'originalRépondre0
BearMarketSurvivorvip
· Il y a 11h
Il y a vraiment des bugs qui ne peuvent jamais être corrigés.
Voir l'originalRépondre0
CryptoAdventurervip
· Il y a 11h
C'est encore le bon moment de payer la taxe sur l'intelligence ? Ceux qui comprennent, comprennent.
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)