信息來源:FreeBuf
概述
在這篇文章中,我們將會給大家介紹一種從瀏覽器中提取敏感信息的方法,而我們所要用到的工具就是你的智能手機或筆記本電腦中的環(huán)境光傳感器。文章結構如下:
1. 首先,我們會介紹與光傳感器有關的內容。
2. 接下來,我們會描述用戶設備的屏幕顏色將會對光傳感器的數據產生怎樣的影響。我們的主要目標是跨域提取瀏覽器的數據和歷史記錄,而攻擊者將可以從中提取出敏感文檔和圖片(例如用于賬號恢復的二維碼圖片)。
3. 最后,我們會介紹瀏覽器廠商所能采取的應對策略,并幫助大家緩解這種風險。
注:當前版本的Firefox和Chrome瀏覽器都無法抵御這種攻擊,包括帶有光傳感器的Android以及桌面設備(例如MacBookPro)。
背景知識:智能手機中的光傳感器
現(xiàn)在,幾乎所有型號的智能手機和絕大多數的筆記本電腦都配備有環(huán)境光傳感器。這種傳感器一般會被安裝在設備的頂部,也就是在靠近前置攝像頭的地方。智能手機不僅可以利用環(huán)境光傳感器來檢測用戶距離,而且還可以感應外部環(huán)境,并通過調整屏幕亮度來達到省電的目的。除此之外,光環(huán)境信息也可以用來調整智能手機的響應方式,或者對硬件進行配置。因此,光傳感器的數據是十分敏感的。
環(huán)境光傳感器返回的數據其精確度是非常高的,在國際標準單位中,衡量光強度所用的單位是勒克斯(lux),輸出數據范圍在0(黑暗)到上萬lux不等。而且光傳感器輸出數據的頻率也是非常高的,讀取間隔大約為100-200毫秒。
為了與原生App競爭并給用戶提供更好的用戶體驗,越來越多的網站開始有訪問環(huán)境光傳感器數據的需求了。但是,W3C設備與傳感器工作組織目前還在討論是否要允許網站在沒有得到用戶許可的情況下訪問光傳感器數據。但是,當前版本的Chrome和Firefox都已經實現(xiàn)了相應的API。
傳感器隱私
W3C組織近期正在討論有關通用傳感器API的內容,其中一個主要的話題就是第三方服務在訪問特定傳感器數據時是否需要征得用戶的許可。因此,我們此次研究的目的就是要研究環(huán)境光傳感器(ALS)目前所面臨的安全威脅。在此之前,我曾從安全和隱私這兩個方面對ALS進行過全面的分析,通過研究發(fā)現(xiàn),攻擊者不僅可以通過傳感器泄漏數據來檢測房間內是否有人,而且還可以找出目標用戶的銀行密碼。
在這篇文章中,我們的重點是傳感器數據將如何幫助攻擊者從目標用戶的瀏覽器中提取出隱私數據。接下來,我們會討論實際的攻擊場景。
利用光傳感器提取數據
那么我們到底如何才能通過環(huán)境光傳感器來提取出用戶的隱私數據呢?首先,我們要注意以下兩點:
1. 用戶屏幕的顏色攜帶著大量的有用信息,但是出于安全方面的考慮,網站是禁止直接讀取這方面信息的。
2. 攻擊者可以通過光傳感器的讀數來區(qū)分不同的屏幕顏色
我們待會兒再詳細描述第二點,但簡而言之,屏幕所發(fā)出的光不僅會對光傳感器的讀數產生影響,而且還會允許網站判斷設備屏幕的顏色。
而第一點肯定會讓你感到驚訝吧?畢竟網站可以控制它們在用戶屏幕上所顯示的內容,所以它們?yōu)槭裁催€會對這些數據感興趣呢?但你要知道,下面這兩種顏色狀態(tài)是網站無法直接獲取的:
1. 已訪問過的鏈接顏色:出于隱私原因,瀏覽器不會向開發(fā)者透露頁面所顯示的鏈接顏色,否則惡意開發(fā)者就可以利用“:visited”這種頁面style來檢測用戶所訪問過的網站了。
2. 跨域資源:同源策略可以防止惡意網站跨域訪問受害網站的合法資源。雖然網站不能跨域檢查其他網站的框架和圖片,但他們可以根據自己的需要來顯示這些內容,例如縮放大小和改變顏色。
接下來,我們將介紹攻擊的實現(xiàn)方法。
檢測已訪問過的鏈接
雖然網站可以采用不同的style來顯示已訪問過的和未訪問過的鏈接顏色,但是它們不能檢測鏈接是如何顯示給用戶的。不過,我們可以通過傳感器來識別鏈接的真實顏色。大致步驟如下:
1. 設置鏈接的style:已訪問過的(白色)、未訪問過的(黑色)。
2. 校準:顯示一個白色背景然后再顯示黑色背景,以此來識別用戶環(huán)境的光等級。不過需要注意的是,傳感器讀數波動較大將會增加我們的攻擊難度。
3. 遍歷鏈接列表:一個接一個地讀取列表中的地址,然后顯示在屏幕中。已訪問過的鏈接將以白色顯示,未訪問過的鏈接則是黑色。
4. 記錄下每一條鏈接的光等級,識別它們的顏色。由于我們已經在第二步中對屏幕進行了校準,所以我們現(xiàn)在就能知道光傳感器的每一個讀數所代表的顏色了。
最后,攻擊者將獲取到所有白色的鏈接,這樣他們就能知道用戶之前訪問過哪些頁面了。
演示視頻如下:
視頻地址:https://youtu.be/Rg0LQ3npkP0
在演示視頻中,我們實驗環(huán)境的光條件在數據提取階段是不會發(fā)生變化的,但是去除這個限制條件也并非難事。
竊取跨域資源
在我們的實驗過程中,我們的重點將放在竊取圖片上,因為圖片資源比較好提取。在下面的演示視頻中,網站允許用戶通過掃描二維碼(https://victim.com/account-code.png)來緊急訪問或恢復賬號,而攻擊者就可以利用這個二維碼來劫持用戶賬戶了。
視頻地址:https://youtu.be/LF8Wi1UVj7U
攻擊機制大致如下:
1. 從受攻擊的域名嵌入一張圖片。一般情況下,這張圖片對于不同身份的用戶是不一樣的,例如用戶頭像或安全碼。
2. 使用SVG過濾器來創(chuàng)建黑白形式的圖片。
3. 縮放圖片,讓圖片充滿整個屏幕。
4. 遍歷圖片中的所有像素,并在用戶屏幕上顯示每一個像素,然后記錄下光傳感器對每一個像素的讀數。
5. 將所有像素組合成結果圖像。
檢測速度
由于我們一次只能提取一位數據,所以檢測速度就成為了這種攻擊技術的主要瓶頸。雖然瀏覽器傳感器的讀取速率只有60Hz,但這并不意味著我們每秒能提取出60位數據,而最終的檢測速度也會受到傳感器檢測屏幕亮度的頻率所限制。
不同情況所對應的檢測時間如下:
-8個字符所組成的明文字符串:24秒-16個字符所組成的明文字符串:48秒-20x20的二維碼圖片:3分20秒-掃描瀏覽歷史中1000個訪問頻率最高的URL:8分20秒-64x64的像素圖片:34分08秒
下面這個視頻演示了竊取圖片的完整過程:
視頻地址:https://youtu.be/SI8Uf-VCixs
應對方法
目前比較有效的應對方法主要有以下兩種:
1. 限制傳感器的讀取速率(低于60Hz)
2. 限制傳感器的輸出精度
不過對于光傳感器而言,限制頻率也無法阻止我們的攻擊,就算頻率降低至1Hz我們也同樣能夠進行攻擊,但限制頻率可以顯著增加攻擊的時間成本。相比而言,限制傳感器的輸出精度也許是更加好的解決方案。但很明顯,最佳的解決方案應該是限制網站訪問傳感器數據,至少也要在它們訪問這些數據之前得到用戶的權限許可。
總結
我們此次演示的攻擊技術不僅暴露了目前光傳感器所存在的安全隱患,而且也證明了惡意網站能夠利用光傳感器數據來繞過網站的同源策略并跨域竊取用戶的敏感信息。其實除了光傳感器之外,像溫度感應器、GPS和陀螺儀等傳感器或多或少都存在著各種安全問題,而以安全和隱私為主要考量因素來設計這些設備的行業(yè)標準其實也并非易事。因此,我們希望廠商能夠更加關注傳感器的安全問題,并且能夠在將來為這些設備增加更多的安全保護功能。
* 參考來源:lukaszolejnik, FB小編Alpha_h4ck編譯,轉載請注明來自FreeBuf.COM