人人書

雜誌

保存到桌面 | 簡體人人書 | 手機版
傳記回憶文學理論偵探推理驚悚懸疑詩歌戲曲雜文隨筆小故事書評雜誌
人人書 > 雜誌 > 地址空間布局随機化 (ASLR) 增強研究綜述

地址空間布局随機化 (ASLR) 增強研究綜述

時間:2024-11-06 06:39:36

文/YueCHEN

圖1ASLR示例

圖2目前ASLR的問題

圖3Remix:一種ASLR增強的方向AddressSpaceLayoutRandomization(ASLR)是什麼?一些攻擊,比如returnorientedprogramming(ROP)之類的代碼複用攻擊,會試圖得到被攻擊者的内存布局信息。這樣就可以知道代碼或者數據放在哪裡,來定位并進行攻擊。比如可以找到ROP裡面的gadget。而ASLR讓這些内存區域随機分布,來提高攻擊者成功難度,讓他們隻能通過猜測來進行不斷試錯的攻擊(理想狀況下),圖1為ASLR示例。

ASLR的問題

在出現了某些漏洞,比如内存信息洩露的情況下,攻擊者會得到部分内存信息,比如某些代碼指針。傳統的ASLR隻能随機化整個segment,比如棧、堆、或者代碼區。這時攻擊者可以通過洩露的地址信息來推導别的信息,如另外一個函數的地址等。這樣整個segment的地址都可以推導出來,進而得到更多信息,如圖2所示,大大增加了攻擊利用的成功率。在32位系統中,由于随機的熵值不高,攻擊者也容易通過窮舉法猜出地址。

如何改進?

主要的改進方法有兩種:一是防止内存信息洩露,二是增強ASLR本身。本文主要讨論後者。

1.随機化的粒度可以改進。粒度小了,熵值增加,就很難猜出ROPgadget之類的内存塊在哪裡。ASLP[1]在函數級進行随機化,binarystirring[2]在basicblock級進行随機化,ILR[3]和IPR[4]在指令級。[3]将指令地址進行随機化;而[4]把指令串進行重寫,來替換成同樣長度,并且相同語義的指令串。

2.随機化的方式可以改進。Oxymoron[5]解決了庫函數随機化的重複問題:原先假如每個進程的library都進行fine-grained的ASLR,會導緻memory開銷很大。該文用了X86的segmentation巧妙地解決了這個問題;并且由于其分段特性,JITROP[6]之類的攻擊也很難有效讀取足夠多的memory。Isomeron[7]利用兩份differentlystructuredbutsemanticallyidentical的程序copy,在ret的時候來随機化executionpath,随機決定跳到哪個程序copy,有極大的概率可以讓JIT-ROP攻擊無效。

3.随機化的時間(timing)可以改進。假如程序中存在能洩露内存的漏洞,那這種傳統的、一次性的随機化就白費了。所以需要運行時動态ASLR。[8]解決了fork出來的子進程内存布局和父進程一樣的缺陷。其思路是在每次fork時都進行一次随機化。方法是用Pin進行taint跟蹤,找到ASLR之後要修複的指針并進行修複。為了降低把數據當成指針的falsepositive,一個daemon進程會跑多次來提取出重合的部分。

Remix[9]提出了一種在運行時細粒度随機化的方法。該方法以basicblock為單位,經過一個随機的時間對進程(或kernelmodule)本身進行一次随機化,如圖3所示。由于函數指針很難完全确認(比如被轉換成數據,或者是union類型),該方法隻能打亂函數内部的basicblocks。該方法的另一個好處是保留了代碼塊的局部性(locality),因為被打亂的basicblocks位置都靠得很近。打亂後,需要update指令,以及指向basicblock的指針,來讓程序繼續正确運行。假如需要增加更多的熵值,可以在basicblocks之間插入更多的NOP指令(或者别的garbagedata)。

另一種方法[10]是用編譯器來幫助定位要migrate的内存位置(指針),并且在每次有輸出時進行動态随機化。該方法對于網絡應用比如服務器,由于其是I/O-intensive的應用,可能會導緻随機化間隔極短而性能開銷巨大。

(作者單位為FloridaStateUniversity)

參考文獻:

[1]C.Kil,J.Jun,C.Bookholt,J.Xu,andP.Ning.AddressSpaceLayoutPermutation(ASLP):TowardsFineGrainedRandomizationofCommoditySoftware.InProceedingsofthe22ndAnnualComputerSecurityApplicationsConference,2006.

[2]R.Wartell,V.Mohan,K.W.Hamlen,andZ.Lin.BinaryStirring:Self-randomizingInstructionAddressesofLegacyx86BinaryCode.InProceedingsofthe19thACMConferenceonComputerandCommunicationsSecurity,2012.

[3]J.Hiser,A.Nguyen-Tuong,M.Co,M.Hall,andJ.W.Davidson.ILR:Where'dMyGadgetsGo?InProceedingsofthe33rdIEEESymposiumonSecurityandPrivacy,2012.

[4]V.Pappas,M.Polychronakis,andA.D.Keromytis.SmashingtheGadgets:HinderingReturn-OrientedProgrammingUsingIn-placeCodeRandomization.InProceedingsofthe33rdIEEESymposiumonSecurityandPrivacy,2012.

[5]M.BackesandS.Nurnberger.Oxymoron:Makingfine-grainedmemoryrandomizationpracticalbyallowingcodesharing.InProceedingsofthe23rdUSENIXSecuritySymposium,2014.

[6]K.Z.Snow,F.Monrose,L.Davi,A.Dmitrienko,C.Liebchen,andA.-R.Sadeghi.Just-in-timeCodeReuse:OntheEffectivenessofFine-grainedAddressSpaceLayoutRandomization.InProceedingsofthe34thIEEESymposiumonSecurityandPrivacy,2013.

[7]L.Davi,C.Liebchen,A.-R.Sadeghi,K.Z.Snow,andF.Monrose.Isomeron:Coderandomizationresilientto(just-intime)return-orientedprogramming.InProceedingsofthe22ndNetworkandDistributedSystemsSecuritySymposium,2015.

[8]K.Lu,S.Nurnberger,M.BackesandW.Lee.HowtoMakeASLRWintheCloneWars:RuntimeRe-Randomization.InProceedingsofthe23rdNetworkandDistributedSystemsSecuritySymposium,2016.

[9]Y.Chen,Z.Wang,D.WhalleyandL.Lu.Remix:On-demandliverandomization.InProceedingsoftheSixthACMConferenceonDataandApplicationSecurityandPrivacy,2016.

[10]D.Bigelow,T.Hobson,R.Rudd,W.Streilein,andH.Okhravi.Timelyrerandomizationformitigatingmemorydisclosures.InACMSIGSACConferenceonComputerandCommunicationsSecurity,2015.
   

熱門書籍

熱門文章