近日,研究人發現一個危險的Intel芯片漏洞,該漏洞能夠讓攻擊者對所有軟件平臺執行有效的攻擊,甚至跨越虛擬化邊界。
紐約州立大學賓漢姆頓分校計算科學學院Dmitry Evtyushkin和Dmitry Ponomarev以及加州大學河濱分校Nael Abu-Ghazaleh在其論文《Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR》中描述了一種攻擊,當這種攻擊在運行最新版Linux的Haswell處理器執行時,可在約60毫秒內可靠地恢復內核地址空間布局隨機化(ASLR)。
根據這些研究人員表示,這個問題出在Intel芯片對分支目標緩沖器(BTB)的使用。
“分支預測器是現代處理器性能的關鍵,分支預測硬件的主要組件之一是分至目標緩沖器,”他們寫道,“BTB會存儲最近執行的分支指令的目標地址,這些地址可直接從BTB查找中獲取在下一周期目標地址開始的指令。由于BTB在相同內核執行多個應用共享,這可能導致通過BTB側信道出現信息泄露。”
Abu-Ghazaleh指出,雖然該團隊使用Intel的Haswell芯片進行測試,但其他Intel芯片也可能易受到攻擊,因為它們為分支預測器使用相同的原則,但相關具體細節以及我們是否可恢復所有ASLR取決于配置情況。
在這些研究人員描述的新攻擊中,通過利用BTB的側信道信息,攻擊者可恢復內核地址的所有隨機位,減少用戶級隨機化的熵。
“我們的攻擊只需要控制用戶級進程,而不需要依靠任何明確的內存泄露,”這些研究人員寫道,“這種基于BTB側信道攻擊可能實現的關鍵在于,攻擊者能夠以可控制和穩定的方式在兩個用戶級進程之間、用戶進程和內核之間制造BTB沖突。”
研究人員稱,ASLR的目的是讓攻擊者難以知道程序地址空間具體代碼頁的位置,這意味著,繞過ASLR可能導致大量攻擊。
這些研究人員稱:“所有支持隨機化的現有操作系統都部署了某種ASLR用于用戶和內核級地址空間。內核級ASLR(KASLR)可隨機化內核代碼段,可阻止需要知道內核地址空間布局(包括返回定向編程、跳轉定向編程、return-to-libc、ret-2-user以及其他攻擊)的攻擊。”
Cigital公司顧問Andre Joseph稱,而繞過ASLR的能力可讓攻擊者變得非常危險。
“這是重要的縱深防御做法,因為它通過隨機化攻擊者代碼的位置讓攻擊者更難利用溢出攻擊,”Joseph稱,“在充分隨機化后,攻擊者不會知道在哪里進行指令指示流量以執行其代碼。”
除了Intel芯片漏洞可能允許攻擊者繞過任何平臺的ASLR,ERNW Research安全研究人員Felix Wilhelm還展示了概念驗證工具,可從客戶虛擬機泄露KVM管理程序基本地址。然而,Wilhelm指出了在虛擬化環境中執行這種攻擊的一些局限性,這主要取決于部署情況。
Joseph稱部署多個處理器可能讓這種攻擊非常難以執行。
“內核ASRL似乎比用戶應用ASLR位更容易獲取,如果你有多個內核,對于應用ASLR,這特別危險,”Joseph稱,“攻擊者采取的方法是,迫使受害者應用到相同的內核作為惡意進程,但我不確定這些方法在實際中是否可靠。為了讓用戶空間ASLR漏洞利用有效運行,你需要兩個進程在同一處理器,因為每個處理器都有不同的BTB。”
研究人員稱軟件措施可能有有限的功效,因為他們不能控制分支如何映射到BTB條目,讓他們無法解決側信道的根本問題。同時,研究人員指出更細粒度的ASLR機制或者模糊時間戳計數器也可能讓攻擊變得更困難。
研究人員總結稱,對Intel處理器做出更改是更有效的做法。
“硬件解決方案可從根本上緩解基于BTB的攻擊,這種解決方案會改變BTB尋址機制,防止BTB中可利用的沖突。而對于針對KASLR的攻擊,可利用完全虛擬機制來訪問BTB來緩解,消除用戶代碼和內核代碼之間的沖突。”