跳到主要內容

[科技]Google 修完漏洞,但網站仍可用檔案系統 API 偵測出 Chrome 無痕模式。


  檔案系統 API 在無痕模式會將資料寫入記憶體,其速度比一般模式寫入磁碟還快得多,因此可被用來偵測瀏覽器模式。

  Google 為了讓網站無法偵測用戶是否以無痕進行瀏覽,在 Chrome 76 修正檔案系統(FileSystem)API 的漏洞,但現在有研究人員發現,Chrome 76 的檔案系統 API 的寫入速度,在無痕模式比一般模式還要快,因此網站還是能用寫入的速度差異,來偵測使用無痕模式的訪客,達成時序攻擊(Timing Attack)。

  Chrome 75 以前的版本,無痕模式會禁用檔案系統 API,以避免在裝置留下任何活動痕跡,而檔案系統 API 的漏洞,會讓網站在檢查檔案系統 API 的可用性時,回傳錯誤訊息,因此網站便能得知用戶正在使用無痕模式,Google 提到,由於不少媒體網站採用計次付費牆(Paywall)收費模式,當用戶瀏覽超過一定數目的文章,才會要求登入付費帳號,因此為避免用戶使用無痕模式規避計次付費牆機制,網站便會使用檔案系統 API 的漏洞,偵測用戶是否正使用無痕模式,決定給予相對應的用戶體驗。

  而在 7 月的時候,Google 宣布要落實無痕模式隱私原則,會在 Chrome 76中,修正檔案系統 API 的漏洞,但現在研究人員 Jesse Li 發現,即便是最新的 Chrome 76,仍然可以透過量測 API 寫入儲存中介的速度,來偵測瀏覽器的無痕模式,而 Jesse Li 也在 GitHub 中發表了概念性驗證實作。

  Chrome 76 為了避免網站根據檔案系統 API 的可用與否偵測無痕模式,因此即便在無痕模式,Chrome 仍然會寫入 API 的資料,只是資料寫入的目標是記憶體而非磁碟,如此便不會在磁碟上留下操作痕跡,對網站來說,檔案系統 API 都一致可用,那就不存在之前以 API 可用與否,判斷瀏覽器無痕模式的問題,不過這卻產生另一個問題,由於記憶體寫入速度比磁碟更快,兩者仍存在差異。

  利用這樣的差異,網站就能推測出用戶是否使用無痕模式。由於記憶體比磁碟快上許多,網站只要重複寫入大量的字串,量測檔案系統需要時間,建立出基準測試,就能用來判斷訪客是否使用無痕模式。

  Jesse Li進行了一百次的迭代,共花費數分鐘做出基準測試。基準測試結果顯示,在一般模式下的檔案系統,寫入磁碟的尖峰時間約落在 3,000 到 4,000 毫秒之間,相較於無痕模式寫入記憶體,尖峰落在 1,000 毫秒,時間只有三分之一到四分之一而已,無痕模式平均耗費 792 毫秒,而一般模式平均則要 2,281 毫秒,是前者的 2.8 倍。

  Jesse Li 解釋這種偵測無痕模式與一般模式的時序攻擊有其限制,除了需要花上數分鐘或是數十秒的時間,才能獲得有用的資料之外。偵測的結果跟使用者裝置的配置有關,行動裝置與桌上型電腦的記憶體和磁碟速度都不一樣,也會跟裝置同時執行的工作有關,而對統計資料產生雜訊。

  這種方法並非直接偵測無痕模式,而是偵測檔案系統的第二儲存中介,進而推斷使用者瀏覽器正在執行的模式,但當磁碟即是記憶體的時候,便會產生誤判。不過,Jesse Li 提到,這種方法相對難以修補,因為其攻擊的手段是漏洞修補的技術基礎,因此用戶要完全避免被偵測出使用無痕模式,必須要在兩種裝置使用相同的儲存中介,寫入速度相同也就沒有被偵測的疑慮。