盡管Meltdown和Spectre兩大CPU漏洞發(fā)生在2018年年初,但半年的時(shí)間并沒(méi)有讓其帶來(lái)的影響完全消除。自從1月份以來(lái),新的CPU漏洞不斷被曝出,不論是英特爾、AMD、ARM、Power等無(wú)一幸免,"下一代Spectre"、"Meltdown-Spectre變種"等字眼不斷出現(xiàn)在各大科技媒體頭條。雖然各家廠商紛紛推出補(bǔ)丁來(lái)防止漏洞對(duì)于安全性的影響,然而用戶在使用補(bǔ)丁時(shí),卻發(fā)現(xiàn)漏洞補(bǔ)丁帶來(lái)了應(yīng)用性能的下降,有的應(yīng)用性能甚至下降非常大。那么是否能有一種方法能打破性能和安全性之間的鴻溝,從而不必在性能和安全性之間二選一?
解決Meltdown和Spectre問(wèn)題的關(guān)鍵就是減少CPU和應(yīng)用的溝通,例如RDMA和智能網(wǎng)卡做的就是讓CPU盡量只做計(jì)算,所有通訊和安全的操作由網(wǎng)絡(luò)來(lái)做,從而切斷黑客訪問(wèn)應(yīng)用的途徑。此外,還包括DPDK技術(shù),它們實(shí)際是把原來(lái)由內(nèi)核操作的很多工作放到用戶態(tài)去做,這樣很多操作就切斷了跟內(nèi)核態(tài)的關(guān)系。通過(guò)在用戶態(tài)之間建立應(yīng)用和應(yīng)用之間隔離,避免和內(nèi)核態(tài)之間的交互,來(lái)降低這些漏洞帶來(lái)的風(fēng)險(xiǎn)。
由于Meltdown和Spectre問(wèn)題來(lái)源于CPU,最根本的解決辦法就是改變CPU從內(nèi)存和磁盤(pán)讀取數(shù)據(jù)的方式,實(shí)現(xiàn)既不損失性能又有安全保障。但是這是一個(gè)很艱巨的任務(wù),很難在短期內(nèi)實(shí)現(xiàn)。
當(dāng)前的最佳解決方案就是盡量做到CPU Offload,減少內(nèi)核層和用戶層之間的溝通, 比如使用RDMA技術(shù)來(lái)Bypass CPU,使用NVMe over Fabric Offload來(lái)將CPU操作的內(nèi)核拷貝跳過(guò),使用GPU Direct RDMA技術(shù)跳過(guò)GPU內(nèi)存和CPU內(nèi)存的拷貝等。另外使用網(wǎng)卡硬件來(lái)做應(yīng)用和應(yīng)用之間的安全隔離來(lái)避免使用CPU來(lái)做軟件隔離,也是預(yù)防漏洞的有效方法之一。
以CPU Offload如 RDMA 和 DPDK的方案帶來(lái)的明顯價(jià)值是讓用戶不用在安全性和在應(yīng)用性能之間做權(quán)衡。
查看更多>>亂序執(zhí)行(Out-of-order Execution)、推測(cè)執(zhí)行(Speculative Execution)和分支預(yù)測(cè)(Branch Prediction)三大CPU采用的技術(shù)是造成漏洞產(chǎn)生的根本原因。簡(jiǎn)單理解,Meltdown破壞了位于用戶應(yīng)用和操作系統(tǒng)之間的基本隔離,導(dǎo)致程序可能訪問(wèn)其他程序和操作系統(tǒng)內(nèi)存,從而產(chǎn)生敏感信息會(huì)被竊取的可能性。Spectre則是破壞了不同應(yīng)用程序之間的隔離, 處理器會(huì)推測(cè)在未來(lái)有用的數(shù)據(jù)并執(zhí)行計(jì)算,當(dāng)這些數(shù)據(jù)被需要時(shí)可立即使用。但是處理器沒(méi)有很好地將低權(quán)限的應(yīng)用程序與訪問(wèn)內(nèi)核內(nèi)存分開(kāi),這意味著攻擊者可以使用惡意應(yīng)用程序來(lái)獲取應(yīng)該被隔離的私有數(shù)據(jù)。
從對(duì)于業(yè)界應(yīng)用的影響來(lái)看,英特爾確認(rèn)性能損失取決于工作負(fù)載。比如常見(jiàn)的OLTP應(yīng)用,為了提升效率,往往需要將資料緩存到內(nèi)存中,所有的OLTP操作都是由內(nèi)核來(lái)完成,如果不使用Meltdown和Spectre的補(bǔ)丁,應(yīng)用很容易被黑客攻擊;如果使用補(bǔ)丁,根據(jù)第三方測(cè)試數(shù)據(jù),應(yīng)用性能可能會(huì)有8% 到19%的損失。對(duì)于一些內(nèi)核層和用戶層很少通訊的應(yīng)用來(lái)講,性能影響就會(huì)小些甚至不受影響。
由于預(yù)測(cè)執(zhí)行技術(shù)已經(jīng)被廣泛用于各種CPU中,要想解決這個(gè)問(wèn)題的最根本方法是有新的CPU體系架構(gòu)。目前的補(bǔ)丁技術(shù)只能是使用軟件來(lái)降低黑客利用預(yù)測(cè)執(zhí)行來(lái)入侵內(nèi)核內(nèi)存,主要的補(bǔ)丁是將每個(gè)進(jìn)程的內(nèi)核地址和用戶地址共享映射表改為內(nèi)核地址和用戶地址各有自己獨(dú)立的映射表PGD(Page Global Directory),這樣一來(lái)在用戶空間根本沒(méi)有內(nèi)核空間的映射表,即使漏洞存在,黑客也不會(huì)從內(nèi)核獲得數(shù)據(jù)。但是這樣的代價(jià)就是每次系統(tǒng)調(diào)用或者中斷發(fā)生時(shí)都需要切換映射表,這無(wú)疑會(huì)影響應(yīng)用的性能。使用犧牲性能的方式來(lái)解決問(wèn)題,無(wú)疑不是一個(gè)好的方案。
由于Meltdown和Spectre問(wèn)題來(lái)源于CPU,最根本的解決辦法就是改變CPU從內(nèi)存和磁盤(pán)讀取數(shù)據(jù)的方式,實(shí)現(xiàn)既不損失性能又有安全保障。但是這是一個(gè)很艱巨的任務(wù),很難在短期內(nèi)實(shí)現(xiàn)。當(dāng)前的最佳解決方案就是盡量做到CPU Offload,減少內(nèi)核層和用戶層之間的溝通, 比如使用RDMA技術(shù)來(lái)Bypass CPU,使用NVMe over Fabric Offload來(lái)將CPU操作的內(nèi)核拷貝跳過(guò),使用GPU Direct RDMA技術(shù)跳過(guò)GPU內(nèi)存和CPU內(nèi)存的拷貝等。另外使用網(wǎng)卡硬件來(lái)做應(yīng)用和應(yīng)用之間的安全隔離來(lái)避免使用CPU來(lái)做軟件隔離,也是預(yù)防漏洞的有效方法之一。
解決Meltdown和Spectre問(wèn)題的關(guān)鍵就是減少CPU和應(yīng)用的溝通,RDMA和智能網(wǎng)卡做的就是讓CPU盡量只做計(jì)算,所有通訊和安全的操作由網(wǎng)絡(luò)來(lái)做,從而切斷黑客訪問(wèn)應(yīng)用的途徑。此外,還包括DPDK技術(shù),它們實(shí)際是把原來(lái)由內(nèi)核操作的很多工作放到用戶態(tài)去做,這樣很多操作就跟內(nèi)核態(tài)沒(méi)有關(guān)系了。通過(guò)在用戶態(tài)之間建立應(yīng)用和應(yīng)用之間隔離,避免和內(nèi)核態(tài)之間的交互,來(lái)降低這些漏洞帶來(lái)的風(fēng)險(xiǎn),F(xiàn)在RDMA技術(shù)已經(jīng)被廣泛應(yīng)用到了各種各樣的應(yīng)用當(dāng)中,從很多采用RDMA的應(yīng)用來(lái)看,可以看到它被Meltdown和Spectre這兩個(gè)漏洞影響的機(jī)會(huì)非常小,而且對(duì)性能的影響非常低,甚至做到?jīng)]有影響。
所以,這在另一個(gè)層面又回到了卸載技術(shù)與加載技術(shù)的爭(zhēng)論。卸載技術(shù)尋求克服CPU的性能瓶頸,主要方式是對(duì)在集群內(nèi)移動(dòng)的數(shù)據(jù)執(zhí)行各種網(wǎng)絡(luò)功能以及復(fù)雜的通信操作,如協(xié)同操作和數(shù)據(jù)聚集操作。以Mellanox為代表的網(wǎng)絡(luò)廠商推出了卸載技術(shù)(如 RDMA 和 DPDK),將處理TCP/IP和存儲(chǔ)堆棧的重任轉(zhuǎn)移至網(wǎng)絡(luò)適配器,緩解主要系統(tǒng)處理器的壓力。這樣可以提升性能,并緩解了修補(bǔ)Spectre 和Meltdown 后通常造成的性能損失。
Mellanox高速智能網(wǎng)絡(luò)提升分布式SDS性能
點(diǎn)擊下載 >>大型金融機(jī)構(gòu)使其數(shù)據(jù)中心效率保持領(lǐng)先一代的水平
點(diǎn)擊下載 >>通過(guò)Mellanox端到端互連解決方案打造基于Windows Azure Pack的最高效的云
點(diǎn)擊下載 >>在GPFS NSD內(nèi)池化NVMe實(shí)現(xiàn)空前的突發(fā)緩沖區(qū)帶寬級(jí)別
點(diǎn)擊下載 >>