推測(cè)執(zhí)行 (speculative execution) 是當(dāng)今主流處理器(包括 AMD、ARM 和 Intel)中廣泛采用的一項(xiàng)優(yōu)化技術(shù)。其基本思路是利用處理器的空閑時(shí)間提前執(zhí)行一些將來 “可能用得上,但也可能被放棄” 的計(jì)算(包括分支預(yù)測(cè)、預(yù)讀內(nèi)存和文件數(shù)據(jù)),從而極大提升系統(tǒng)的整體運(yùn)行速度。然而我們發(fā)現(xiàn)這項(xiàng)優(yōu)化技術(shù)可能存在漏洞,進(jìn)而威脅用戶數(shù)據(jù)安全。本文將為大家介紹事件脈絡(luò),并闡述我們至今為保護(hù)大家的數(shù)據(jù)安全所做的努力和成果。
背景
去年,我們的 Project Zero 團(tuán)隊(duì)發(fā)現(xiàn)了由 “推測(cè)執(zhí)行” 引起的嚴(yán)重安全漏洞,這是大多數(shù)現(xiàn)代處理器 (CPU) 用來優(yōu)化性能的技術(shù)。
Project Zero 的研究人員 Jann Horn 展示了一些可能的進(jìn)攻場(chǎng)景:惡意行為者可以利用推測(cè)執(zhí)行來讀取本應(yīng)無法被訪問的系統(tǒng)內(nèi)存。例如,未經(jīng)授權(quán)方可能會(huì)讀取系統(tǒng)內(nèi)存中的敏感信息,如密碼、加密密鑰或是在應(yīng)用中打開的敏感信息。測(cè)試還表明,在虛擬機(jī)上運(yùn)行的攻擊能夠訪問主機(jī)的物理內(nèi)存,并通過這種方式獲得同一物理主機(jī)上其他虛擬機(jī)的內(nèi)存讀取權(quán)限。
這些漏洞會(huì)影響許多 CPU,包括來自 AMD、ARM 和 Intel 的 CPU,以及運(yùn)行在其上的設(shè)備和操作系統(tǒng)。
在得知了這個(gè)新的攻擊類型后,我們的安全和產(chǎn)品開發(fā)團(tuán)隊(duì)便立即行動(dòng)起來,捍衛(wèi) Google 的系統(tǒng)安全和用戶數(shù)據(jù)。我們已經(jīng)更新了受影響的系統(tǒng)和產(chǎn)品,以阻止這種新型的攻擊。我們還與整個(gè)行業(yè)內(nèi)的硬件和軟件制造商合作,幫助保護(hù)用戶和更廣義的網(wǎng)絡(luò)安全。這些努力包括協(xié)作分析和開發(fā)全新的應(yīng)對(duì)方法。
由于現(xiàn)有的公開報(bào)道以及新聞和安全研究領(lǐng)域?qū)@個(gè)問題的猜測(cè)越來越多,這可能會(huì)導(dǎo)致這種新型的攻擊方法被更多人惡意利用,因此我們沒有在原定計(jì)劃的 2018 年 1 月 9 日,而是提前了一些時(shí)間進(jìn)行發(fā)布(本文原文在 2018 年 1 月 3 日發(fā)表于 Google Security Blog,本文結(jié)尾處有完整鏈接)。
Google 產(chǎn)品的應(yīng)對(duì)狀態(tài)
下面我們列出了受影響的 Google 產(chǎn)品列表及其對(duì)此攻擊的應(yīng)對(duì)狀態(tài)。由于這是一種新的攻擊類型,我們的補(bǔ)丁狀態(tài)指的是我們?yōu)榉婪赌壳耙阎娜毕莺瓦M(jìn)攻方式所采取的措施。這些措施已經(jīng)在很多產(chǎn)品中起到了顯著效果(甚至某些產(chǎn)品中從一開始就不存在推測(cè)執(zhí)行漏洞)。在某些情況下,用戶和客戶可能需要采取額外的操作步驟來確保他們使用的是安全的產(chǎn)品版本。這個(gè)列表和其中的產(chǎn)品狀態(tài)可能會(huì)隨著新的進(jìn)展而變化。屆時(shí)我們也會(huì)更新這個(gè)列表,并告知大家。
以下未明確列出的 所有 Google 產(chǎn)品都不需要用戶或客戶進(jìn)行操作。
Android:
1.擁有最新安全更新的設(shè)備已受保護(hù)。雖然這個(gè)漏洞可能造成基于 ARM 的 Android 設(shè)備信息泄露,但在我們的更新后未發(fā)現(xiàn)這個(gè)漏洞再次出現(xiàn)。
2.安裝了最新安全更新的受支持的 Nexus 和 Pixel 設(shè)備已受保護(hù)。
3.更多信息請(qǐng)見:
https://support.google.com/faqs/answer/7622138#android
Google Apps / G Suite ( Gmail, Calendar, Drive, Site 等 ) :
1.無需額外的用戶或客戶操作。
Google Chrome:
1.一些用戶或客戶需要采取操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#chrome
Google Chrome OS ( 如 Chromebook ) :
1.需要一些額外的用戶或客戶操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#chromeos
Google Cloud Platform:
1.Google App Engine:無需額外的客戶操作。
2.Google Compute Engine:需要一些額外的客戶操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#gce
3.Google Kubernetes 引擎:需要一些額外的客戶操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#gke
4.Google Cloud Dataflow:需要一些額外的客戶操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#clouddataflow
5.Google Cloud Dataproc:需要一些額外的客戶操作。更多信息請(qǐng)見:https://support.google.com/faqs/answer/7622138#clouddataproc
6.所有其他 Google Cloud 產(chǎn)品和服務(wù):無需其他操作。
Google Home / Chromecast:
1.無需額外的用戶操作。
Google Wifi / OnHub:
1.無需額外的用戶操作。
漏洞的攻擊方法及對(duì)策
要利用此漏洞,攻擊者首先必須能夠在目標(biāo)系統(tǒng)上運(yùn)行惡意代碼。
Project Zero 的研究人員發(fā)現(xiàn)了三種在不同條件下有效的攻擊方法(即 “變種” )。所有這三種攻擊方式都可以允許擁有普通用戶權(quán)限的進(jìn)程執(zhí)行未經(jīng)授權(quán)的內(nèi)存數(shù)據(jù)讀取,這些數(shù)據(jù)可能包含密碼、密鑰資料等敏感信息。
為了提高系統(tǒng)的運(yùn)行性能,許多 CPU 可能會(huì)選擇基于被認(rèn)為可能成立的假設(shè)來推測(cè)性地提前執(zhí)行指令。在推測(cè)執(zhí)行期間,處理器也會(huì)驗(yàn)證這些假設(shè):如果它們成立,則繼續(xù)之前執(zhí)行的操作;如果它們不成立,則回滾之前執(zhí)行的操作,并根據(jù)實(shí)際情況轉(zhuǎn)向正確的執(zhí)行路徑。這種運(yùn)行機(jī)制可能存在分支解除時(shí)沒有回滾 CPU 狀態(tài)而產(chǎn)生副作用,并且導(dǎo)致信息泄露。
對(duì)于三個(gè)攻擊變種沒有單一的解決方案:每個(gè)變種都需要獨(dú)立的保護(hù)措施。許多供應(yīng)商都提供了補(bǔ)丁,可用于應(yīng)對(duì)一種或多種的此類攻擊。
我們將繼續(xù)應(yīng)對(duì)此漏洞,并會(huì)在發(fā)布進(jìn)一步措施時(shí)更新我們的產(chǎn)品支持頁(yè)面。同時(shí),感謝所有合作伙伴和 Google 工程師,在過去幾個(gè)月里不知疲倦地為我們的用戶和客戶提供了安全支持。