[安全公告]關于Intel處理器Meltdown和Spectre安全漏洞公告
尊敬的用戶:
北京時間2018年01月03日,Intel處理器芯片被爆出存在嚴重安全漏洞,該漏洞事件源于芯片硬件設計層面存在缺陷,可導致操作系統(tǒng)內(nèi)核信息泄露、應用程序越權(quán)訪問系統(tǒng)內(nèi)核數(shù)據(jù)等問題。
漏洞背景:
現(xiàn)代處理器是通過在流水線各個階段同時執(zhí)行不同的任務來提高處理能力的。為了讓這個流水線機制更加高效,現(xiàn)代處理器又引入了分支預測和亂序執(zhí)行機制,從而更高效的進行運算。
其中,分支預測主要用于解決在跳轉(zhuǎn)分支完全確定前,通過預測執(zhí)行目標地址的代碼來提高執(zhí)行效率。如果預測失敗,流水線會把預測錯誤的代碼放棄并回滾狀態(tài)。
而亂序執(zhí)行則通過將代碼的執(zhí)行順序打亂來提高平行執(zhí)行能力。
這些處理器優(yōu)化技術(shù)對于現(xiàn)代處理器的性能提升有很大的幫助。但是近期安全研究者發(fā)現(xiàn),現(xiàn)代處理器架構(gòu)的這些功能可能會導致安全風險,可以被攻擊者利用在特定情況下進行攻擊。產(chǎn)生這些的根本原因是流水線對無效執(zhí)行狀態(tài)的恢復不完整,以及亂序執(zhí)行時對權(quán)限檢查不完整。這里也充分體現(xiàn)了安全設計和性能設計的沖突。
漏洞編號:
bounds check bypass (CVE-2017-5753)
branch target injection (CVE-2017-5715)
rogue data cache load (CVE-2017-5754)
漏洞描述:
根據(jù)披露的攻擊細節(jié)及詳細介紹分析,本次針對英特爾處理器漏洞有兩種攻擊方法,分別為Meltdown和Spectre。
其中,Meltdown主要涉及CVE-2017-5754,Spectre主要涉及CVE-2017-5753和CVE-2017-5715。
Meltdown漏洞CVE-2017-5754
應該說這三個漏洞中,Meltdown是最容易利用也是影響最大的。
本質(zhì)上這個漏洞是因為處理器在亂序執(zhí)行時,沒有對跨特權(quán)的數(shù)據(jù)訪問進行限制。比如當一個用戶態(tài)的程序訪問內(nèi)核數(shù)據(jù)時,最終處理器是會觸發(fā)頁訪問異常的,但是問題出在,當流水線上執(zhí)行時,對于觸發(fā)的頁異常進行了抑制,在處理器真正觸發(fā)頁異常前,相應的代碼還是會執(zhí)行,導致緩存依舊會發(fā)生變化。
Spectre漏洞CVE-2017-5753
該漏洞主要是通過低特權(quán)級別的代碼,調(diào)用高特權(quán)級別的代碼來實現(xiàn)攻擊。
由于為了性能加速,現(xiàn)代處理器會提前做分支預測,其后在流水線上誤判的預先執(zhí)行最終并不會實際執(zhí)行。但,也是由于性能的原因,流水線執(zhí)行結(jié)束后并沒有對所有預判執(zhí)行的現(xiàn)場做完全修復,從而導致在緩存中會留下執(zhí)行的痕跡,進一步會導致低特權(quán)惡意軟件可能通過分支預測在緩存中留下的痕跡,在特定代碼情況下猜測出高特權(quán)的數(shù)據(jù)。
這個漏洞需要特定的代碼模式才能夠觸發(fā),所以攻擊者必須要在高特權(quán)級別的代碼,比如操作系統(tǒng)內(nèi)核,虛擬化底層中找到特定模式的代碼用于利用,相對CVE-2017-5715而言,利用難度小。
Spectre漏洞CVE-2017-5715
對于漏洞CVE-2017-5753,攻擊者需要找到已經(jīng)存在的特定代碼模式來展開攻擊。如果沒有現(xiàn)成的攻擊者用于展開攻擊的代碼模式,攻擊者需要考慮如何制造出這些便于攻擊的代碼模式。漏洞CVE-2017-5715就是針對這個思路展開的。
這里的攻擊目標是分支目標緩存。這是一個處理器內(nèi)部用于加速分支跳轉(zhuǎn)的內(nèi)部數(shù)據(jù)結(jié)構(gòu),有特定的目標預測算法。通過對這個算法的操縱可以讓攻擊者預填入惡意的跳轉(zhuǎn)地址,在流水線上,當處理器到正確地址之前,讓處理器執(zhí)行特定的目標代碼。當然,隨著流水線的最后確認,這些執(zhí)行也都會被廢棄,但是對于緩存的影響依然保留。
Google在攻擊細節(jié)中給出了反推出KVM的模塊地址思路,但是這個攻擊對處理器的架構(gòu)以及內(nèi)部間接分支預測的算法有很強的依賴。相對而言,這個漏洞是最難利用的,需要一定的先決條件以及很多處理器內(nèi)部信息。
具體攻擊方式介紹如下:
Spectre:bounds check bypass (CVE-2017-5753)
Spectre:branch target injection (CVE-2017-5715)
Meltdown:rogue data cache load (CVE-2017-5754)
影響范圍:
該漏洞存在于Intel x86_64的硬件中,從1995年以后生產(chǎn)的Intel處理器芯片將都可能受到影響。同時AMD、ARM處理器也會受到影響。
漏洞風險:
從目前公開的PoC測試程序來看,攻擊者需要獲取本地普通賬號權(quán)限后,再進一步進行提權(quán)操作,從而獲取更高權(quán)限越權(quán)獲取本地敏感信息,漏洞利用有一定的條件限制。
漏洞修復建議(或緩解措施):
1.建議您按照安全最佳實踐做好安全加固和防護措施,防止被攻擊者利用;
2.目前發(fā)現(xiàn)Linux系統(tǒng)執(zhí)行修補后可能造成一定程度的性能影響。該漏洞只能通過本地提權(quán)操作才能獲取敏感信息,為了確保業(yè)務的穩(wěn)定性,請用戶根據(jù)自身業(yè)務情況決定是否需要升級修復漏洞。修補前請做好業(yè)務驗證及必要的數(shù)據(jù)備份(可以采取備份等功能用來保存數(shù)據(jù)及虛機狀態(tài));
3.本次漏洞建議用戶更新補丁以規(guī)避meltdown漏洞風險;
以下為更新補丁參考方式:
Linux:
1)CentOS:
yum update kernel –y
reboot
2)Ubuntu:
12.04:
apt-get update && apt-get dist-upgrade
update-grub
reboot
備注:更新補丁時,openssh選擇NO
14.04/16.04:
apt-get update
apt-get install linux-image-4.4.0-112-generic linux-image-extra-4.4.0-112-generic
update-grub
reboot
3)Debian:
6.0.10:
apt-get update && apt-get dist-upgrade
update-grub
reboot
7.8:
apt-get install linux-image-3.2.0-5-amd64
update-grub
reboot
備注:重啟后,選擇Linux 3.2.0-5-amd64內(nèi)核啟動
7.8.10:
apt-get install linux-image-3.2.0-5-amd64
update-grub
reboot
Windows Server:
1)2008 R2:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4056897
適用于箭頭云的漏洞補丁如下:
2)2012 R2:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4056898
適用于箭頭云的漏洞補丁如下:
3)2016 R2:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4056890
適用于箭頭云的漏洞補丁如下:
備注:由于windows發(fā)布更新跟云主機中的反病毒軟件們兼容性并不是很好,所以在用戶的云主機中windows update功能打開的情況下,可能并不能自動獲取到針對Meltdown和Spectre的更新包。建議用戶自行下載后,再手工安裝更新。
以上linux系統(tǒng)更新方式采用新增內(nèi)核啟動方式,如出現(xiàn)意外情況,可以嘗試在開機過程中通過云主機vnc界面進入grub,選用老版本內(nèi)核進入系統(tǒng)。