Chrome漏洞可致惡意站點(diǎn)在用戶在不知情的情況下錄制音頻和視頻
有沒有可能我們?cè)诓恢榈那闆r下被電腦錄音和錄像?黑客可以從而聽到你的每一通電話,看到你周圍的人。
聽來恐怖,但有的時(shí)候我們真的無法完全知曉我們的電腦在干什么。正因如此,就連扎克伯格這樣的大佬也需要用膠帶把麥克風(fēng)和攝像頭封起來。
Chrome瀏覽器最近就被發(fā)現(xiàn)了這樣的一個(gè)漏洞,惡意網(wǎng)站可以在用戶不知情的情況下錄制音頻和視頻。
漏洞的發(fā)現(xiàn)者是來自AOL的開發(fā)者Ran Bar-Zik。他在4月10日將漏洞 匯報(bào) 給了Google,但Google認(rèn)為這并非漏洞,因此目前漏洞尚未被修復(fù),也可能不會(huì)有補(bǔ)丁。
瀏覽器如何錄音
HTML5中的新API讓網(wǎng)站可以直接從瀏覽器獲取視頻和音頻。通過WebRTC協(xié)議,瀏覽器不需要安裝插件就能向網(wǎng)站提供麥克風(fēng)錄音及攝像頭視頻。
為了保護(hù)隱私讓用戶免于被竊聽的困擾,瀏覽器的開發(fā)者們使用了兩個(gè)辦法。
首先是請(qǐng)求權(quán)限。
- const constraints = {
- audio: true,
- video: true
- };
- navigator.mediaDevices.getUserMedia(constraints).
- then((stream) => {
- handleSuccess(stream); // This is basic handler with stream input.
- });
這段代碼就是在錄音/錄像前需要用到的js代碼。運(yùn)行后瀏覽器會(huì)彈出窗口請(qǐng)求相應(yīng)權(quán)限。但是大家都知道,很多時(shí)候我們沒有多想就會(huì)同意這些請(qǐng)求。
網(wǎng)站申請(qǐng)權(quán)限
第二個(gè)防護(hù)措施就是在錄音時(shí)進(jìn)行提醒。
網(wǎng)站獲得第一步申請(qǐng)的權(quán)限時(shí)就能獲取到設(shè)備的數(shù)據(jù)流。但是要使用數(shù)據(jù)流,開發(fā)者需要錄音,這就用到了MediaRecorder API。
- const recordedBlobs = [];
- const mediaRecorder = new window.MediaRecorder(window.stream,{ mimeType: 'audio/mpeg' });
- mediaRecorder.ondataavailable = (event) => {
- recordedBlobs.push(event.data);
- };
- mediaRecorder.start();
調(diào)用這個(gè)API時(shí),瀏覽器會(huì)提醒用戶,網(wǎng)站正在錄音,F(xiàn)irefox會(huì)以一個(gè)置頂小窗口進(jìn)行提醒,而Chrome則會(huì)在標(biāo)簽頁閃爍一個(gè)紅點(diǎn)。(Internet Explorer、Edge、Safari和Opera還不支持Media Recorder API)
網(wǎng)站錄音時(shí)瀏覽器的提醒方式
漏洞原理
研究人員發(fā)現(xiàn) ,如果有已經(jīng)經(jīng)過授權(quán)的網(wǎng)站使用JS進(jìn)行彈窗,網(wǎng)站就可以直接錄音,標(biāo)簽頁上方不會(huì)有閃爍的紅點(diǎn),在這種情況下,用戶只知道自己曾經(jīng)授權(quán)了這個(gè)網(wǎng)站錄音權(quán)限,而不知道自己正在被錄音。
研究人員提供了相關(guān)的 PoC代碼 和 演示網(wǎng)站 ,我們先點(diǎn)擊第一個(gè)按鈕進(jìn)行授權(quán),再點(diǎn)擊第二個(gè)按鈕就會(huì)彈出一個(gè)小窗口,這個(gè)小窗口會(huì)進(jìn)行20秒的錄音。
Google:并非漏洞
Ran Bar-Zik在4月10日將漏洞匯報(bào)給Google,但Google認(rèn)為這并非漏洞。
Google員工回應(yīng)稱:
“這其實(shí)并不算漏洞,比方說在移動(dòng)瀏覽器上,WebRTC就沒有錄音的提示(紅點(diǎn))。”
“紅點(diǎn)顯示的前提是Chrome UI有空間顯示,不過我們會(huì)想辦法解決這個(gè)問題。”
Chromium的開發(fā)人員認(rèn)為在較小的空間放不下錄音的提示紅點(diǎn),比如在移動(dòng)設(shè)備中就沒有使用紅點(diǎn),而本例中彈出的小窗口也是狹小空間的一種。
但在真實(shí)環(huán)境下,這個(gè)“不是漏洞”的漏洞也是有利用價(jià)值的。作者認(rèn)為,攻擊者可以制造一個(gè)極小的彈窗進(jìn)行錄音, 當(dāng)用戶切換到窗口時(shí)立即關(guān)閉;或者可以調(diào)用幾毫秒的攝像頭拍下你的照片;或者使用XSS攻擊正規(guī)的網(wǎng)站從而獲取權(quán)限。小編認(rèn)為一些正規(guī)的網(wǎng)站也可以通過某些看似正當(dāng)?shù)恼?qǐng)求申請(qǐng)到麥克風(fēng)/攝像頭的權(quán)限,隨后彈出小窗偷偷地進(jìn)行持續(xù)錄音??傊?,如果Chrome沒有修復(fù)這個(gè)隱私問題,具體的利用方式就是黑客們的想象空間了。