乐读窝

杂志

保存到桌面 | 繁体 | 手机版
传记回忆文学理论侦探推理惊悚悬疑诗歌戏曲杂文随笔小故事书评杂志
乐读窝 > 杂志 > 地址空间布局随机化 (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.
   

热门书籍

热门文章