Exploration approfondie de l'impact de sécurité de la valeur Sentinel dans le moteur Chrome V8
La valeur sentinelle est une valeur spéciale dans les algorithmes, souvent utilisée comme condition d'arrêt dans les algorithmes de boucle ou de récursion. Il existe plusieurs valeurs sentinelles dans le code source de Chrome. Des recherches antérieures ont montré qu'il était possible d'exécuter du code arbitraire dans le bac à sable de Chrome en compromettant l'objet TheHole. L'équipe de Google a ensuite corrigé les vulnérabilités associées.
Cependant, il existe d'autres objets natifs dans V8 qui ne devraient pas être exposés à JavaScript. Cet article discutera des objets Uninitialized Oddball, cette méthode d'évasion a été mentionnée pour la première fois dans l'Issue1352549. Il convient de noter que cette méthode est toujours disponible dans la dernière version de V8 et n'a pas encore été corrigée.
Cette méthode a une certaine universalité :
Issue1216437(CVE-2021-30551) a donné pour la première fois un poc pour la fuite d'un oddball interne non initialisé.
Issue1314616(CVE-2022-1486) a également directement divulgué UninitializedOddball.
L'impact de l'émission 1352549( NoCVE ) mérite d'être pris en compte.
Ces cas montrent qu'il est nécessaire de réévaluer les logiciels qui pourraient être affectés par PatchGap. Actuellement, Skype n'a 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 ils sont disposés de manière adjacente en mémoire. Une fois que ces objets natifs, qui ne devraient pas être divulgués, sont divulgués dans JavaScript, il peut être possible d'exécuter n'importe quel code dans le bac à sable.
Pour valider cette méthode, nous pouvons modifier la fonction native de V8 pour divulguer Uninitialized Oddball dans JavaScript. Plus précisément, nous pouvons modifier l'offset relatif à l'isolate dans la fonction %TheHole() pour qu'elle retourne Uninitialized Oddball.
Cette méthode permet de contourner la protection HardenType et d'atteindre une lecture/écriture relativement arbitraire. L'analyse du code JavaScript optimisé révèle qu'il n'y a pas de validation de la valeur dont la clé est obj.prop lors de la vérification de obj.prop, ce qui conduit à un calcul d'offset selon la sémantique JavaScript et à l'obtention de la valeur du tableau, entraînant ainsi un mélange de types.
En raison de la priorité plus élevée et plus primitive de uninitialized_oddball dans la mémoire V8, il est plus facile de le falsifier que l'objet TheHole. Après que les atténuations liées à TheHole aient été corrigées, cette méthode est devenue le choix privilégié pour contourner.
Il est conseillé d'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 les valeurs de retour par décalage.
Il convient de noter que Skype n'a pas encore corrigé cette vulnérabilité. Sur les systèmes x86, en raison de l'absence de compression d'adresses, la lecture et l'écriture arbitraires se font par rapport à l'ensemble du processus. Bien que Skype ait activé l'ASLR, en raison de la taille importante des fichiers, les hackers n'ont qu'à lire et écrire à des adresses fixes, ce qui augmente considérablement les chances de lire et d'écrire dans le contenu des fichiers Skype. Cela réduit considérablement la difficulté de réaliser une chaîne d'exploitation complète.
Cette fois, PatchGap n'implique pas seulement l'Issue1352549, la publication d'une nouvelle méthode 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 presque pas besoin de recherches supplémentaires pour exploiter pleinement les vulnérabilités précédentes liées à la fuite de uninitialized_oddball.
Il existe également d'autres valeurs Sentinel dans V8, qui peuvent également présenter des vulnérabilités similaires. Il est recommandé de considérer l'ajout de valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables dans les tests de fuzzing, afin de découvrir d'autres primitives d'exploitation potentielles.
Que ces problèmes soient ou non officiellement considérés comme des problèmes de sécurité, ils réduisent considérablement le délai dans lequel les pirates peuvent entièrement exploiter les failles. Nous devons continuer à surveiller et à étudier ce domaine pour améliorer la sécurité des logiciels tels que Chrome.
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.
14 J'aime
Récompense
14
3
Reposter
Partager
Commentaire
0/400
GateUser-00be86fc
· Il y a 13h
Oh, v8 a encore révélé une petite vulnérabilité.
Voir l'originalRépondre0
Blockblind
· Il y a 13h
Ce bug a duré si longtemps sans être corrigé, c'est impressionnant.
Voir l'originalRépondre0
ImpermanentSage
· Il y a 13h
Mince, c'est encore une faille d'exécution de code.
Analyse approfondie des risques de sécurité des valeurs Sentinel du moteur Chrome V8
Exploration approfondie de l'impact de sécurité de la valeur Sentinel dans le moteur Chrome V8
La valeur sentinelle est une valeur spéciale dans les algorithmes, souvent utilisée comme condition d'arrêt dans les algorithmes de boucle ou de récursion. Il existe plusieurs valeurs sentinelles dans le code source de Chrome. Des recherches antérieures ont montré qu'il était possible d'exécuter du code arbitraire dans le bac à sable de Chrome en compromettant l'objet TheHole. L'équipe de Google a ensuite corrigé les vulnérabilités associées.
Cependant, il existe d'autres objets natifs dans V8 qui ne devraient pas être exposés à JavaScript. Cet article discutera des objets Uninitialized Oddball, cette méthode d'évasion a été mentionnée pour la première fois dans l'Issue1352549. Il convient de noter que cette méthode est toujours disponible dans la dernière version de V8 et n'a pas encore été corrigée.
Cette méthode a une certaine universalité :
Issue1216437(CVE-2021-30551) a donné pour la première fois un poc pour la fuite d'un oddball interne non initialisé.
Issue1314616(CVE-2022-1486) a également directement divulgué UninitializedOddball.
L'impact de l'émission 1352549( NoCVE ) mérite d'être pris en compte.
Ces cas montrent qu'il est nécessaire de réévaluer les logiciels qui pourraient être affectés par PatchGap. Actuellement, Skype n'a 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 ils sont disposés de manière adjacente en mémoire. Une fois que ces objets natifs, qui ne devraient pas être divulgués, sont divulgués dans JavaScript, il peut être possible d'exécuter n'importe quel code dans le bac à sable.
Pour valider cette méthode, nous pouvons modifier la fonction native de V8 pour divulguer Uninitialized Oddball dans JavaScript. Plus précisément, nous pouvons modifier l'offset relatif à l'isolate dans la fonction %TheHole() pour qu'elle retourne Uninitialized Oddball.
Cette méthode permet de contourner la protection HardenType et d'atteindre une lecture/écriture relativement arbitraire. L'analyse du code JavaScript optimisé révèle qu'il n'y a pas de validation de la valeur dont la clé est obj.prop lors de la vérification de obj.prop, ce qui conduit à un calcul d'offset selon la sémantique JavaScript et à l'obtention de la valeur du tableau, entraînant ainsi un mélange de types.
En raison de la priorité plus élevée et plus primitive de uninitialized_oddball dans la mémoire V8, il est plus facile de le falsifier que l'objet TheHole. Après que les atténuations liées à TheHole aient été corrigées, cette méthode est devenue le choix privilégié pour contourner.
Il est conseillé d'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 les valeurs de retour par décalage.
Il convient de noter que Skype n'a pas encore corrigé cette vulnérabilité. Sur les systèmes x86, en raison de l'absence de compression d'adresses, la lecture et l'écriture arbitraires se font par rapport à l'ensemble du processus. Bien que Skype ait activé l'ASLR, en raison de la taille importante des fichiers, les hackers n'ont qu'à lire et écrire à des adresses fixes, ce qui augmente considérablement les chances de lire et d'écrire dans le contenu des fichiers Skype. Cela réduit considérablement la difficulté de réaliser une chaîne d'exploitation complète.
Cette fois, PatchGap n'implique pas seulement l'Issue1352549, la publication d'une nouvelle méthode 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 presque pas besoin de recherches supplémentaires pour exploiter pleinement les vulnérabilités précédentes liées à la fuite de uninitialized_oddball.
Il existe également d'autres valeurs Sentinel dans V8, qui peuvent également présenter des vulnérabilités similaires. Il est recommandé de considérer l'ajout de valeurs Sentinel telles que %TheHole/uninitialized_Oddball en tant que variables dans les tests de fuzzing, afin de découvrir d'autres primitives d'exploitation potentielles.
Que ces problèmes soient ou non officiellement considérés comme des problèmes de sécurité, ils réduisent considérablement le délai dans lequel les pirates peuvent entièrement exploiter les failles. Nous devons continuer à surveiller et à étudier ce domaine pour améliorer la sécurité des logiciels tels que Chrome.