
關鍵詞:防滑
沖孔網
標題:ASLR on the Line:魚鱗沖孔網一種通過旁路探測頁表緩存繞過地址隨機化的新型安全攻擊
來源:知乎
文章內容: (題圖來自于AnC攻擊的介紹網站:AnC - VUSec)
本文是上海交通大學密碼與計算機安全實驗室(LoCCS)軟件安全小組(GoSSIP)的論文討論Seminar記錄,版權所有,轉載請與作者取得聯系!
Address space layout randomization (ASLR) 是一種抵御代碼重用攻擊的軟件安全保護技術,目前已被大多數主流操作系統采用。傳統的針對ASLR的攻擊主要依賴軟件漏洞或者重復的內存探測。隨著各種高級防御技術被添加到系統中,針對軟件的攻擊難度越來越高。魚鱗沖孔網2017年頂級安全學術會議NDSS上,來自Vrije Universiteit Amsterdam的Ben Gras等人發表了一篇文章 《ASLR on the Line: Practical Cache Attacks on the MMU》,提出了一種利用硬件特征開展的針對ASLR的攻擊方式,該攻擊被稱為AnC Attack,使用EVICT+TIME的旁路攻擊方法來泄漏內存地址,以降低ASLR的熵。論文成功地展示了對來自Intel,ARM和AMD等公司的11種不同微架構的CPU實施的AnC攻擊。下面,我們來詳細分析一下該研究成果。
1. 攻擊原理
圖1 MMU在x86_64上的虛擬地址轉換過程
當現有的系統進行虛擬地址尋址時,會使用4級頁表(PTL)來找到對應的物理地址。每級頁表中存放指向下一級頁表物理地址的PTE(Page Table Entry)。最后一級頁表(PTL1)存放到目的物理地址的PTE(如圖1所示)。出于性能考慮,MMU和Cache中會緩存一部分最近經常訪問的PTE,從而可以通過旁路攻擊泄漏地址。
對64位的虛擬地址,12-20位確定PTL1中的PTE,21-29位確定PTL2中的PTE,30-38位確定PTL3中的PTE,39-46位確定PTL4中的PTE。64位系統中ASLR隨機化了最多35bit熵,即虛擬地址的12-45位是隨機的。
開展AnC攻擊時,通過分配多個內存地址上連續(或者臨近)的內存塊,來暴破待泄漏內存地址的偏移。由于PTL對應的虛擬地址的分段特性,可以分配不同大小的內存塊分段暴破。 攻擊前需要清空cache中的PTE的緩存,通過多次訪問一個偏遠的內存空間來清cache。然后訪問待泄漏的內存地址,因為cache已經清掉了,所有會進行一次Page Table Walk,目標虛擬地址對應的四級PTL都會裝入cache。魚鱗沖孔網這時候再訪問預先分配的相鄰(或者臨近)的內存塊中的地址,并記錄時間。因為,這兩個內存塊的虛擬地址高位都一樣,只有低位不同,因此可以通過(比如)PTL1的cache miss來旁路泄漏出目標地址的偏移。然后逐次訪問更遠的內存,來泄漏更高位的(e.g. PTL4)的地址。
2. 面臨的挑戰
2.1 準確測量時間
該攻擊目前是在主流的瀏覽器上用javascript代碼來實現的,需要依賴于一些計時特性。針對Firefox的攻擊使用了performance.now() 計時,精度是每5μs一次;針對chrome的攻擊因為performance.now()不太準確,所以用shared memory counter來計時。
2.2 內存排列
以2GB為單位分配內存塊。使用不同的步長來分段泄漏地址。使用步長4KB來泄漏PTL1,2MB泄漏PTL2,8GB泄漏PTL3,4TB泄漏PTL4。
瀏覽器中,Firefox因為mmap的時候沒有用MAP_POPULATE,所以可以順利地分配到4TB的內存。但在Chrome中,mmap的時候會同時分配物理內存,所以攻擊PTL3和PTL4時會有一定概率無法成功。
3. 實驗
作者在實驗中對Chrome和Firefox進行了攻擊。實驗環境是Intel Skylake i7- 6700K CPU,16 GB 內存,操作系統是 Ubuntu 16.04.1 LTS。
圖2 AnC攻擊的攻擊效果
圖2攻擊是成功率的圖,Chrome因為內存排列隨機化的原因,會有失敗的概率。Firefox PTL4攻擊時,4TB內存會和其他對象共享,魚鱗沖孔網產生噪聲。
圖3 AnC攻擊對ASLR的熵的降低效果
圖3展示了AnC攻擊可以在50s內有效地降低ASLR的熵。
最后,表1列舉了受到AnC攻擊影響的一些CPU型號。
4 防御方法
作者討論了一些簡單的防御措施,然而大部分并不可能很快部署到現有系統上去
4.1 攻擊檢測
可以針對攻擊者使用的計時器進行檢測防御,但是有可能有誤報。魚鱗沖孔網
4.2 Cache分區
可以對每個程序劃分LLC(Last Level Cache)進行進程隔離,防止其他進程受到攻擊。但是這種方法可能會對計算機系統帶來性能上的影響。
4.3 計時器修改
可以降低計時器的精度,來防止攻擊者進行旁路信息收集。但是問題是,攻擊者有很多其他的手段來構造出計時器,進行攻擊。無法完全防御所有的計時器。
4.4 Cache隔離
可以加一個獨立的cache把PTE都放進去,阻止旁路信息泄漏。但是這樣的問題在于成本太高。
5. 感想
AnC攻擊是一種新型的旁路攻擊,巧妙地利用了Page Table Entry被緩存這一特性,開展了相關的信息泄漏攻擊,攻擊需要的時間很短,攻擊所需的條件較之以往的一些約束條件更為通用。然而該攻擊也存在要求計時準確,內存訪問的控制要求很高等特點,應用上確實適合基于瀏覽器的攻擊。魚鱗沖孔網