Explorer les risques de sécurité dus à la fuite de valeurs Sentinel dans le moteur Chrome V8
Introduction
La valeur sentinelle 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. Cette valeur spéciale est largement utilisée dans le code source de Chrome. Récemment, des chercheurs ont réussi à réaliser une exécution de code arbitraire dans le sandbox grâce à la fuite de l'objet TheHole, ce qui a conduit aux vulnérabilités CVE-2021-38003 et CVE-2022-1364. L'équipe de Google a rapidement corrigé ces deux vulnérabilités.
Cependant, en plus de l'objet TheHole, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JavaScript. Cet article se concentrera sur l'objet Oddball non initialisé et présentera comment l'exploiter pour contourner le mécanisme HardenProtect de V8. Il convient de noter que cette méthode de contournement est toujours valable pour la dernière version de V8 et n'a pas encore été corrigée.
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 adjacente en mémoire. Une fois que ces objets natifs, qui ne devraient pas être exposés à JavaScript, sont divulgués, cela peut entraîner l'exécution de n'importe quel code dans le sandbox.
Pour vérifier cela, nous pouvons modifier la fonction native de V8 pour divulguer l'Oddball Non Initialisé dans JavaScript. La méthode consiste à modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate, afin qu'elle renvoie l'Oddball Non Initialisé.
Contourner la protection HardenType
L'utilisation d'objets Oddball non initialisés permet de réaliser des lectures et écritures relativement arbitraires. Dans le code JavaScript optimisé, la fonction read ne vérifie pas la valeur associée à obj.prop comme clé, mais calcule directement le décalage selon la sémantique JavaScript pour obtenir la valeur du tableau. Cela entraîne un mélange de types lors du calcul, permettant ainsi une lecture arbitraire.
Pour toute opération d'écriture, vous pouvez vous référer à la méthode de construction dans l'issue 1352549 pour l'analyse. La solution de correction suggérée consiste à ajouter une vérification de la carte du tableau 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.
Alerte PatchGap
Après avoir analysé l'Issue1352549, nous avons découvert que certains logiciels pourraient avoir un problème de PatchGap. Il convient de noter qu'à ce jour, Skype n'a toujours pas corrigé cette vulnérabilité. Dans un environnement x86, la mise en œuvre de la lecture et de l'écriture arbitraires sera différente, car il n'y a pas de compression d'adresse, ce qui permet d'opérer directement par rapport à l'ensemble du processus.
Le problème de PatchGap ne concerne pas seulement l'Issue1352549, la publication de nouvelles méthodes de contournement a également considérablement réduit la difficulté d'exploitation des vulnérabilités telles que l'Issue1314616 et l'Issue1216437. Les hackers n'ont pratiquement aucun coût de recherche à engager pour réaliser une exploitation complète des vulnérabilités uninitialized_oddball qui avaient été précédemment divulguées.
Résumé
Cet article discute brièvement des méthodes pour réaliser des lectures arbitraires en exploitant des uninitialized_Oddball dans la valeur Sentinel. Il existe également de nombreuses autres valeurs Sentinel dans V8 qui pourraient entraîner des problèmes de sécurité similaires. Cela nous donne les enseignements suivants :
D'autres fuites uninitialized_Oddball peuvent-elles également permettre une exécution de code à distance de V8 facilement ?
Il existe toujours des débats sur la question de savoir si ce type de problème doit être considéré comme un problème de sécurité formel.
Envisagez d'ajouter des valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables dans le fuzzer, afin d'explorer d'autres primitives d'exploitation.
Quelles que soient les considérations formelles de sécurité concernant ce type de problème, elles réduisent considérablement le temps nécessaire aux hackers pour exploiter pleinement les vulnérabilités.
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.
25 J'aime
Récompense
25
6
Reposter
Partager
Commentaire
0/400
FUD_Vaccinated
· 07-26 03:20
Encore noir Google, ce trou est trop fréquent 8
Voir l'originalRépondre0
MetaverseLandlord
· 07-24 11:22
Oh putain, les failles des navigateurs des autres sont si avancées.
Voir l'originalRépondre0
SerNgmi
· 07-23 05:34
V8 me rend fou...
Voir l'originalRépondre0
GateUser-a606bf0c
· 07-23 05:34
Hmm? Chrome fait encore des siennes?
Voir l'originalRépondre0
StablecoinAnxiety
· 07-23 05:15
La vulnérabilité de sécurité du navigateur est tellement excitante!
Voir l'originalRépondre0
PonziDetector
· 07-23 05:11
Wow, cette vulnérabilité V8 est assez importante !
Analyse des fuites de valeurs Sentinel du moteur Chrome V8 et des risques de sécurité associés
Explorer les risques de sécurité dus à la fuite de valeurs Sentinel dans le moteur Chrome V8
Introduction
La valeur sentinelle 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. Cette valeur spéciale est largement utilisée dans le code source de Chrome. Récemment, des chercheurs ont réussi à réaliser une exécution de code arbitraire dans le sandbox grâce à la fuite de l'objet TheHole, ce qui a conduit aux vulnérabilités CVE-2021-38003 et CVE-2022-1364. L'équipe de Google a rapidement corrigé ces deux vulnérabilités.
Cependant, en plus de l'objet TheHole, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JavaScript. Cet article se concentrera sur l'objet Oddball non initialisé et présentera comment l'exploiter pour contourner le mécanisme HardenProtect de V8. Il convient de noter que cette méthode de contournement est toujours valable pour la dernière version de V8 et n'a pas encore été corrigée.
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 adjacente en mémoire. Une fois que ces objets natifs, qui ne devraient pas être exposés à JavaScript, sont divulgués, cela peut entraîner l'exécution de n'importe quel code dans le sandbox.
Pour vérifier cela, nous pouvons modifier la fonction native de V8 pour divulguer l'Oddball Non Initialisé dans JavaScript. La méthode consiste à modifier le décalage relatif de la fonction %TheHole() par rapport à l'isolate, afin qu'elle renvoie l'Oddball Non Initialisé.
Contourner la protection HardenType
L'utilisation d'objets Oddball non initialisés permet de réaliser des lectures et écritures relativement arbitraires. Dans le code JavaScript optimisé, la fonction read ne vérifie pas la valeur associée à obj.prop comme clé, mais calcule directement le décalage selon la sémantique JavaScript pour obtenir la valeur du tableau. Cela entraîne un mélange de types lors du calcul, permettant ainsi une lecture arbitraire.
Pour toute opération d'écriture, vous pouvez vous référer à la méthode de construction dans l'issue 1352549 pour l'analyse. La solution de correction suggérée consiste à ajouter une vérification de la carte du tableau 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.
Alerte PatchGap
Après avoir analysé l'Issue1352549, nous avons découvert que certains logiciels pourraient avoir un problème de PatchGap. Il convient de noter qu'à ce jour, Skype n'a toujours pas corrigé cette vulnérabilité. Dans un environnement x86, la mise en œuvre de la lecture et de l'écriture arbitraires sera différente, car il n'y a pas de compression d'adresse, ce qui permet d'opérer directement par rapport à l'ensemble du processus.
Le problème de PatchGap ne concerne pas seulement l'Issue1352549, la publication de nouvelles méthodes de contournement a également considérablement réduit la difficulté d'exploitation des vulnérabilités telles que l'Issue1314616 et l'Issue1216437. Les hackers n'ont pratiquement aucun coût de recherche à engager pour réaliser une exploitation complète des vulnérabilités uninitialized_oddball qui avaient été précédemment divulguées.
Résumé
Cet article discute brièvement des méthodes pour réaliser des lectures arbitraires en exploitant des uninitialized_Oddball dans la valeur Sentinel. Il existe également de nombreuses autres valeurs Sentinel dans V8 qui pourraient entraîner des problèmes de sécurité similaires. Cela nous donne les enseignements suivants :
D'autres fuites uninitialized_Oddball peuvent-elles également permettre une exécution de code à distance de V8 facilement ?
Il existe toujours des débats sur la question de savoir si ce type de problème doit être considéré comme un problème de sécurité formel.
Envisagez d'ajouter des valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables dans le fuzzer, afin d'explorer d'autres primitives d'exploitation.
Quelles que soient les considérations formelles de sécurité concernant ce type de problème, elles réduisent considérablement le temps nécessaire aux hackers pour exploiter pleinement les vulnérabilités.