Le moteur Chrome V8 présente à nouveau une vulnérabilité de sécurité : la fuite de la valeur Sentinel peut contourner le sandbox.

robot
Création du résumé en cours

Contourner Chrome V8 HardenProtect en divulguant la valeur Sentinel

La valeur sentinelle est une valeur spéciale dans les algorithmes, souvent utilisée comme condition d'arrêt pour les algorithmes de boucle ou de récursion. Il existe plusieurs valeurs sentinelles dans le code source de Chrome. Des recherches précédentes ont montré comment utiliser l'objet TheHole pour provoquer une exécution de code arbitraire dans le bac à sable. Cet article discutera d'un autre objet natif de V8 - Uninitialized Oddball, qui peut encore être utilisé dans la dernière version de V8.

Cette méthode a une universalité :

  1. Le problème 1216437 a d'abord introduit le concept de fuite d'un oddball interne non initialisé.

  2. L'issue 1314616 a également révélé directement UninitializedOddball, même si la méthode d'exploitation n'était pas claire à l'époque.

  3. L'issue 1352549 mérite d'être surveillée en raison de son impact potentiel.

Actuellement, certains logiciels n'ont toujours pas corrigé cette vulnérabilité.

La plupart des objets natifs dans 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 que des 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 valider cette méthode, vous pouvez modifier la fonction native de V8 pour divulguer Uninitialized Oddball dans JavaScript. En particulier, vous pouvez modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate.

Le code principal de cette méthode de contournement est le suivant :

javascript function read(obj, prop) { return obj[prop]; }

let uninitialized_oddball = %TheHole(); let arr = [1.1, 2.2, 3.3];

pour (let i = 0; i < 100000; i++) { lire(arr, 0);
}

let val = read(uninitialized_oddball, 0); console.log(val);

Dans V8 11.0.0, lors des tests, lorsque %TheHole() renvoie UninitializedOddball, une lecture relativement arbitraire peut toujours être réalisée.

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

L'assemblage clé de la fonction read optimisée est le suivant :

0x558b20004086 mov r11,rdi 0x558b20004089 movzx edi,byte ptr [r11+0xb] 0x558b2000408d cmp edi,0x81 0x558b20004093 jnz 0x558b200040d8 0x558b20004095 mov r9,qword ptr [r11+0xf] 0x558b20004099 test esi,esi 0x558b2000409b js 0x558b200040d8 0x558b2000409d movsxd r11,esi 0x558b200040a0 cmp r11,qword ptr [r9+0xf] 0x558b200040a4 jae 0x558b200040d8 0x558b200040a6 vmovsd xmm0,[r9+r11*8+0x7]

Lorsqu'un uninitialized_oddball est passé, le calcul commence à partir de 0x558b20004086 avec obj comme point de départ, et se termine finalement par une lecture arbitraire dans l'instruction vmovsd, les données étant stockées dans le registre xmm0.

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

La méthode de réparation suggérée consiste à ajouter une vérification du tableau map 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.

Il est à noter que certains logiciels n'ont toujours pas corrigé cette vulnérabilité. Les méthodes d'exploitation sur la plateforme x86 sont légèrement différentes ; en raison de l'absence de compression d'adresse, la lecture et l'écriture arbitraires sont relatives à l'ensemble du processus. Même si ASLR est activé, en raison de la taille des fichiers, il y a toujours une probabilité élevée de lire et d'écrire le contenu cible.

Cette nouvelle méthode d'esquive réduit considérablement la difficulté d'exploitation des vulnérabilités similaires précédentes. Il est recommandé de réévaluer toutes les vulnérabilités qui divulguent uninitialized_oddball.

Il existe également d'autres valeurs Sentinel dans V8, qui peuvent également entraîner des problèmes similaires. Cela nous donne les enseignements suivants:

  1. D'autres fuites uninitialized_Oddball sont-elles également faciles à réaliser V8 RCE.

  2. Il reste controversé de savoir si de telles questions devraient être considérées comme des problèmes de sécurité.

  3. Faut-il ajouter la valeur Sentinel en tant que variable dans Fuzzer pour découvrir de nouveaux primitives d'exploitation.

Quoi qu'il en soit, ce type de problème réduit considérablement le temps nécessaire aux hackers pour exploiter pleinement les vulnérabilités.

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 la valeur Sentinel

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

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

Révélations exclusives 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

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
  • 5
  • Partager
Commentaire
0/400
ZKProofEnthusiastvip
· 07-09 11:53
Il est bien connu que V8 propulse le monde.
Voir l'originalRépondre0
SleepyValidatorvip
· 07-06 23:01
Chrome n'est vraiment pas à prendre à la légère, c'est stable.
Voir l'originalRépondre0
FlashLoanLordvip
· 07-06 17:06
Comment se fait-il qu'un si grand bug n'ait toujours pas été corrigé ?
Voir l'originalRépondre0
ForkItAllvip
· 07-06 17:00
Cette vulnérabilité v8 est vraiment ybb.
Voir l'originalRépondre0
FudVaccinatorvip
· 07-06 16:51
Une autre vulnérabilité majeure. Utiliser Firefox est vraiment agréable.
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)