王瑛,張藍圖
中船重工(武漢)凌久高科有限公司,武漢 430074
用延遲的異常路徑檢測防御非控制流數據攻擊
王瑛,張藍圖
中船重工(武漢)凌久高科有限公司,武漢 430074
攻擊是攻擊者利用程序中的內存漏洞(如緩沖區溢出漏洞、格式化字符串漏洞、堆溢出漏洞或整數溢出等)篡改程序地址空間中關鍵數據,改變程序正常的執行流程,以達到其目的,如提升用戶權限或者發動拒絕服務攻擊等。多數攻擊傾向于修改控制流相關數據(control data),如返回地址值、調用函數的EBP、函數指針和GOT表項等,以此改變進程的控制流使其指向攻擊者指定惡意代碼處,從而使系統執行攻擊者所提供的惡意代碼,造成嚴重的安全危機。然而攻擊者也可以通過非控制流數據(Non-control-data)攻擊[1],篡改其他關鍵性的數據,在不篡改控制流數據(如函數返回地址值,函數指針等)的情況下改變進程的控制流,以達到攻擊目的。
針對篡改控制流相關數據的攻擊已有多種防御方法,可利用傳統的針對內存漏洞的防御方法,如StackGuard[2]、Propolice[3]及RAD[4]等,以增加攻擊的難度。然而隨著新型漏洞的層出不窮,單一的漏洞防御不能做到防御全部類型的漏洞。而針對控制流相關數據的防御方法和控制流一致性檢測方法卻不能抵御非控制流數據的攻擊。作為主要的非控制流數據的攻擊類型,決策性數據攻擊僅僅是通過篡改某些局部變量值,從而改變關鍵性的條件跳轉分支語句的執行,以此改變進程的控制流。比如攻擊者可以通過修改SSH中的某些關鍵局部變量值,如判斷用戶是否擁有root權限函數的局部變量authenticated的值,使其為非零,就能獲得root權限[1]。此類攻擊所執行的是進程中正常的代碼而非惡意代碼,并且所有的程序控制流轉移都是合法有效,因此傳統的防御方法并不適用于防御此類攻擊。
由于程序正常執行時相鄰的條件跳轉語句之間存在著相關性,決策性數據攻擊勢必會改變這種相關性,造成程序執行的路徑發生異常。因此為防御這類非控制流數據的攻擊,研究者提出了基于程序路徑一致性的檢測方法。這類防御方法以一系列條件轉移時標志位的值來描述程序行為,并以此作為檢測對象,實時檢測程序是否發生異常。然而這類方法由于檢測對象覆蓋不夠高,比如只檢測連續執行的6到8個條件跳轉的標志位值[5],因此容易產生二義性,造成漏檢。另一缺陷則是由于檢測頻率過高,容易造成較大的性能開銷。
本文在分析現有防御方法優缺點的基礎上,提出一種延遲檢測異常執行路徑(Anomalous Path Lazily Detection,APLD)的方法,用以防御決策性數據的攻擊。考慮到攻擊者需要利用系統調用實現其最終功能,因此將檢測時刻盡可能延遲到系統調用前,而相對應的檢測對象則包含了相鄰兩個系統調用之間所有的條件跳轉指令。為有效描述程序的執行行為特征,用層連的哈希運算提取出到達系統調用所經歷的路徑的特征值,以此作為檢測對象。APLD方法盡可能地包含足夠多的條件跳轉,因此能最大限度減少二義性問題,降低漏檢率。同時延遲的檢測降低了檢測頻率,有利于降低檢測方法的性能開銷。
控制流數據攻擊和非控制流數據攻擊雖然最終篡改的對象不同,但是兩類攻擊均需要利用程序中的漏洞(如緩沖區溢出漏洞、格式化字符串漏洞等),對程序中的假定不變量(如地址)進行攻擊,修改程序中可寫內存段的值。為防止攻擊發生,可采用傳統的漏洞防御方法及地址隨機化方法。
針對特定漏洞類型的防御方法可在一定程度上加大攻擊的成本,提高攻擊的難度。然而單一的漏洞防御方法并不能完全防御控制流的非法轉移,攻擊者仍然可以利用其他漏洞(堆緩沖區溢出漏洞、虛指針等)篡改目標數據。地址隨機化方法包含了不同粒度空間的隨機化,如代碼段隨機化[6-7]、函數塊隨機化[8]以及字節級隨機化方法[9-10]。然而在具體實現時,受到隨機量大小的限制,地址空間分布隨機化的方法容易被暴力破解[11]。同時由于各種操作系統和編譯器實現的方法不一樣,地址隨機化在進程中應用范圍不夠,部分內存段中的數據未被隨機化,易被攻擊者可以利用此類信息繞過防御方法[12]。
當攻擊最終發生時程序將會出現異常的行為,程序的一致性被破壞,因此可以通過對程序完整性進行檢測以防御非控制流數據的攻擊。程序的一致性檢測是指分析并實時監測程序的控制流、數據流及執行路徑,對程序中的關鍵對象(如代碼、數據等)進行保護,防止這些對象被非法篡改。根據檢測對象的不同,可以分為控制流一致性檢測、數據流一致性檢測和執行路徑一致性檢測。控制流一致性檢測通過控制流圖保護關鍵的控制流對象或者代碼不被篡改,然而非控制流數據的攻擊并不會使得程序中的控制流出現錯誤的轉移,因此這種檢測方法不能有效防御非控制流數據攻擊。
數據流一致性檢測通過數據流圖保護關鍵的數據流對象不被篡改,可以有效防御各種數據被篡改,因此可以防御非控制流數據的攻擊。典型的工具有:Data Flow Integrity[13]通過數據流分析檢測違反數據流圖的惡意寫內存對象操作;Typechecking[14]檢測靜態敏感的數據對象中是否含有惡意的內容;WIT[15]對程序間的指針進行分析,同時結合了染色機制計算出某個內存對應的寫指令,從而對超出內存對象的寫指令進行嚴格限制。然而數據流一致性檢測方法屬于一種白盒技術,部分檢測方法需要靜態分析源代碼,從而獲得完整的數據流圖。部分采用了染色分析技術的檢測方法嚴格限制了輸入數據的使用,帶來了誤檢率過高的問題。
盡管在非控制流數據攻擊中,控制流的轉移都是有效的合法的,但是相鄰條件跳轉語句之間的相關性被破壞,程序原有的執行路徑卻發生了變化。因此可以利用執行路徑一致性,實時檢測當前程序的執行路徑是否異常,以此來檢測攻擊。Shi Y et al[5]采用滑動窗口n檢測程序執行時的相鄰n個條件跳轉標志位的值是否正常,其中n取6到8。這種檢測方法能有效檢測非控制路數據攻擊所造成的異常的程序執行路徑,但由于受限于n的取值,不能完整覆蓋正常路徑,容易出現二義性問題,造成漏檢。Santos J C M et al[16]則是檢測相鄰的間接跳轉語句之間所有的條件跳轉標志位,為防止二義性,將緊鄰間接跳轉指令的條件跳轉指令的地址加入到檢測對象中。然而這種方法與Shi Y et al方法一樣,需要在每條間接跳轉指令處檢測程序的執行路徑,檢測頻率仍然較高,性能開銷較大。
本文假設攻擊者具備修改進程中可寫內存的能力,可以通過各種漏洞(如緩沖區溢出、格式化字符串等)實施決策性數據攻擊。
3.1 執行路徑的表征
由于需要在系統調用指令執行前驗證程序已經執行的路徑是否有效,并且考慮到只有當條件滿足時,條件轉移指令才會執行。因此可以在程序執行時,提取相鄰的系統調用指令syscalli-1和syscalli之間的所有被執行的條件跳轉指令,將其地址序列用于表征程序的執行路徑。假設數組EP中存儲正確的程序執行路徑信息,則此時的EP[i]由syscalli-1和syscalli之間的條件跳轉地址序列組成。
由于工作負載不同,程序的執行路徑可能不同,由此會產生多條到達同一系統調用的不同的執行路徑。而系統調用指令為終點的地址序列由于包含的地址個數不一,會造成極大的存儲開銷,由此帶來較高的性能開銷,因此有必要擬合程序的執行路徑信息。一種擬合程序的執行路徑信息的方法是將相鄰系統調用之間所有的條件跳轉指令的地址進行異或運算,將運算得到的32比特位的結果作為表征執行路徑的特征值。然而這種單一的異或運算有可能造成執行路徑上的某個條件跳轉指令地址丟失,如存在下列條件跳轉序列:…cjmp1||cjmp 2||cjmp 3||cjmp 4|| cjmp 1…,cjmp1的地址值經過異或后會被消除,其信息將被隱藏。條件跳轉指令信息被隱藏將會造成所獲取的路徑信息不完整,從而影響防御效果。
為獲取完整的程序執行路徑信息,本文采用一種有效的方法來擬合程序執行路徑上的所有條件跳轉信息。本文采用了一種簡單的哈希運算,即將32位的地址值等分為n份后(其中n=2i,且0<n≤32),進行移位異或運算,如圖1所示。在圖1所述的哈希運算方法中,n均取4,這里有四類哈希運算分別是h1、h2、h3和h4,均是通過對地址移位后異或運算,將地址擬合為一個32位的值。其中哈希運算h1,將32位地址空間等分為4份,并以此作為移位的粒度,將等分的地址值移位后異或運算。h2也是采用與h1相同粒度的劃分,同樣將32位地址空間劃分為4份,與h1不同的是,其移位的方向相反。h3則是僅對其前24比特位地址值(即前3份)進行移位后異或運算,而低8比特位的值則直接異或,無需移位。h4是對低16位的值無需移位,直接異或運算,但其高16位的值被劃分為2份,進行移位后異或運算。

圖1 用于擬合路徑信息的哈希運算
這種移位后異或運算的實質是將相同的地址值在異或運算前混淆,避免同一地址值在異或運算后被隱藏。在h1運算中,混淆區間(Confusion Interval,CI)為整個32位地址空間,移位粒度被劃分為4份后,可混淆的次數N為3次。這里定義混淆區間CI是指參與移位異或運算的地址的位數,混淆次數N是指可連續采用該哈希運算(如h1)的同一地址值的個數,即連續的條件跳轉cjmp 1的地址值a1在經歷三次哈希運算h1后,所獲得的值h1(h1(h1(a1,a1),a1),a1)并沒有隱藏其中任意一個a1的地址值信息。而在第4次采用h1運算中,若此時地址值與首地址相同,則有可能會造成異或運算后,該地址與頭地址都將被隱藏。綜上分析,單個哈希運算的可混淆次數N與當前的哈希運算的混淆區間CI有關,即N=CI-1。
假設前三次哈希運算采用h1,若在第4次運算中采用h2,由于h2和h1的混淆區間范圍相同,僅移位方向不同,會造成首地址提前被隱藏,因此不適宜采用h2。若采用h3,盡管混淆區間CI縮小至前3份(即地址值的前24比特位),但由于低8比特位不參與移位,并將直接進行異或運算,此時的a1值至少將保留低8位的值,首地址和末地址a1的值將不會被徹底隱藏。隨著混淆區間CI的逐級遞減,h3和h4的可混淆次數也在逐級變少,但可以采用層連的多個哈希運算,在路徑信息擬合過程中連續采用h1、h3和h4等哈希運算,如計算路徑…cjmp1||cjmp 2||cjmp 3||cjmp 4|| cjmp 1||cjmp 2||cjmp 3…的層連哈希運算為h4(h3(h3(h1(h1(h1(a1,a2),a3),a4),a1),a2),a3)。層連的哈希運算將可以有效提高可混淆次數,有效地減少地址被隱藏的概率,降低漏檢率,其有效性將在第4章中詳細分析。
3.2 延遲檢測異常執行路徑方法
延遲檢測異常執行路徑方法是在程序運行時,實時搜集相鄰系統調用之間的所有條件跳轉指令信息,通過前述的層連哈希運算,擬合程序的執行路徑,并在系統調用指令執行前,驗證該路徑信息是否有效。相應的APLD檢測方法的偽代碼如下所示:

上述偽代碼中K值的格式如圖2所示,其中EP表示程序的執行路徑,syscall表示當前的系統調用地址值。首先在每條條件跳轉指令執行前搜集當前跳轉指令地址值,并利用前述的層連哈希運算方法將其擬合成表達程序執行路徑的特征值。然后在系統調用指令j執行前,判斷該條程序執行路徑是否有效,如果當前執行路徑無效,則退出;若有效,則將K中值清零,為處理下一條執行路徑做準備。

圖2 K值的格式
為了創建正常的程序執行路徑,以用于實時驗證程序中的執行路徑是否異常,這里采用類似于入侵檢測中基于模型的訓練方法獲得完備的<EP||syscall>以填充數據EP[],即在安全環境下,以不同的工作負載連續運行目標程序直至所搜集的正常的執行路徑數量滿足一定的覆蓋率,從而獲得足夠多的實際執行路徑信息以填充EP。本文利用這種訓練方法在SPEC2000基準程序中運行ref工作負載,采用了不同參數下的層連哈希運算,所得到的程序執行路徑的數量如表1所示。
在表1中,n為32位地址值被劃分的份數。從表中可以看出,隨著n的增加,同一程序中的EP數量也明顯增加,如crafty、gap等。分析其原因,是因為隨著n的增加,可被層連的哈希運算的個數也在增加,可混淆的次數也在增加,地址被隱藏的概率就會相應減少。因而針對不同的路徑,采用不同的層連哈希運算,可以計算得到不同的特征值,而非相同的特征值。隨著n的增加,層連的哈希運算更能真實反映不同的程序執行路徑。

表1 基準程序的EP數量
同時在表1中,部分程序中EP元素的數量明顯高于其他程序,如gcc、perlbmk和parser等。分析其原因,EP數量相對較少的程序中所要實現的功能較為簡單,如bzip2和gzip均是實現壓縮算法。而EP數量較多的程序則其功能較為復雜,如gcc是編譯器。因此當采用相同的層連哈希運算時,EP的數量與具體的程序相關。
4.1 地址被隱藏的概率


其中n代表32位地址值被等分的個數,n=2i,且0<n≤32。r代表跳轉指令的復用距離。復用距離原本是用于度量程序的局部性[17],是指程序運行中連續兩次訪問同一數據元素之間所訪問的不同數據元素的數目。而本文借用其概念,將r用于表示連續兩次執行同一條件跳轉指令之間所執行的其他條件跳轉指令的個數。如在執行路徑…cjmp1||cjmp 2||cjmp 3||cjmp 4||cjmp 1…中,條件跳轉指令cjmp1的復用距離r為3。若此時假設n=4,可采用的層連的哈希運算個數為3個,如圖1中所示的h1、h3和h4,混淆區間CI范圍分別從4減到2,各個哈希運算可混淆的次數N分別為3、2和1,因此Ntotal為6次。采用了層連的哈希運算計算上述執行路徑時,cjmp1的地址被隱藏的概率為P=1/(1+6)3+1≈4.16E-4。
若執行路徑中某一條件跳轉僅被執行一次,則其復用距離r為∞,則此時P為∞,即該條件跳轉地址不會被隱藏。若在極端情況下,即在一系列連續的相同的條件跳轉指令執行時,首條件跳轉指令的復用距離r為0,在經過如圖1中所述的層連哈希運算后(即采用h1、h3和h4),第7個條件跳轉指令的地址值將與第一個地址值被隱藏,因此首條件跳轉指令地址被隱藏的概率P為1/7。然而在實際情況下,相同的條件跳轉指令連續運行意味著滿足該條件跳轉的條件一致,使得指令重復執行。由于異常路徑檢測方法是檢測相鄰的不同的條件跳轉指令之間的相關性,若相鄰的跳轉指令相同(如在含有一個條件跳轉指令的同一循環體內),則決策性數據的攻擊并不會造成相鄰指令之間的相關性受到影響。因此,即使采用層連哈希方法計算一系列連續的相同條件跳轉指令的路徑時,出現部分指令地址被隱藏情況,也不會影響最終的檢測。
表2為不同參數下通過式(1)所求得的值,其代表程序執行的路徑中重復出現的條件跳轉指令信息被隱藏的概率。在表2中,n為32位地址值被劃分的份數,r為指令的復用距離。如n=8,r=1表示32位地址被劃分為8份,且復用距離為1時,指令信息被隱藏的概率為P=0.001 189。從表中可以看出,隨著n的增加,條件跳轉指令信息被隱藏的概率也隨之減少。

表2 不同參數下指令信息被隱藏的概率
4.2 漏檢率
由于已經通過訓練方法確定程序的正常行為,因此在實現時采用布隆過濾器(Bloom Filter)存儲數組EP中的各項元素以降低性能開銷和存儲開銷。
在APLD方法中,檢測就是有效識別當前的K值是否存在于EP數組中。在假設EP數組中的元素由全部的執行路徑所組成,則APLD的漏檢率是采用布隆過濾器Bloom filter存儲EP數組中元素時所帶來不可避免的后果。如本不屬于EP中的元素,在經過Bloom filter中hash查找時卻在相關位判定為1,也就意味著APLD方法在實現時對于不屬于EP中的異常執行路徑判定為有效。因此Bloom filter中的誤檢率FPR等同于APLD方法中的漏檢率FNR。FNR= (1-(1-1/m)kt)k≈(1-e-kt/m)k,其中k為相互獨立hash函數個數,t為組成EP數組中所有元素個數,m為位數組的大小。根據表1中的數據,可以得到APLD方法的漏檢率如表3所示。
在表3中,n為32位地址值被劃分的份數,其EP數組中元素個數對應表1。分析APLD的漏檢率,隨著EP數量的增多,其漏檢率也隨之增加。部分程序的EP數量較多,如crafty、perlbmk、parser和gcc等,因此其漏檢率較高。而bzip2、gzip和vortex的EP數量較少,因此漏檢率較低。

表3 APLD方法的漏檢率
4.3 性能評估
由于部分條件跳轉屬于間接跳轉,只有在程序運行時才能動態地獲取這部分條件跳轉的指令信息。因此為評估APLD方法的性能,本文采用插樁技術,在二進制代碼動態翻譯工具Pin[18]平臺上實現該方法。實驗環境建立在Dell微機(3 GHz core2 CPU、2 GB內存)上的,運行Red Hat 7.0企業版的操作系統,編譯器選用GCC 4.2.1,并且采用Pin 2.12-53271。
由于基準程序gzip和bzip2中EP數量較少,因此在實現時不采用布隆過濾器存儲EP,其他基準程序采用布隆所述,實驗所獲得的APLD性能開銷如圖3所示。

圖3 APLD性能開銷示意圖
在圖3中,在Pin上直接運行基準程序時的性能開銷范圍為mcf的1.1倍到gcc的3.3倍。當APLD方法采用的劃分份數n為8時,可被用于層連的哈希運算個數為7,而此時的性能開銷范圍為gzip的2.03倍到gcc的5.76倍。采用的劃分份數n為16時,可被用于層連的哈希運算個數為15,此時的性能開銷范圍為gzip的2.11倍到gcc的5.97倍。采用的劃分份數n為32時,可被用于層連的哈希運算個數為31,此時的性能開銷范圍為gzip的2.29倍到gcc的6.01倍。
從APLD的性能開銷可知,隨著劃分份數n的增加,APLD的性能開銷并沒有發生明顯變化。分析其原因,是因為份數n的增加,只是帶來了更多的細粒度的哈希運算。而細粒度的哈希運算均為移位后異或運算,只是可混淆的區間發生變化,并沒有增加指令的數量,對性能開銷并沒有明顯的影響。因此在不同的n下APLD的性能開銷并沒有顯著的變化。
作為一種主要的非控制流數據攻擊的類型,決策性數據攻擊能繞開以控制流相關數據作為保護對象的防御方法。現有的針對這類攻擊的防御方法在前提假設上有過多限制,如需要源碼,同時在有效性及性能上存在缺陷。由于決策性數據攻擊破壞了相鄰條件跳轉語句之間的相關性,改變了程序原有的執行路徑,因此本文提出了一種延遲檢測異常執行路徑的方法,用以防御決策性數據的攻擊。該檢測方法以相鄰兩個系統調用之間的所有條件跳轉作為執行路徑,同時本文提出了一種層連的哈希運算以獲取正確的執行路徑信息,并在系統調用執行前檢測執行路徑信息是否有效,以此來檢測異常的執行路徑,防御決策性數據的攻擊。有效性分析和性能評估表明,層連的哈希運算可在極高的概率下,獲得正確的且易于保存的程序執行路徑信息。并且在此基礎上實現的延遲檢測異常路徑方法能有效防御決策性數據攻擊,且其漏檢率低,性能開銷適中。
[1]Chen S,Xu J,Sezer E C,et al.Non-control-data attacks are realistic threats[C]//Proceedings of the 14th USENIX Security Symposium,Baltimore,MD,2005:177-192.
[2]Cowan C,Pu C,Maier D,et al.StackGuard:automatic adaptive detection and prevention of buffer-overflow attacks[C]// Proceedings of the 7th conference on USENIX Security Symposium,San Antonio,1998:63-78.
[3]Etoh H.ProPolice:GCC extension for protecting applications fromstack-smashingattacks[EB/OL].[2013-06-15].http://www. trl.ibm.com/projects/security/ssp/.
[4]Chiueh Tzi-cker,Hsu Fu-Hau.RAD:a compile-time solution to buffer overflow attacks[C]//Proceedings of the 21st International Conference on Distributed Computing Systems,Phoenix,2001:409-420.
[5]Shi Y,Lee G.Augmenting branch predictor to secure program execution[C]//Proceedings of 37th Annual IEEE/IFIP International Conference on Dependable Systems and Networks,2007:10-19.
[6]The PaX Team.PaX Address Space Layout Randomization(ASLR)[EB/OL].[2013-06-15].http://pax.grsecurity.net/docs/ aslr.txt.
[7]Xu J,Kalbarczyk Z,Iyer R.Transparent runtime randomization for security[C]//Proceedings of 22nd International Symposium on Reliable Distributed Systems,Florence,2003:260-269.
[8]Bhatkar S,Sekar R,DuVarney D C.Efficient techniques for comprehensive protection from memory error exploits[C]//Proceedings of the 14th USENIX Security Symposium,Baltimore,MD,2005:105-120.
[9]Shioji E,Kawakoya Y,Iwamura M,et al.Code shredding:byte-granular randomization of program layout for detecting code-reuse attacks[C]//Proceedings of the 28th Annual Computer Security Applications Conference,2012:309-318.
[10]Wartell R,Mohan V,Hamlen K W,et al.Binary stirring:selfrandomizing instruction addresses of legacy x86 binary code[C]//Proceedings of the ACM Conference on Computer and Communications Security.New York:ACM Press,2012:157-168.
[11]Shacham H,Page M,Pfaff B,et al.On the effectiveness of address-space randomization[C]//Proceedings of ACM Conference on Computer and Communications Security(CCS),2004:298-307.
[12]Roglia G,Martignoni L,Paleari R,et al.Surgically returning to randomized lib(c)[C]//Proceedings of Annual Computer Security Applications Conference,2009:60-69.
[13]Castro M,Costa M,Harris T.Securing software by enforcing data-flow integrity[C]//Proceedings of the 7th Symposium on Operating Systems Design and Implementation(OSDI’06),2006:147-160.
[14]Chaudihuri A,Naldurg P,Rajamani S.A type system for dataflow integrity on windows vista[J].ACM SIGPLAN Notices,2008,43(12):9-20.
[15]Akritidis P,Cadar C,Raiciu C,et al.Preventing memory error exploits with wit[C]//Proceedings of IEEE Symposium on Security and Privacy,2008:263-277.
[16]Santos J C M,Fei Y.Leveraging apeculative architectures for run-time program validation[C]//Proceedings of IEEE International Conference on Computer Design,2008:498-505.
[17]Beyls K,D’Hollander E.Reuse distance as a metric for cache behavior[C]//Proceedings of the Conference on Parallel and Distributed Computing and Systems,2001:350-360.
[18]Chi-Keung Luk,Cohn R,Muth R,et al.Pin:building customized program analysis tools with dynamic instrumentation[C]//Proceedings of Programming Language Design and Implementation,Chicago,IL,2005:190-200.
WANG Ying,ZHANG Lantu
Lingjiu Hi-Tech Co.,LTD,China Shipbuilding Industry Corporation(Wuhan),Wuhan 430074,China
As a major type of non-control data attacks,decision-making data attacks can easily bypass any prevention method targeting control data attacks.A novel method named as Anomalous Path Lazily Detection(APLD)is proposed due to the weakness of the existing prevention methods targeting decision-making data attacks.To effectively prevent the same conditional branch information belonging to the same path from being hidden,a cascading hash is introduced to compute correct program execution path information.Since the execution path information is only validated before executing the system call instruction, the performance overhead is reduced benefited from the reduction of frequency of validation.Theoretical analysis and experimental results show that APLD can effectively defend decision-making data attacks and has achieved significant safety with a modest performance penalty.
decision-making data attacks;execution path integrity;cascading hash;Anomalous Path Lazily Detection(APLD); false negative rate
作為一種主要的非控制流數據攻擊的類型,決策性數據攻擊能繞開以控制流相關數據作為保護對象的防御方法。在分析現有的防御決策性數據攻擊方法的優缺點基礎上,提出了一種延遲的異常路徑檢測方法。為有效避免相同的條件跳轉信息被隱藏,引入了層連的哈希運算以獲取正確的程序執行路徑信息。在系統調用執行前檢測該路徑信息的有效性,能有效降低檢測頻率,從而降低性能開銷。理論分析和實驗結果表明,該防御方法能有效防御決策性數據攻擊,且其漏檢率低,性能開銷適中。
決策性數據攻擊;執行路徑一致性;層連的哈希運算;異常路徑延遲檢測;漏檢率
A
TP393.08
10.3778/j.issn.1002-8331.1309-0132
WANG Ying,ZHANG Lantu.Non-control data attacks prevention through Anomalous Path Lazily Detection.Computer Engineering and Applications,2013,49(24):100-104.
王瑛(1960—),女,工程師,主要研究領域:信息安全,入侵檢測;張藍圖,男,工程師,主要研究領域:信息安全,漏洞檢測與防御,網絡可靠性。E-mail:lantuzhang@163.com
2013-09-10
2013-10-23
1002-8331(2013)24-0100-05
◎數據庫、數據挖掘、機器學習◎