Un bogue logiciel introduit dans l’implémentation de l’API IndexedDB par Apple Safari 15 pourrait être exploité par un site Web malveillant pour suivre l’activité en ligne des utilisateurs dans le navigateur Web et, pire, même révéler leur identité.
La vulnérabilité, surnommée Fuites IndexedDB, a été divulgué par FingerprintJS, un éditeur de logiciels de protection contre la fraude, qui signalé le problème au fabricant d’iPhone le 28 novembre 2021.
IndexedDB est une interface de programmation d’application (API) JavaScript de bas niveau fournie par les navigateurs Web pour gérer un Base de données NoSQL d’objets de données structurés tels que des fichiers et des blobs.
« Comme la plupart des solutions de stockage Web, IndexedDB suit une politique de même origine », Mozilla notes dans sa documentation de l’API. « Ainsi, bien que vous puissiez accéder aux données stockées dans un domaine, vous ne pouvez pas accéder aux données sur différents domaines. »
La même origine est un mécanisme de sécurité fondamental qui garantit que les ressources extraites de sources distinctes origines – c’est-à-dire un combinaison du schéma (protocole), de l’hôte (domaine) et du numéro de port d’une URL — sont isolés les uns des autres. Cela signifie effectivement que « https://example[.]com/ » et « https://exemple[.]com/ » ne sont pas de la même origine car ils utilisent des schémas différents.
En limitant la façon dont un script chargé par une origine peut interagir avec une ressource d’une autre origine, l’idée est de séquestrer les scripts potentiellement malveillants et de réduire les vecteurs d’attaque potentiels en empêchant un site Web malveillant d’exécuter du code JavaScript arbitraire pour lire des données d’un autre domaine, par exemple, un service de messagerie.
Mais ce n’est pas le cas avec la façon dont Safari gère l’API IndexedDB dans Safari sur iOS, iPadOS et macOS.
« Dans Safari 15 sur macOS, et dans tous les navigateurs sur iOS et iPadOS 15, l’API IndexedDB viole la politique de même origine », Martin Bajanik mentionné dans un écrit. « Chaque fois qu’un site Web interagit avec une base de données, une nouvelle base de données (vide) portant le même nom est créée dans tous les autres cadres, onglets et fenêtres actifs au sein de la même session de navigateur. »
Une conséquence de cette violation de la vie privée est qu’elle permet aux sites Web de savoir quels autres sites Web un utilisateur visite dans différents onglets ou fenêtres, sans parler d’identifier précisément les utilisateurs sur les services de services Google tels que YouTube et Google Calendar, car ces sites Web créent des bases de données IndexedDB qui incluent le ID utilisateur Google authentifié, qui est un identifiant interne qui identifie de manière unique un seul compte Google.
« Non seulement cela implique que des sites Web non fiables ou malveillants peuvent apprendre l’identité d’un utilisateur, mais cela permet également de relier plusieurs comptes distincts utilisés par le même utilisateur », a déclaré Bajanik.
Pour aggraver les choses, la fuite affecte également Navigation privée mode dans Safari 15, si un utilisateur visite plusieurs sites Web différents à partir du même onglet dans la fenêtre du navigateur. Nous avons contacté Apple pour plus de commentaires, et nous mettrons à jour l’histoire si nous entendons.
« C’est un énorme bug », déclare Jake Archibald, défenseur des développeurs de Google Chrome tweeté. « Sur OSX, les utilisateurs de Safari peuvent (temporairement) passer à un autre navigateur pour éviter que leurs données ne fuient d’une origine à l’autre. Les utilisateurs d’iOS n’ont pas ce choix, car Apple impose une interdiction sur les autres moteurs de navigateur. »