繼iOS7.1.1出現(xiàn)多個(gè)漏洞后。近日,Android系統(tǒng)中也被發(fā)現(xiàn)一新漏洞,可在用戶完全不知道的情況下使用設(shè)備自帶攝像頭進(jìn)行拍照并上傳。
該漏洞的發(fā)現(xiàn)者Sidor表示,雖然他已經(jīng)在Google Play的大量軟件中發(fā)現(xiàn)可秘密拍下照片的功能,但它們每個(gè)都會(huì)在屏幕上顯示出對應(yīng)的操作內(nèi)容。不過,這次他發(fā)現(xiàn)的新漏洞卻完全不是這么一回事,它可以悄無聲息地完成拍攝、上傳的一系列操作。
Sidor稱,他只是破解了一個(gè)極為簡單的漏洞就完成以上所說的一切,他將原先的預(yù)覽圖片換成了像素提示。而在一般情況下,人們基本上不大可能注意到這個(gè)像素提示。
令人最感到害怕的是,該像素提示是絕對不會(huì)在高分辨率的手機(jī)屏幕上出現(xiàn),而且即便Android手機(jī)處于黑屏狀態(tài),攝像頭仍舊可以正常運(yùn)轉(zhuǎn)。Sidor已經(jīng)Android安全團(tuán)隊(duì)反映了這個(gè)問題,希望Android能夠盡快修復(fù)好這個(gè)漏洞,保護(hù)好用戶的隱私。
擴(kuò)展閱讀:Android“隱匿拍照”漏洞詳解
漏洞原理:
Android camera進(jìn)行拍照的一般步驟如下:
調(diào)用Camera的open()方法打開相機(jī)。
調(diào)用Camera的startPreview()的方法開始預(yù)覽取景。
調(diào)用Camera的takePicture()方法進(jìn)行拍照
第一步的工作是在后臺(tái)進(jìn)行,而第二步則是關(guān)鍵。由于Android規(guī)定,必須顯示Preview,才能進(jìn)行拍照,這樣就造成,很難達(dá)到隱匿拍攝??紤]到這種情況,使用了以下幾種方法進(jìn)行preview隱藏均告失敗。
把preview設(shè)置為invisible——失?。?a target="_blank">Android忽略preview的這個(gè)設(shè)置屬性。
把preview設(shè)置為transparent——失?。?a target="_blank">Android忽略preview的這個(gè)設(shè)置屬性。
用另一個(gè)View覆蓋preview——部分失敗:上層的view依然顯示在屏幕上。
最后Szymon Sidor 發(fā)現(xiàn)了一種極端巧妙的方法:把preview設(shè)置為1*1 像素,這個(gè)方法獲得了完全的成功,達(dá)到了隱匿拍攝的目的。
目前,手機(jī)的分辨率越來越高,以Nuxus5為例,其分辨率是1920×1080像素,屏幕像素密度高達(dá)445ppi,在這樣的高分辨率下,1像素對肉眼來說,幾乎完全注意不到它的存在。這樣就實(shí)現(xiàn)了界面幾乎完全不可見,通過前置或后置攝像頭便會(huì)向這個(gè)只有1像素大小的視圖對象反饋視頻預(yù)覽,后臺(tái)可以直接把偷拍的照片通過Internet發(fā)送到遠(yuǎn)程服務(wù)器。
漏洞實(shí)現(xiàn):
研究員在對漏洞進(jìn)行研究后,并進(jìn)行了漏洞實(shí)現(xiàn),下面是漏洞實(shí)現(xiàn)的部分關(guān)鍵代碼: