• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      詳解Meltdown&Spectre攻擊

      2018-11-09 01:16:28
      網(wǎng)絡安全和信息化 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硬件的缺陷進行的攻擊,因此它們的攻擊范圍特別廣,存在于各種操作系統(tǒng)和云平臺上。近二十年的CPU/OS/VMM基本都受影響,包括從云端到桌面到移動,對業(yè)界產(chǎn)生巨大沖擊。

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

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

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

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

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

      攻擊的場景

      Meltdown和Spectre具體有三個變種:

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

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

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

      典型的場景威脅:

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

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

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

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

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

      攻擊的防御與緩解

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

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

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

      云上租戶可以根據(jù)自己的需求進行防護。由于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)目標注入攻擊的緩解——V2的緩解

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

      RSB填充+BTB刷新。這是一個純軟件解決方案,其核心思想就是對跳轉(zhuǎn)目標的Buffer,即RSB和BTB進行清理,使得攻擊者注入的跳轉(zhuǎn)目標不再有效。因為RSB是一個32個槽的循環(huán)Buffer,因此只需要32個虛假的call指令就可以把整個RSB清理一遍。BTB的槽從1K到16K不等,而且從虛擬地址到BTB索引的映射函數(shù)f(x)還不公開,因此要清除BTB,需要首先使用逆向工程方法找到f(x),然后根據(jù)f(x)找到1K到16K的虛擬地址來對應每個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)。當IBRS被設置上時,高優(yōu)先級代碼不會使用低優(yōu)先級的跳轉(zhuǎn)地址。比如VMM不會使用任何VM提供的地址,Kernel也不會使用任何用戶進程提供的地址。

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

      Indirect Branch Predictor Barrier(IBPB)。當IBPB被設置時,之前的跳轉(zhuǎn)地址不會影響之后的跳轉(zhuǎn)預測。這個功能一般用于從高優(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ù)進行防御,替換掉容易被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攻擊。

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

      結(jié)語

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

      猜你喜歡
      頁表內(nèi)核攻擊者
      萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
      更正
      中國糖料(2022年4期)2022-03-15 22:37:37
      作者更正
      基于微分博弈的追逃問題最優(yōu)策略設計
      自動化學報(2021年8期)2021-09-28 07:20:18
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      勘 誤
      更正
      基于嵌入式Linux內(nèi)核的自恢復設計
      Linux內(nèi)核mmap保護機制研究
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      美姑县| 扎赉特旗| 闽清县| 阳信县| 北安市| 南木林县| 林甸县| 丹棱县| 西丰县| 民权县| 封丘县| 南召县| 平舆县| 海口市| 西华县| 胶南市| 蒙山县| 墨竹工卡县| 内江市| 武胜县| 屯昌县| 天台县| 南安市| 抚州市| 鄢陵县| 廊坊市| 汾阳市| 桦川县| 福州市| 铁力市| 昭平县| 穆棱市| 乐陵市| 宁蒗| 永靖县| 上林县| 保德县| 镇康县| 西林县| 峨边| 三门峡市|