Chromium, le navigateur open source qui sous-tend notamment Google Chrome, Microsoft Edge et Opera, contient une vulnérabilité non corrigée que les pirates peuvent exploiter pour exécuter du code JavaScript de manière persistante, même après le redémarrage du navigateur. En conséquence, elle peut servir pour détourner les navigateurs à des fins d'attaques par déni de service distribué, pour exécuter du minage de cryptomonnaie, et plus encore. La faille 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, ou du moins pas entièrement. Le rapport de bogue a été rendu public la semaine dernière, mais il a ensuite été refermé après que Mme Rebane a signalé sur Mastodon que la faille n'était toujours pas correctement corrigée.
Ce rapport de bugs contenant les détails techniques a été accessible suffisamment longtemps pour être archivé et on peut facilement trouver une copie en ligne. La faille exploite la fonctionnalité Service Worker et l'API Background Fetch, qui permet aux sites web de lancer des téléchargements en arrière-plan, comme une vidéo. La fonctionnalité a été introduite en 2018. À l'époque, Google avait déclaré : « Si l'utilisateur ferme les pages de votre site après l'étape 1, ce n'est pas grave, le téléchargement se poursuivra. Comme la requête est très visible et peut être aisément interrompue, il n'y a pas de problème de confidentialité lié à une tâche de synchronisation en arrière-plan qui durerait trop longtemps. Comme Service Worker ne fonctionne pas en permanence, il n'y a pas de risque qu'il abuse du système, en minant par exemple des bitcoins en arrière-plan. »
Un risque persistant sur plusieurs navigateurs
Mme Rebane a constaté qu’aucune de ces promesses n’était vraie, du moins pas sur toutes les plateformes ni sur tous les navigateurs basés sur Chromium. Par exemple, dans la version stable de Chrome de décembre 2022, le téléchargement était visible dans la barre de téléchargement, mais dans la version Canary qui introduisait une autre interface utilisateur, le téléchargement semblait présenter un bug : il restait bloqué à 0 octet et n’affichait pas la source. Sur Edge, le menu déroulant « Téléchargement » s’affichait mais ne contenait aucune information. Dans la version la plus récente, le téléchargement en arrière-plan est totalement invisible et se poursuit même lorsque le navigateur est fermé. « En général, un Service Worker a une durée de vie limitée, mais l’exploit contourne cette limite en créant et en annulant des récupérations en arrière-plan toutes les 20 secondes une fois que la fonctionnalité est active », a écrit Lyra Rebane dans son rapport. « Si la requête 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 tout de même le Service Worker actif. »
D'après les commentaires figurant dans la fiche de bug, dans une certaine mesure, les problèmes liés à l'interface utilisateur ont été corrigés en janvier 2023. Cependant, la possibilité de maintenir la fonction active indéfiniment en basculant entre les événements aurait nécessité une correction plus en profondeur, notamment une modification de la spécification de l'API afin d'introduire une limite de temps stricte pour la fermeture du service. Les actions qu'un site web malveillant pourrait mener via un Service Worker persistant sont limitées, mais elles peuvent être graves, notamment le suivi persistant des utilisateurs, car ils ont accès aux horodatages d'ouverture du navigateur, aux adresses IP et aux informations User-Agent. Il est également possible d’exploiter cette faille pour exécuter des charges utiles JavaScript à distance, qui peuvent être utilisées de diverses manières, notamment pour exécuter des exploits potentiels visant de futurs bogues, des attaques par canal auxiliaire ou des charges utiles WebAssembly comme des mineurs de cryptomonnaie. Le déclenchement de requêtes vers d'autres sites web est aussi possible et pourrait être détourné dans le cadre d'un scénario de déni de service distribué si un site web compromis était utilisé pour détourner des milliers de navigateurs en abusant de cette méthode.