En fin de semaine dernière, FingerprintJS - qui propose un service de fingerprinting pour le Web et de prévention des fraudes - a mis en ligne une preuve de concept SafariLeaks. Elle concerne le navigateur Safari 15 d'Apple sur macOS, ainsi que tous les navigateurs sur iOS 15 et iPadOS 15 qui n'ont d'autre choix que d'utiliser le moteur de rendu WebKit en vertu des directives de l'App Store.

La démonstration de faisabilité illustre le fait que des sites web sont en mesure de connaître l'activité de navigation d'un utilisateur. Pour les visiteurs connectés aux services Google, la démo peut également divulguer les identifiants uniques de comptes Google (Google User ID).

La faille de confidentialité est en rapport avec un problème au niveau de l'implémentation d'Apple de l'API IndexedDB qui permet le stockage côté client de données sur le navigateur (des bases de données locales), et une violation de la politique same-origin.

FingerprintJS explique qu'à chaque fois qu'un site web interagit avec une base de données, une nouvelle base de données vide avec le même nom est créée dans tous les autres frames, onglets et fenêtres de la session de navigation active. D'autres sites peuvent voir le nom d'autres bases de données créées sur d'autres sites, avec potentiellement des détails sur une identité.

Ces noms pour les bases de données sont généralement uniques et spécifiques au site web. Dans certains cas, les sites web utilisent des identifiants uniques propres aux utilisateurs dans les noms des bases de données.

safari-15-faille-safarileaks-fingerprintjs

En cours de correction pour tous

Parmi les 1000 sites les plus visités (classement Alexa), FingerprintJS indique qu'une trentaine d'entre eux utilisent des bases de données IndexedDB directement sur leur page d'accueil, sans interaction supplémentaire avec l'utilisateur ou authentification. Avec des sous-pages et actions de l'utilisateur, c'est un total susceptible d'être bien plus élevé.

La faille a été signalée dans le Bug Tracker de WebKit le 28 novembre. La récente divulgation publique a fait son œuvre. " Les ingénieurs d'Apple ont commencé à travailler sur le bug depuis dimanche, ont fusionné les corrections potentielles et ont marqué notre rapport comme étant résolu ", écrit FingerprintJS. Pour les utilisateurs finaux, il faut désormais attendre une publication du correctif idoine.