La société Google a analysé l'efficacité de l'utilisation dans le code en C++ du type MiraclePtr (raw_ptr<T>) par rapport aux pointeurs classiques pour se protéger contre les vulnérabilités causées par l'accès à des zones de mémoire déjà libérées (use-after-free). MiraclePtr fournit une couche de protection au-dessus des pointeurs, effectuant des vérifications supplémentaires et terminant de manière sécurisée en cas de détection d'accès à des zones de mémoire libérées. La prise en charge de MiraclePtr a été activée par défaut sur les plateformes Windows et Android en mai 2022 (dans Chrome 102), et sur les plateformes ChromeOS, Linux et macOS en juin 2023. La protection basée sur MiraclePtr dans Chrome s'applique à tous les processus, sauf celui responsable du rendu (renderer).
Après avoir étudié la dynamique de l'envoi de rapports sur les vulnérabilités et les pannes imprévues, ainsi que l'analyse des incidents liés à la sécurité et des résultats des tests de fuzzing, il a été conclu que l'implémentation de MiraclePtr offrait une protection contre 57% des vulnérabilités de type use-after-free, grâce à la migration vers l'utilisation de MiraclePtr pour les champs de classes et les paramètres d'appels de rappel. De plus, il est mentionné que 5 des 6 vulnérabilités critiques identifiées l'année dernière dans la branche stable de Chrome ont été repérées grâce à l'analyse des rapports de pannes liés à l'utilisation de MiraclePtr.
Le coût de l'utilisation de MiraclePtr est l'augmentation de la consommation de mémoire, car les pointeurs nécessitent de stocker 4 octets supplémentaires avec le compteur de références. La consommation de mémoire du processus principal du navigateur lors de l'utilisation de MiraclePtr augmente de 5,5 à 8 % dans les versions de bureau et de 2 % dans la version Android. L'augmentation moyenne de la consommation pour tous les processus est estimée entre 1 et 3 %. De plus, l'utilisation de MiraclePtr a entraîné quelques régressions individuelles affectant les performances, mais non liées aux métriques clés comme le temps de chargement et le rendu de la page. Les régressions identifiées comprennent un retard de 1,5 % sur la première saisie dans Chrome OS, un ralentissement de 1,5 % lors de l'ouverture des onglets sur la plateforme Android, ainsi qu'une augmentation de la probabilité de retard de saisie due à la concurrence dans le fil principal (augmentation de la probabilité de 10 % au 99e percentile).
Source : opennet.ru
