當前位置:
首頁 > 新聞 > RAMpage攻擊:再次利用安卓DRAM RowHammer漏洞

RAMpage攻擊:再次利用安卓DRAM RowHammer漏洞

RAMpage即CVE-2018-9442可以使沒有許可權的安卓APP利用之前泄漏的Drameer攻擊獲取root許可權。Drameer攻擊是針對安卓設備DRAM Rowhammer硬體漏洞的攻擊變種。

DRAM RowHammer漏洞

自2012年起,Rowhammer漏洞是新一代DRAM(dynamic random access memory,動態隨機存取存儲器)晶元的硬體可靠性問題,當快速、重複訪問一行內存時會造成鄰接行的位(比特)翻轉,比如比特值從1變成0或從0變成1。

2015年,Google Project Zero的安全研究人員成功證明了利用該硬體漏洞在有漏洞的Windows和Linux主機上進行許可權提升的方法。谷歌的研究人員還介紹了一種雙側Rowhammer攻擊,這種攻擊可以增加兩側位翻轉到概率。

觸發Rowhammer漏洞非常簡單,但成功地利用該漏洞有點難,因為內存中大多數的位是與攻擊者無關的,而這些無關位的翻轉可能會導致內存破壞。在DRAM中隨機的位置上讀取或寫入數據是不足以導致目標內存頁位翻轉的。

想要成功地利用Rowhammer,攻擊者必須能夠誘使系統載入目標內存頁到DRAM中與攻擊者所有的物理內存行鄰接的行中。

目前已有的Rowhammer攻擊有GLitch、Throwhammer、Nethammer等。

·Glitch:該技術使用嵌入的GPU來實施針對安卓設備的Rowhammer攻擊。

·Throwhammer:利用已知的DRAM漏洞利用使用遠程直接內存訪問(remote direct memory access,RDMA)信道通過網卡發起攻擊,這是第一個基於網路的遠程Rowhammer攻擊方式。

·Nethammer:也是一個基於網路的遠程Rowhammer攻擊方法。在處理網路請求時通過未緩存的內存或flush指令來攻擊系統。

Drammer攻擊

Drammer攻擊是2年前發現的第一個安卓設備上針對DRAM晶元的現實Rowhammer攻擊的例子。任意的惡意APP不需要任何許可權和軟體漏洞就可以利用Drammer攻擊。

Drammer攻擊依賴DMA(direct memory access)緩存,這是由安卓主內存管理器ION提供的。因為DMA允許APP在不經過任何CPU緩存的情況下訪問內存,因此可以高效地、重複地訪問內存中的特定行。

ION在許多的內核內堆上組織內存池,其中kmalloc heap是用來分配物理上連續的內存的,這讓攻擊者可以輕易的知道虛擬內存與真實的物理內存是如何映射的。

ION內存管理器的直接訪問和連續內存分配這兩個特徵是Drammer攻擊成功的關鍵。

Google對基於Rowhammer攻擊的緩解措施

2016年,在Drammer攻擊的細節公開後,Google發布了針對安卓設備的更新,在更新中關閉了負責連續內存分配的ION組件(kmalloc heap)來緩解Rowhammer漏洞帶來的風險。

在關閉了連續堆後,運行在安卓設備上的APP和應用進程依靠ION內存管理器的另一個內核內堆——system heap,這是用來在DRAM中隨機的物理位置上進行內存分配。

除了非連續的內存分配外,系統堆還會通過分配到lowmem和highmem zone的方式將內核內存和用戶內存分割開,這也是為了保證安全的考慮。

RAMpage攻擊和Rowhammer補丁繞過

Google研究人員提出的緩解技術可以有效的防止攻擊者執行雙邊Rowhammer攻擊。

但有一個安全團隊稱發現了4種rowhammer攻擊的變種可以讓安裝在目標設備上的惡意應用獲取root許可權,並繞過當前緩解措施從其他的APP中竊取隱私信息。

在論文中,研究人員稱第一個RAMpage variant (r0)變種是可靠的Drammer實施,表明關閉持續內存分配並不能預防基於Rowhammer的許可權提升攻擊。

按照下面的三個步驟就可以用RAMpage r0變種完成類Drammer利用:

1. 耗盡系統堆。研究人員發現如果應用故意耗盡了ION的內部池,另一個內存分配演算法buddy allocator就會負責分配進程。因為buddy allocator的主要目的就是減小內存分片,最終會提供連續的頁分配。

為了增加這種利用的可能性,攻擊者還繞過了system heap使用的zone隔離機制。為了強制載入內存頁到kernel所在的lowmem分配,攻擊者持續分配內存直至沒有剩餘的highmem。一旦這樣,kernel就會服務於隨後來自lowmem的請求,允許攻擊者找出物理內存中的位翻轉。

2. 減小緩存池。通過使用Flip Feng Shui利用向量,攻擊者可以誘使kernel在有漏洞的頁面存儲頁表。這一步是為了將system heap池的物理內存釋放會kernel,這間接的會使ION子系統釋放預先分配的緩存的內存,包括有漏洞的頁中的行。

3.Root手機。實施以上兩步驟後,誘使操作系統載入與攻擊者所有頁非常鄰近的目標內存頁,然後攻擊者實施基於DMA的rowhammer攻擊的步驟找出可利用的chunk,開發root利用。

研究人員在運行最新安卓版本(7.1.1)的LG G4手機上進行了POC驗證。

如果系統受影響,POC利用可以完全控制設備並訪問設備上的所有文件,包括系統上保存的密碼和敏感數據。

其他三個變種允許攻擊者繞過保護系統內存的特定部分的防護措施,更加偏理論,實踐價值不高。這三個變種分別是:

·ION-to-ION (Varint r1)

·CMA-to-CMA attack (Varint r2)

·CMA-to-system attack (Varint r3)

GuardION:緩解措施

在論文中,研究人員討論了目前的緩解技術在防禦RAMpage變種上的有效性,並引入了新的解決方案——GuardION。

GuardION是基於軟體的防禦措施,可以用guard row隔離DMA緩存達到防禦rowhammer攻擊的方式。

GuardION代碼需要以補丁的形式安裝在Android操作系統中,補丁會以注入空row(guard)的方式來隔離敏感緩存,使敏感內存區物理上與惡意row隔開。

GuardION提供的隔離技術使攻擊者不能使用未緩存的DMA分配來翻轉kernel或用戶區APP使用的內存中的位。GuardION可以保護所有已知的Rowhammer攻擊向量,目前沒有相關技術可以繞過。但安裝GuardION會對設備的性能產生一些影響。

影響

所有2012年以後的安卓設備都受到rampage攻擊的影響。而且無法檢測是否利用了rampage攻擊,因為利用不會在傳統的日誌文件中留下任何蹤跡。

研究人員稱,如果只從可信源下載APP,應該就不用擔心會受到RAMpage攻擊了。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

TAG:嘶吼RoarTalk |