谷歌發(fā)布適用于Chrome瀏覽器的Spectre PoC代碼漏洞
Google發(fā)布了對(duì)其GitHub上的Chrome瀏覽器進(jìn)行幽靈攻擊的概念驗(yàn)證代碼。專(zhuān)家們決定發(fā)布概念證明代碼,以證明基于Web的幽靈攻擊的可行性。
PoC代碼使用JavaScript編寫(xiě),可在英特爾Skylake CPU上的Chrome 88上運(yùn)行,它允許以1kB / s的速度從設(shè)備內(nèi)存中下載數(shù)據(jù)。
“今天,我們共享了概念驗(yàn)證(PoC)代碼,該代碼證實(shí)了幽靈攻擊JavaScript引擎的實(shí)用性。我們使用Google Chrome瀏覽器來(lái)演示我們的攻擊,但這些問(wèn)題并不是Chrome特有的,我們估計(jì)其他瀏覽器也同樣容易受到這種攻擊。” Google發(fā)布的帖子聲稱(chēng),“我們已經(jīng)在https://leaky.page/上提供了該攻擊的交互式演,;代碼和更詳細(xì)的文章我們已經(jīng)發(fā)布在Github上(https://github.com/google/security-research-pocs/tree/master/spectre.js)。”
Google研究人員推測(cè),PoC代碼可在其他CPU(不同的供應(yīng)商和/或代),操作系統(tǒng)和Chromium版本上使用。
下面的演示描述發(fā)布在一個(gè)由Google設(shè)置的網(wǎng)站上,用來(lái)托管PoC代碼。
“此演示分為三個(gè)部分:
1.校準(zhǔn)計(jì)時(shí)器以觀察CPU預(yù)測(cè)執(zhí)行的副作用。
2.推斷JavaScript數(shù)組的內(nèi)存布局的演示。
3.Spectre的概念證明本身,泄漏內(nèi)存的瀏覽器渲染過(guò)程。”
在2018年1月,該專(zhuān)家設(shè)計(jì)了兩次攻擊,分別稱(chēng)為 Meltdown (CVE-2017-5754)和 Spectre (CVE-2017-5753和CVE-2017-5715),可用來(lái)竊取CPU處理的敏感數(shù)據(jù)。
兩種攻擊都利用大多數(shù)現(xiàn)代CPU使用的“預(yù)測(cè)執(zhí)行”技術(shù)來(lái)優(yōu)化性能。
為了保護(hù)系統(tǒng)免受Bot Meltdown和Spectre攻擊,可以實(shí)施稱(chēng)為內(nèi)核頁(yè)表隔離(KPTI)的強(qiáng)化技術(shù)。該技術(shù)允許將內(nèi)核空間與用戶(hù)空間內(nèi)存隔離開(kāi)。
Google發(fā)布的PoC代碼允許從內(nèi)存中恢復(fù)緩存的數(shù)據(jù),包括敏感數(shù)據(jù)(例如加密密鑰)。
可以輕松設(shè)置已發(fā)布的PoC代碼,因?yàn)樗鼰o(wú)需像SharedArrayBuffer這樣的高精度計(jì)時(shí)器即可工作。
“對(duì)于已發(fā)布的PoC,我們?cè)O(shè)置了一個(gè)簡(jiǎn)單的Variant 1小工具”,Google繼續(xù)說(shuō)道,“這個(gè)特定的小工具可以在軟件層面上緩解。但是,Chrome的V8小組得出的結(jié)論是,其他小工具并不是這樣,“我們發(fā)現(xiàn),有效緩解Spectre的某些變體(尤其是變體4)在軟件中根本不可行。” 我們希望安全社區(qū)繼續(xù)我們的研究和開(kāi)發(fā)代碼,開(kāi)發(fā)利用其他幽靈小工具的代碼。”
Google專(zhuān)家還開(kāi)發(fā)了其他具有不同屬性的PoC漏洞,但他們沒(méi)有發(fā)布這些漏洞。這些PoC代碼之一允許以8kB / s的速率泄漏數(shù)據(jù),但是由于使用performance.now()API作為5μs(5000ms)精度計(jì)時(shí)器,因此它的穩(wěn)定性較差。另一個(gè)PoC使用的計(jì)時(shí)器為1ms甚至更短,并且僅以60B / s的速率泄漏數(shù)據(jù)。
Google建議開(kāi)發(fā)人員使用新的安全機(jī)制來(lái)防范硬件攻擊和常見(jiàn)的Web級(jí) 跨站點(diǎn)泄漏。
標(biāo)準(zhǔn)保護(hù)包括 X-Content-Type-Options,X-Frame-Options header和SameSite cookie的使用。但是研究人員還建議啟用以下保護(hù)措施:
- 跨域資源策略(CORP)和獲取元數(shù)據(jù)請(qǐng)求header允許開(kāi)發(fā)人員控制哪些站點(diǎn)可以嵌入其資源(例如圖像或腳本),從而防止將數(shù)據(jù)傳遞給攻擊者控制的瀏覽器呈現(xiàn)器進(jìn)程。請(qǐng)參閱resourcepolicy.fyi(https://resourcepolicy.fyi/)和web.dev/fetch-metadata(https://web.dev/fetch-metadata)。
- 跨域開(kāi)放者政策(COOP)允許開(kāi)發(fā)人員確保其應(yīng)用程序窗口不會(huì)收到來(lái)自其他網(wǎng)站的意外交互,從而使瀏覽器可以在自己的過(guò)程中將其隔離。這增加了一個(gè)重要的進(jìn)程級(jí)保護(hù),特別是在不支持完全站點(diǎn)隔離的瀏覽器中;請(qǐng)參閱網(wǎng)站web.dev/coop-coep(https://web.dev/coop-coep/#integrate-coop-and-coep)。
- 跨域嵌入者策略(COEP)確保應(yīng)用程序請(qǐng)求的任何經(jīng)過(guò)身份驗(yàn)證的資源都已明確選擇加載。如今,為了保證在Chrome或Firefox中高度敏感的應(yīng)用程序的進(jìn)程級(jí)隔離,應(yīng)用程序必須同時(shí)啟用COEP和COOP。參見(jiàn)web.dev/coop-coep(https://web.dev/coop-coep)。
Google安全團(tuán)隊(duì)發(fā)布了一個(gè)名為Spectroscope的Chrome擴(kuò)展程序原型,該擴(kuò)展程序可讓網(wǎng)絡(luò)開(kāi)發(fā)人員保護(hù)其網(wǎng)站免受Spectre的攻擊。
本文翻譯自:https://securityaffairs.co/wordpress/115573/hacking/google-chrome-spectre-poc.html如若轉(zhuǎn)載,請(qǐng)注明原文地址。