Google divulgue des détails sur un bug de Chromium qui peut transformer les navigateurs en robots

Lucas Morel

Signalée il y a plus de trois ans et apparemment pas encore correctement corrigée, la vulnérabilité permet aux attaques d’exécuter du JavaScript lors des redémarrages du navigateur.

Chromium – le navigateur open source qui sous-tend entre autres Google Chrome, Microsoft Edge et Opera – contient une vulnérabilité non corrigée que les attaquants peuvent exploiter pour exécuter du code JavaScript de manière persistante lors des redémarrages du navigateur. En conséquence, la faille peut être utilisée pour détourner les navigateurs des utilisateurs pour des attaques par déni de service distribué, exécuter des mineurs de crypto, et bien plus encore.

La vulnérabilité a été signalée il y a plus de trois ans par la chercheuse indépendante Lyra Rebane et n’a pas été corrigée, du moins en partie. Le rapport de bug a été rendu public cette semaine mais a ensuite été à nouveau fermé après que Rebane a signalé sur Mastodon que la faille n’était toujours pas correctement corrigée.

L’entrée du suivi de bogues contenant les détails techniques était accessible suffisamment longtemps pour être archivée par les utilisateurs, et une copie peut être facilement trouvée en ligne même si l’entrée d’origine est désormais à nouveau privée.

La faille abuse de la fonctionnalité Service Worker et de l’API Background Fetch, qui permet aux sites Web de lancer des téléchargements en arrière-plan, comme une vidéo. Cette fonctionnalité a été introduite en 2018 et Google avait déclaré à l’époque :

« Si l’utilisateur ferme les pages de votre site après l’étape 1, ce n’est pas grave, le téléchargement continuera. Étant donné que la récupération est très visible et facilement interrompue, il n’y a pas de problème de confidentialité lié à une tâche de synchronisation en arrière-plan trop longue. Étant donné que le service worker ne fonctionne pas constamment, il n’y a pas de crainte qu’il puisse abuser du système, comme extraire du bitcoin en arrière-plan. « 

Rabane a constaté qu’aucune de ces promesses n’était vraie, du moins pas sur toutes les plateformes et pas sur tous les navigateurs basés sur Chromium. Par exemple, dans la version stable de Google Chrome à l’époque, en décembre 2022, le téléchargement était visible dans la barre de téléchargement, mais dans la version Canary qui introduisait une nouvelle interface utilisateur, le téléchargement ressemblait à un problème bloqué à 0B et n’affichant pas la source.

Sur Microsoft Edge, le menu déroulant Télécharger est apparu mais rien n’y était affiché. Dans la version la plus récente, le téléchargement en arrière-plan est complètement invisible et continuera même lorsque le navigateur est fermé.

« En général, un Service Worker a une durée de vie limitée, mais le PoC (exploit de preuve de concept) contourne cela en créant et en abandonnant les récupérations en arrière-plan toutes les 20 secondes une fois que le Service Worker est actif », a écrit Rabane dans son rapport de vulnérabilité. « Si la récupération en arrière-plan est créée et interrompue assez rapidement, elle n’apparaîtra pas du tout dans l’interface utilisateur du navigateur, mais maintiendra toujours le Service Worker actif. »

D’après les commentaires dans l’entrée de bogue, les aspects de l’interface utilisateur ont été corrigés à un moment donné en janvier 2023. Cependant, la possibilité de maintenir le service worker en vie indéfiniment en basculant entre les événements aurait nécessité une correction plus approfondie, notamment en modifiant la spécification de l’API afin d’introduire un délai strict pour quitter le service worker.

Les choses qu’un site Web malveillant pourrait faire via un service worker persistant sont limitées, mais elles peuvent être sérieuses, y compris le suivi persistant des utilisateurs, car les techniciens de service ont accès aux horodatages d’ouverture du navigateur, aux adresses IP et aux informations de l’agent utilisateur.

L’exploit peut également être utilisé pour exécuter des charges utiles JavaScript à distance, qui peuvent être exploitées de diverses manières, notamment pour exécuter des exploits potentiels pour de futurs bugs, des attaques par canal secondaire ou des charges utiles WebAssemply comme les mineurs de crypto. Il est également possible de déclencher des requêtes vers d’autres sites Web, qui pourraient être utilisées de manière abusive dans un scénario de déni de service distribué si un site Web compromis est utilisé pour pirater des milliers de navigateurs de cette manière.

Sécurité du navigateurProtection des points de terminaisonSécurité