Contournement de HardenProtect de Chrome v8 en divulguant la valeur Sentinel
Introduction
La valeur sentinel est une valeur spéciale dans un algorithme, généralement présente comme condition de terminaison dans les algorithmes de boucle ou de récursion. Il y a beaucoup de valeurs sentinel dans le code source de Chrome. Des études antérieures ont montré comment exécuter n'importe quel code dans le sandbox en exploitant la fuite de l'objet TheHole. L'équipe de Google a rapidement mis à jour les correctifs associés par la suite.
En plus de l'objet TheHole, il existe de nombreux autres objets natifs dans V8 qui ne devraient pas être exposés au JS. Cet article discutera de l'objet Uninitialized Oddball, qui peut encore être utilisé dans la dernière version de V8. Il est important de noter que cette méthode présente une certaine universalité et a été observée dans plusieurs vulnérabilités.
Valeur Sentinel dans V8
La plupart des objets natifs de v8 sont définis dans le fichier v8/src/roots/roots.h, ces objets sont disposés de manière contiguë en mémoire. Une fois qu'un objet natif qui ne devrait pas être divulgué est exposé à Javascript, il est possible d'exécuter du code arbitraire dans le sandbox.
Pour valider cette méthode, nous pouvons modifier la fonction native de v8 pour faire fuiter Uninitialized Oddball dans JavaScript. Il est possible de modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate.
Contournement de HardenType
L'utilisation d'Uninitialized Oddball permet d'effectuer des lectures et écritures relativement arbitraires. La clé réside dans la fonction de lecture JavaScript optimisée, qui ne vérifie que si l'attribut prop de l'objet est correct, mais ne vérifie pas la valeur associée à obj.prop en tant que clé, mais calcule directement le décalage selon la sémantique JavaScript pour obtenir la valeur du tableau. Cela entraîne une confusion de types lors du calcul, permettant ainsi une lecture arbitraire.
En raison de la priorité d'Uninitialized Oddball dans la mémoire v8 et de sa nature plus primitive, il est plus facile de le falsifier par rapport à l'objet TheHole, ce qui en fait la méthode préférée pour contourner les correctifs de TheHole.
La solution recommandée consiste à ajouter une vérification de la carte du tableau lors du retour des éléments du tableau par la fonction optimisée, afin d'éviter de calculer directement le décalage pour renvoyer la valeur.
Avertissement de risque PatchGap
En plus de se concentrer sur les vulnérabilités historiques, il est également important de prêter attention aux failles que les fabricants corrigent discrètement dans les composants de base. À l'heure actuelle, Skype n'a toujours pas corrigé cette vulnérabilité. Les méthodes d'exploitation varient légèrement entre x86 et x64, mais elles permettent toutes un accès en lecture et écriture arbitraire.
Cette fois, PatchGap concerne non seulement l'Issue1352549, mais la publication de la nouvelle méthode a également considérablement réduit la difficulté d'exploitation des vulnérabilités similaires. Les hackers n'ont presque plus besoin d'étudier pour réaliser une exploitation complète de toute fuite de la vulnérabilité Uninitialized Oddball.
Résumé
Il existe également de nombreuses autres valeurs Sentinel dans v8, ce qui pourrait poser des problèmes similaires. Cela nous donne quelques idées :
D'autres fuites Uninitialized Oddball sont-elles également faciles à réaliser en RCE v8.
Il existe encore un débat sur la question de savoir si ce type de problème doit être officiellement considéré comme un problème de sécurité.
Lors des tests de fuzz, il peut être nécessaire d'envisager d'ajouter différentes valeurs Sentinel en tant que variables.
Quoi qu'il en soit, ce type de problème réduira considérablement le cycle complet d'exploitation des hackers. Nous devons rester vigilants à cet égard.
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.
9 J'aime
Récompense
9
6
Partager
Commentaire
0/400
MetaMaskVictim
· Il y a 8h
Encore piégé par les problèmes de v8.
Voir l'originalRépondre0
gas_fee_therapist
· 08-05 17:35
v8 a encore tout gâché, la sécurité est de plus en plus pump.
Voir l'originalRépondre0
GreenCandleCollector
· 08-05 17:34
Ce bug est plutôt hardcore, non ?
Voir l'originalRépondre0
LightningPacketLoss
· 08-05 17:32
Ce bug a encore été résolu. Nous devons rapidement réparer notre salle de serveurs.
Voir l'originalRépondre0
ChainMelonWatcher
· 08-05 17:32
Ah ça... le frère qui fait des trous a encore sorti quelque chose de nouveau.
Voir l'originalRépondre0
ImpermanentLossFan
· 08-05 17:31
Je n'arrive pas à croire qu'il y ait encore ce genre de vulnérabilité dans v8.
Nouvelle méthode d'exploitation de la vulnérabilité Chrome v8 : fuite de la mise en œuvre d'Oddball non initialisé pour l'évasion de sandbox.
Contournement de HardenProtect de Chrome v8 en divulguant la valeur Sentinel
Introduction
La valeur sentinel est une valeur spéciale dans un algorithme, généralement présente comme condition de terminaison dans les algorithmes de boucle ou de récursion. Il y a beaucoup de valeurs sentinel dans le code source de Chrome. Des études antérieures ont montré comment exécuter n'importe quel code dans le sandbox en exploitant la fuite de l'objet TheHole. L'équipe de Google a rapidement mis à jour les correctifs associés par la suite.
En plus de l'objet TheHole, il existe de nombreux autres objets natifs dans V8 qui ne devraient pas être exposés au JS. Cet article discutera de l'objet Uninitialized Oddball, qui peut encore être utilisé dans la dernière version de V8. Il est important de noter que cette méthode présente une certaine universalité et a été observée dans plusieurs vulnérabilités.
Valeur Sentinel dans V8
La plupart des objets natifs de v8 sont définis dans le fichier v8/src/roots/roots.h, ces objets sont disposés de manière contiguë en mémoire. Une fois qu'un objet natif qui ne devrait pas être divulgué est exposé à Javascript, il est possible d'exécuter du code arbitraire dans le sandbox.
Pour valider cette méthode, nous pouvons modifier la fonction native de v8 pour faire fuiter Uninitialized Oddball dans JavaScript. Il est possible de modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate.
Contournement de HardenType
L'utilisation d'Uninitialized Oddball permet d'effectuer des lectures et écritures relativement arbitraires. La clé réside dans la fonction de lecture JavaScript optimisée, qui ne vérifie que si l'attribut prop de l'objet est correct, mais ne vérifie pas la valeur associée à obj.prop en tant que clé, mais calcule directement le décalage selon la sémantique JavaScript pour obtenir la valeur du tableau. Cela entraîne une confusion de types lors du calcul, permettant ainsi une lecture arbitraire.
En raison de la priorité d'Uninitialized Oddball dans la mémoire v8 et de sa nature plus primitive, il est plus facile de le falsifier par rapport à l'objet TheHole, ce qui en fait la méthode préférée pour contourner les correctifs de TheHole.
La solution recommandée consiste à ajouter une vérification de la carte du tableau lors du retour des éléments du tableau par la fonction optimisée, afin d'éviter de calculer directement le décalage pour renvoyer la valeur.
Avertissement de risque PatchGap
En plus de se concentrer sur les vulnérabilités historiques, il est également important de prêter attention aux failles que les fabricants corrigent discrètement dans les composants de base. À l'heure actuelle, Skype n'a toujours pas corrigé cette vulnérabilité. Les méthodes d'exploitation varient légèrement entre x86 et x64, mais elles permettent toutes un accès en lecture et écriture arbitraire.
Cette fois, PatchGap concerne non seulement l'Issue1352549, mais la publication de la nouvelle méthode a également considérablement réduit la difficulté d'exploitation des vulnérabilités similaires. Les hackers n'ont presque plus besoin d'étudier pour réaliser une exploitation complète de toute fuite de la vulnérabilité Uninitialized Oddball.
Résumé
Il existe également de nombreuses autres valeurs Sentinel dans v8, ce qui pourrait poser des problèmes similaires. Cela nous donne quelques idées :
D'autres fuites Uninitialized Oddball sont-elles également faciles à réaliser en RCE v8.
Il existe encore un débat sur la question de savoir si ce type de problème doit être officiellement considéré comme un problème de sécurité.
Lors des tests de fuzz, il peut être nécessaire d'envisager d'ajouter différentes valeurs Sentinel en tant que variables.
Quoi qu'il en soit, ce type de problème réduira considérablement le cycle complet d'exploitation des hackers. Nous devons rester vigilants à cet égard.