[安全公告]關于Intel處理器Meltdown和Spectre安全漏洞公告
尊敬的用戶:
北京時間2018年01月03日,Intel處理器芯片被爆出存在嚴重安全漏洞,該漏洞事件源于芯片硬件設計層面存在缺陷,可導致操作系統(tǒng)內(nèi)核信息泄露、應用程序越權訪問系統(tǒng)內(nèi)核數(shù)據(jù)等問題。
漏洞背景:
現(xiàn)代處理器是通過在流水線各個階段同時執(zhí)行不同的任務來提高處理能力的。為了讓這個流水線機制更加高效,現(xiàn)代處理器又引入了分支預測和亂序執(zhí)行機制,從而更高效的進行運算。
其中,分支預測主要用于解決在跳轉(zhuǎn)分支完全確定前,通過預測執(zhí)行目標地址的代碼來提高執(zhí)行效率。如果預測失敗,流水線會把預測錯誤的代碼放棄并回滾狀態(tài)。
而亂序執(zhí)行則通過將代碼的執(zhí)行順序打亂來提高平行執(zhí)行能力。
這些處理器優(yōu)化技術對于現(xiàn)代處理器的性能提升有很大的幫助。但是近期安全研究者發(fā)現(xiàn),現(xiàn)代處理器架構的這些功能可能會導致安全風險,可以被攻擊者利用在特定情況下進行攻擊。產(chǎn)生這些的根本原因是流水線對無效執(zhí)行狀態(tài)的恢復不完整,以及亂序執(zhí)行時對權限檢查不完整。這里也充分體現(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í)行時,沒有對跨特權的數(shù)據(jù)訪問進行限制。比如當一個用戶態(tài)的程序訪問內(nèi)核數(shù)據(jù)時,最終處理器是會觸發(fā)頁訪問異常的,但是問題出在,當流水線上執(zhí)行時,對于觸發(fā)的頁異常進行了抑制,在處理器真正觸發(fā)頁異常前,相應的代碼還是會執(zhí)行,導致緩存依舊會發(fā)生變化。
Spectre漏洞CVE-2017-5753
該漏洞主要是通過低特權級別的代碼,調(diào)用高特權級別的代碼來實現(xiàn)攻擊。
由于為了性能加速,現(xiàn)代處理器會提前做分支預測,其后在流水線上誤判的預先執(zhí)行最終并不會實際執(zhí)行。但,也是由于性能的原因,流水線執(zhí)行結束后并沒有對所有預判執(zhí)行的現(xiàn)場做完全修復,從而導致在緩存中會留下執(zhí)行的痕跡,進一步會導致低特權惡意軟件可能通過分支預測在緩存中留下的痕跡,在特定代碼情況下猜測出高特權的數(shù)據(jù)。
這個漏洞需要特定的代碼模式才能夠觸發(fā),所以攻擊者必須要在高特權級別的代碼,比如操作系統(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ù)結構,有特定的目標預測算法。通過對這個算法的操縱可以讓攻擊者預填入惡意的跳轉(zhuǎn)地址,在流水線上,當處理器到正確地址之前,讓處理器執(zhí)行特定的目標代碼。當然,隨著流水線的最后確認,這些執(zhí)行也都會被廢棄,但是對于緩存的影響依然保留。
Google在攻擊細節(jié)中給出了反推出KVM的模塊地址思路,但是這個攻擊對處理器的架構以及內(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測試程序來看,攻擊者需要獲取本地普通賬號權限后,再進一步進行提權操作,從而獲取更高權限越權獲取本地敏感信息,漏洞利用有一定的條件限制。
漏洞修復建議(或緩解措施):
1.建議您按照安全最佳實踐做好安全加固和防護措施,防止被攻擊者利用;
2.目前發(fā)現(xiàn)Linux系統(tǒng)執(zhí)行修補后可能造成一定程度的性能影響。該漏洞只能通過本地提權操作才能獲取敏感信息,為了確保業(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)。