Valeur sentinelle dans Chrome V8 : risques de sécurité
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. Dans le code source de Chrome, il existe plusieurs valeurs sentinelles, dont certaines, si elles sont divulguées dans l'environnement JavaScript, pourraient entraîner des problèmes de sécurité.
Des recherches antérieures ont montré que la fuite de l'objet TheHole peut permettre l'exécution de n'importe quel code dans un sandbox. L'équipe de Google a corrigé cela. Cependant, en réalité, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JS, comme l'objet Oddball non initialisé.
La fuite d'objets Oddball non initialisés peut entraîner une évasion de sandbox. Ce problème est apparu pour la première fois dans l'Issue1352549 et n'a pas encore été corrigé. Cette méthode présente une certaine généralité et a été observée dans plusieurs vulnérabilités.
Les 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 s'échappent dans l'environnement JavaScript, il est possible de réaliser une fuite de bac à sable.
Pour vérifier ce problème, vous pouvez modifier la fonction native de V8 pour divulguer Uninitialized Oddball dans JavaScript. Plus précisément, vous pouvez modifier l'implémentation de la fonction %TheHole().
L'utilisation d'un objet Oddball non initialisé peut contourner la protection HardenType. En construisant un code JavaScript spécifique, il est possible d'effectuer des lectures et écritures en mémoire relativement arbitraires. Cela est dû au fait que le code optimisé ne vérifie pas pleinement les propriétés des objets.
Pour les suggestions de correction, il convient d'ajouter une vérification de la map du tableau lors du retour des éléments du tableau par la fonction optimisée, afin d'éviter le calcul direct des valeurs de retour d'offset.
Cette question nous rappelle également de prêter attention à PatchGap, c'est-à-dire que certains logiciels peuvent utiliser une version de V8 qui n'a pas corrigé cette vulnérabilité. Par exemple, Skype n'a pas encore corrigé ce problème. Dans l'architecture x86, en raison de l'absence de compression d'adresse, il est possible de réaliser des lectures et écritures arbitraires dans la portée des processus.
En général, il existe plusieurs valeurs Sentinel dans V8 qui pourraient présenter des risques de sécurité similaires. Il est conseillé d'étudier davantage l'impact d'autres fuites de Uninitialized Oddball et de considérer l'inclusion de ces objets dans le champ des tests de fuzzing pour découvrir d'autres méthodes d'exploitation potentielles. Quoi qu'il en soit, ces problèmes pourraient considérablement réduire le cycle d'exploitation des vulnérabilités par les attaquants.
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.
5 J'aime
Récompense
5
5
Partager
Commentaire
0/400
DuckFluff
· Il y a 13h
Oh là là, ce bug a l'air génial !~
Voir l'originalRépondre0
ShitcoinConnoisseur
· 07-11 14:18
Et ça, tu ne le répares pas tout de suite ? Que fait v8 ?
Voir l'originalRépondre0
WhaleMistaker
· 07-11 02:45
Une grande vulnérabilité de Chrome est encore arrivée.
Chrome V8 Sentinel Value vulnérabilité : la fuite d'un objet Oddball non initialisé peut entraîner une évasion de bac à sable.
Valeur sentinelle dans Chrome V8 : risques de sécurité
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. Dans le code source de Chrome, il existe plusieurs valeurs sentinelles, dont certaines, si elles sont divulguées dans l'environnement JavaScript, pourraient entraîner des problèmes de sécurité.
Des recherches antérieures ont montré que la fuite de l'objet TheHole peut permettre l'exécution de n'importe quel code dans un sandbox. L'équipe de Google a corrigé cela. Cependant, en réalité, il existe d'autres objets natifs dans V8 qui ne devraient pas être divulgués à JS, comme l'objet Oddball non initialisé.
La fuite d'objets Oddball non initialisés peut entraîner une évasion de sandbox. Ce problème est apparu pour la première fois dans l'Issue1352549 et n'a pas encore été corrigé. Cette méthode présente une certaine généralité et a été observée dans plusieurs vulnérabilités.
Les 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 s'échappent dans l'environnement JavaScript, il est possible de réaliser une fuite de bac à sable.
Pour vérifier ce problème, vous pouvez modifier la fonction native de V8 pour divulguer Uninitialized Oddball dans JavaScript. Plus précisément, vous pouvez modifier l'implémentation de la fonction %TheHole().
L'utilisation d'un objet Oddball non initialisé peut contourner la protection HardenType. En construisant un code JavaScript spécifique, il est possible d'effectuer des lectures et écritures en mémoire relativement arbitraires. Cela est dû au fait que le code optimisé ne vérifie pas pleinement les propriétés des objets.
Pour les suggestions de correction, il convient d'ajouter une vérification de la map du tableau lors du retour des éléments du tableau par la fonction optimisée, afin d'éviter le calcul direct des valeurs de retour d'offset.
Cette question nous rappelle également de prêter attention à PatchGap, c'est-à-dire que certains logiciels peuvent utiliser une version de V8 qui n'a pas corrigé cette vulnérabilité. Par exemple, Skype n'a pas encore corrigé ce problème. Dans l'architecture x86, en raison de l'absence de compression d'adresse, il est possible de réaliser des lectures et écritures arbitraires dans la portée des processus.
En général, il existe plusieurs valeurs Sentinel dans V8 qui pourraient présenter des risques de sécurité similaires. Il est conseillé d'étudier davantage l'impact d'autres fuites de Uninitialized Oddball et de considérer l'inclusion de ces objets dans le champ des tests de fuzzing pour découvrir d'autres méthodes d'exploitation potentielles. Quoi qu'il en soit, ces problèmes pourraient considérablement réduire le cycle d'exploitation des vulnérabilités par les attaquants.