Chrome v8 HardenProtect contournement : exécution de code arbitraire en utilisant Sentinel Value

Valeur Sentinelle et contournement de Chrome v8 HardenProtect

La valeur sentinelle est une valeur spéciale dans les algorithmes, souvent utilisée comme condition d'arrêt dans des algorithmes de boucle ou de récursion. Ce type de valeur spéciale est largement utilisé dans le code source de Chrome. Des recherches récentes ont montré qu'il est possible d'exécuter du code arbitraire dans le bac à sable de Chrome en divulguant certains objets de valeur sentinelle.

Cet article explorera les méthodes pour contourner le mécanisme HardenProtect de Chrome v8 en utilisant des objets Uninitialized Oddball. Cette méthode a été initialement proposée par un membre de Project0 dans l'Issue1352549 et est toujours applicable à la dernière version de V8, Google n'ayant pas encore corrigé cela.

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

  1. Issue1216437(CVE-2021-30551) a présenté pour la première fois un poc de fuite d'un internal uninitialized oddball.

  2. L'issue 1314616( CVE-2022-1486) a également directement divulgué l'objet UninitializedOddball.

  3. Issue1352549( n'a actuellement aucune CVE) qui montre la chaîne d'exploitation complète de cette méthode.

Ces cas montrent que cette méthode de contournement pourrait affecter plusieurs versions de logiciels. À ce jour, des logiciels comme Skype n'ont toujours pas corrigé cette vulnérabilité.

Valeur Sentinel dans V8

Dans le code source de V8, un grand nombre d'objets natifs sont définis, y compris plusieurs valeurs Sentinel. Ces objets sont disposés consécutivement en mémoire. Une fois qu'un objet natif ne devant pas être divulgué est exposé à JavaScript, il est possible d'exécuter n'importe quel code dans le bac à sable.

Pour valider cette méthode, nous pouvons modifier la fonction V8 %TheHole() pour qu'elle retourne un objet Uninitialized Oddball.

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

Contournement de HardenType

Le code ci-dessous montre comment utiliser des objets Oddball non initialisés divulgués pour réaliser une lecture arbitraire :

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

laisse uninitialized_oddball = %GetUninitialized(); let ab = new ArrayBuffer(8); let f64 = new Float64Array(ab); let u32 = new Uint32Array(ab);

pour (let i = 0; i < 0x10000; i++) { lire({prop: 1.1}, 0);
}

%OptimizeFunctionOnNextCall(lire);

let val = read({prop: uninitialized_oddball}, 0x1234); f64[0] = val; console.log(u32[0].toString(16), u32[1].toString(16));

Le code d'assemblage de la fonction read optimisée montre que la fonction ne vérifie que la propriété prop de l'objet obj, sans vérifier la valeur de obj.prop avant de calculer le décalage, ce qui provoque une confusion de type et permet une lecture arbitraire.

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

Proposition de solution : lors du retour des éléments du tableau par la fonction optimisée, ajouter une vérification du tableau map pour éviter de calculer directement le décalage.

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

Alerte PatchGap

Cette méthode de contournement affecte non seulement les vulnérabilités historiques, mais pourrait également affecter les logiciels actuels. Par exemple, Skype n'a toujours pas corrigé ce problème. Sur la plateforme x86, en raison du manque de compression d'adresses, la plage de lecture et d'écriture arbitraire est plus grande.

Cette fois, PatchGap concerne non seulement l'Issue1352549, mais a également considérablement réduit la difficulté d'exploitation des problèmes similaires tels que l'Issue1314616 et l'Issue1216437. Il est recommandé aux fabricants de procéder à un examen complet des vulnérabilités associées.

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

Résumé

Cet article décrit comment utiliser Uninitialized Oddball pour réaliser une lecture arbitraire dans V8. Il existe d'autres valeurs Sentinel dans V8 qui pourraient présenter des risques de sécurité similaires. Il est conseillé de poursuivre les recherches :

  1. Est-ce que la divulgation d'autres valeurs Sentinel peut permettre un RCE dans V8 ?
  2. Ajouter la valeur Sentinel en tant que variable dans le Fuzzer, pour découvrir de nouveaux primitives d'exploitation.
  3. Reconnaître les risques de sécurité que ce type de problème peut poser.

Que la question soit officiellement classée comme une vulnérabilité de sécurité ou non, elle pourrait considérablement réduire le cycle d'exploitation complet des hackers. J'espère que cet article attirera l'attention des parties concernées.

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 le HardenProtect de Chrome v8 en utilisant la fuite de Sentinel Value

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 en utilisant la fuite de la valeur Sentinel

Exclusif : révélation sur la manière de contourner Chrome v8 HardenProtect grâce à la fuite de la valeur Sentinel

SENC5.48%
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
WinterWarmthCatvip
· 08-10 01:53
Le post de détails de Qiangqiang doit être apprécié.
Voir l'originalRépondre0
StakeOrRegretvip
· 08-08 15:35
Une nouvelle vulnérabilité du navigateur a été découverte.
Voir l'originalRépondre0
LayerZeroHerovip
· 08-07 02:24
Un bug plutôt cool
Voir l'originalRépondre0
Web3ProductManagervip
· 08-07 02:23
Cas de figure super risqué ici
Voir l'originalRépondre0
GhostWalletSleuthvip
· 08-07 02:11
Les vulnérabilités sont vraiment difficiles à prévenir.
Voir l'originalRépondre0
UnluckyLemurvip
· 08-07 02:04
Cette faille a beaucoup de failles.
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)