国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

詳解Meltdown&Spectre攻擊

2018-11-09 01:16
網(wǎng)絡(luò)安全和信息化 2018年2期
關(guān)鍵詞:內(nèi)核攻擊者性能

安全研究人員發(fā)現(xiàn)CPU芯片硬件層面執(zhí)行加速機制,也就是亂序執(zhí)行(Out-of-Orderexecution)和推測執(zhí)行(Speculative Execution),會引起 CPU緩存的污染,從而攻擊者可以發(fā)起基于cache的側(cè)信道攻擊偷取數(shù)據(jù)。目前主要涉及到兩種攻擊方法,分別為 Meltdown和 Spectre。Spectre涉及CVE編號CVE-2017-5753和CVE-2017-5715,而 Meltdown涉及 CVE編號CVE-2017-5754。

由于Meltdown和Spectre的攻擊是針對CPU硬件的缺陷進(jìn)行的攻擊,因此它們的攻擊范圍特別廣,存在于各種操作系統(tǒng)和云平臺上。近二十年的CPU/OS/VMM基本都受影響,包括從云端到桌面到移動,對業(yè)界產(chǎn)生巨大沖擊。

這一漏洞主要用于偷取隱私數(shù)據(jù),包括口令、證書和其他保密數(shù)據(jù),甚至完整的內(nèi)存鏡像。值得慶幸的是這些攻擊不能修改數(shù)據(jù)。影響范圍包括:

CPU處理器:近二十年的Intel、AMD、ARM等處理器都有影響,其中對Intel處理器的影響尤為嚴(yán)重;

操作系統(tǒng):Windows、Linux、Android、iOS 和macOS等;

虛擬機管理器:KVM、Xen等。

本文主要關(guān)注Intel CPU Meltdown和Spectre在不同場景下的攻擊及緩解措施,這些內(nèi)容對AMD/ARM的攻防也有重要的借鑒價值。這些漏洞雖然影響廣泛,但利用復(fù)雜,限制也很大。

攻擊的場景

Meltdown和Spectre具體有三個變種:

變種 1(V1)Spectre:繞過邊界檢查(CVE-2017-5753);

變種 2(V2)Spectre:分支預(yù)測注入(CVE-2017-5715);

變種 3(V3)Meltdown:亂序執(zhí)行的CPU緩存污染(CVE-2017-5754)。

典型的場景威脅:

1.對虛擬機管理器VMM的攻擊(A1):攻擊者在VMM管理的一個VM中,完全控制此VM,比如擁有這個VM Kernel級別的權(quán)限,可以直接與VMM進(jìn)行交互。攻擊者通過利用這些漏洞,可以獲取VMM的敏感數(shù)據(jù),或者獲取同一物理主機下的其他VM內(nèi)的數(shù)據(jù)。

2.對操作系統(tǒng)內(nèi)核的攻擊(A2):攻擊者是用戶空間的一個應(yīng)用程序,擁有任意的代碼執(zhí)行能力。攻擊者通過利用這些漏洞,可獲取內(nèi)核內(nèi)的敏感數(shù)據(jù),甚至包括內(nèi)核緩沖區(qū)的文件或網(wǎng)絡(luò)數(shù)據(jù)。

3.對用戶空間其他用戶數(shù)據(jù)的攻擊(A3):攻擊者是用戶空間的一個應(yīng)用程序,擁有任意的代碼執(zhí)行能力。攻擊者通過利用這些漏洞,獲取同一操作系統(tǒng)下的其他進(jìn)程的數(shù)據(jù),包括跨Docker的攻擊。

瀏覽器對用戶空間其他用戶數(shù)據(jù)的攻擊(A3w):攻擊者只能通過網(wǎng)站頁面影響瀏覽器發(fā)起攻擊,可通過利用JavaScript、或Web Assembly等機制。

V3c組合攻擊:如果將V3攻擊置于V1/V2的預(yù)測執(zhí)行路徑上,可以完成V3攻擊,但不會觸發(fā)Kernel能感知的頁面異常,我們稱之為V3c組合攻擊。V3c組合攻擊的發(fā)現(xiàn)意味著A2攻擊場景下,要抵抗V3攻擊,必須要打內(nèi)核補丁。

攻擊的防御與緩解

防護措施都是有成本的,防護方可根據(jù)自己的場景來選擇必要的防護措施。

公有云VMM的運營者,應(yīng)該保障VMM不受惡意攻擊,即A1層面的防護是必須要做到的,特別是V2攻擊。使用Xen的廠商也要關(guān)注V3攻擊的防御。

圖1 加入LFENCE指令在判斷語句之后,防止后面的代碼執(zhí)行推測運行機制

云上租戶可以根據(jù)自己的需求進(jìn)行防護。由于A2.V3防護的KPTI補丁有較為明顯的性能損耗,所以如果云上租戶在同一個VM內(nèi)部沒有數(shù)據(jù)敏感級別區(qū)隔,而且對性能要求較高,那么可以繼續(xù)使用原始內(nèi)核。如果云上租戶在同一個VM內(nèi)部有多級數(shù)據(jù)敏感區(qū)隔,而且可執(zhí)行代碼不固定,并能接受額外的性能損耗,那么推薦使用打了安全補丁的內(nèi)核。

對于普通PC用戶,最大的威脅來自于瀏覽器訪問惡意網(wǎng)址以及感染上惡意代碼。這些防護與傳統(tǒng)PC安全沒有太大的區(qū)別,及時升級即可。

緩解方案

1.邊界檢查繞過的緩解——V1的緩解

V1攻擊高度依賴于特殊的代碼片段(Gadget)。因此,簡單有效的軟件解決方案就是插入一個Barrier來阻止推測運行機制在這段特殊代碼里面執(zhí)行。Barrier可以選用LFENCE指令。而MFENCE同樣可以,不過它的性能損失比LFENCE大,實例如圖1所示。

對于Linux系統(tǒng),禁用eBPF機制可以阻斷現(xiàn)有PoC攻擊,使得攻擊者無法通過eBPF接口注入V1 gadget到內(nèi)核空間,從而顯著提升Exploit的構(gòu)造難度。Intel的一個分析報告指出,可以作為V1攻擊的代碼片段在Linux內(nèi)核中很少。這樣使得攻擊者發(fā)起V1攻擊的可行性降低。

2.跳轉(zhuǎn)目標(biāo)注入攻擊的緩解——V2的緩解

對于跳轉(zhuǎn)目標(biāo)注入攻擊,有兩個可行的緩解方案。

RSB填充+BTB刷新。這是一個純軟件解決方案,其核心思想就是對跳轉(zhuǎn)目標(biāo)的Buffer,即RSB和BTB進(jìn)行清理,使得攻擊者注入的跳轉(zhuǎn)目標(biāo)不再有效。因為RSB是一個32個槽的循環(huán)Buffer,因此只需要32個虛假的call指令就可以把整個RSB清理一遍。BTB的槽從1K到16K不等,而且從虛擬地址到BTB索引的映射函數(shù)f(x)還不公開,因此要清除BTB,需要首先使用逆向工程方法找到f(x),然后根據(jù)f(x)找到1K到16K的虛擬地址來對應(yīng)每個BTB的槽。最后發(fā)起1K到16K個虛假的call/jmp把所有BTB的槽清空(實例代碼如圖2所示)。需要指出,該方案的性能開銷很大。

微碼升級+系統(tǒng)軟件(VMM/Kernel)補丁。這個緩解方案需要CPU微碼升級和系統(tǒng)軟件(VMM/Kernel)更新。CPU微碼的升級提供了三個新的接口給系統(tǒng)軟件:

Indirect Branch Restricted Speculation(IBRS)。當(dāng)IBRS被設(shè)置上時,高優(yōu)先級代碼不會使用低優(yōu)先級的跳轉(zhuǎn)地址。比如VMM不會使用任何VM提供的地址,Kernel也不會使用任何用戶進(jìn)程提供的地址。

Single Thread Indirect Branch Predictors(STIBP)。當(dāng)STIBP被設(shè)置上時,同一物理CPU上的兩個HyperThreading邏輯內(nèi)核直接的跳轉(zhuǎn)地址不再共享。

Indirect Branch Predictor Barrier(IBPB)。當(dāng)IBPB被設(shè)置時,之前的跳轉(zhuǎn)地址不會影響之后的跳轉(zhuǎn)預(yù)測。這個功能一般用于從高優(yōu)先級到低優(yōu)先級切換上下文的時候。比如VMM回到VM或Kernel回到用戶空間。

圖2 BTB Flushing,使用 1K或16K跳轉(zhuǎn)來清空BTB

這三個功能是否支持可以用CPUID加ax=0x7來檢測。返回結(jié)果中rdx的第26位表明這三個新功能是否支持。對系統(tǒng)軟件(VMM/Kernel)的更新,各個操作系統(tǒng)已經(jīng)發(fā)布了相關(guān)的補丁。

如果無法得到微碼升級,可以考慮使用Retpoline指令替換技術(shù)進(jìn)行防御,替換掉容易被V2攻擊的間接跳轉(zhuǎn)和間接調(diào)用指令。

此外,類似于V1,Linux下關(guān)閉eBPF也可以有效的提升V2攻擊的難度。

3.Meltdown攻擊的緩解措施——V3的緩解

抵御Meltdown攻擊最有效的方式就是KAISER/KPTI。KAISER/KPTI方案中要求操作系統(tǒng)維護兩個頁表,一個頁表給用戶程序使用,一個給Kernel自己使用。并且確保程序所使用的頁表不會映射高優(yōu)先級的頁面,即不會映射Kernel的頁面。KAISER/KPTI方案最早提出時是為了側(cè)信道攻擊對內(nèi)核地址隨機化(KASLR)的影響,該方案恰巧也可以用來抵御Meltdown攻擊。

兩個頁表的切換,會導(dǎo)致CR3的重新加載,從而引起TLB刷新,進(jìn)而降低內(nèi)存的訪問速度。如果某些應(yīng)用場景需要大量的內(nèi)核和用戶空間切換(兩個頁表之間的切換),會造成較高的性能開銷。為了降低這些性能開銷,Kernel需要使用充分的利用PCID特性,把TLB的刷新降低。

結(jié)語

本文針對Meltdown和Spectre攻擊及其緩解措施進(jìn)行了總結(jié)。由于防護措施都是有成本的,本文給防護方提供一個指南,可以根據(jù)自己的場景來選擇必要的防護措施。本文也指出一些組合攻擊方式,比標(biāo)準(zhǔn)攻擊威脅更大。因此需要盡快部署相關(guān)防護措施。

猜你喜歡
內(nèi)核攻擊者性能
多內(nèi)核操作系統(tǒng)綜述①
機動能力受限的目標(biāo)-攻擊-防御定性微分對策
強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
活化非遺文化 承啟設(shè)計內(nèi)核
提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
Linux內(nèi)核mmap保護機制研究
正面迎接批判
Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征
有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
強韌化PBT/PC共混物的制備與性能
新郑市| 星座| 都江堰市| 探索| 房产| 湟中县| 西昌市| 虞城县| 天津市| 星子县| 阳泉市| 富源县| 广西| 天长市| 洞口县| 临夏县| 斗六市| 乡宁县| 深州市| 青海省| 达日县| 广安市| 铜川市| 信阳市| 兴城市| 和田市| 汕尾市| 庆安县| 轮台县| 信阳市| 平遥县| 元谋县| 桐柏县| 岐山县| 泰来县| 鹿邑县| 定襄县| 旌德县| 遂昌县| 法库县| 华安县|