這幾年, Apple 在 Safari 加入不少阻擋廣告追蹤的功能,不過日前就老貓燒鬚,被發現藏有漏洞,令惡意網站可以竊取用戶的最近瀏覽紀錄,以至連結到 Google 帳戶的部分個人資料。
這個漏洞發生在瀏覽器資料庫 IndexedDB API 上。本來, IndexedDB API 應該是要遵守「同源政策」,只有創建資料庫的網站可以存取資料庫。不過網絡安全網站 FingerPrintJS 就發現,無論是 macOS 中的 Safari 15 ,或者是 iOS 15 或 iPadOS 15 裡的 Safari ,當中的 IndexedDB API 都違反同源政策,每次網站與瀏覽器的資料庫互動時,都會在同一個瀏覽器執行時期( Session )的所有網頁框、標籤頁和視窗中創建一個具有相同名稱的、新的空資料庫!惡意網站就可以查看資料庫名稱,了解到用戶在這次瀏覽器執行時期中,正在瀏覽哪些網站。
更嚴重的是部分網站會在資料庫名稱中,加入可以來特定用戶身分的字串,例如 Google 的 YouTube 、日曆和 Keep ,就會在資料庫名稱中加上 Google 用戶 ID ,而如果用戶登入了多個 Google 帳戶,所有帳戶都會建立資料庫。惡意網站在取得用戶 Google ID 後,就可以透過 Google People API 取得一些用戶公開資料,例如頭像照片,以追查用戶身分。
現時已測試過 30 個流行網站,包括 Instagram 、 Netflix 、 Twitter 和 Xbox 均受影響,但相信會有更多網站亦受影響。
FingerPrintJS 其實早在去年 11 月底已在 WebKit 錯誤通報系統報告,不過至今仍未有修補,所以就公開有關漏洞,並提供槪念驗證程式碼。 macOS 用戶暫時可以使用其他瀏覽器來避過漏洞,不過 iOS/iPadOS 用戶就無法逃避,因為 Apple 不接受瀏覽器使用第三方瀏覽器引擎,所有 iOS/iPadOS 上不同品牌的瀏覽器,其實底層都跟 Safari 一樣。