• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用延遲的異常路徑檢測防御非控制流數(shù)據(jù)攻擊

      2013-07-20 02:34:02王瑛張藍圖
      計算機工程與應(yīng)用 2013年24期
      關(guān)鍵詞:控制流哈希指令

      王瑛,張藍圖

      中船重工(武漢)凌久高科有限公司,武漢 430074

      用延遲的異常路徑檢測防御非控制流數(shù)據(jù)攻擊

      王瑛,張藍圖

      中船重工(武漢)凌久高科有限公司,武漢 430074

      1 引言

      攻擊是攻擊者利用程序中的內(nèi)存漏洞(如緩沖區(qū)溢出漏洞、格式化字符串漏洞、堆溢出漏洞或整數(shù)溢出等)篡改程序地址空間中關(guān)鍵數(shù)據(jù),改變程序正常的執(zhí)行流程,以達到其目的,如提升用戶權(quán)限或者發(fā)動拒絕服務(wù)攻擊等。多數(shù)攻擊傾向于修改控制流相關(guān)數(shù)據(jù)(control data),如返回地址值、調(diào)用函數(shù)的EBP、函數(shù)指針和GOT表項等,以此改變進程的控制流使其指向攻擊者指定惡意代碼處,從而使系統(tǒng)執(zhí)行攻擊者所提供的惡意代碼,造成嚴(yán)重的安全危機。然而攻擊者也可以通過非控制流數(shù)據(jù)(Non-control-data)攻擊[1],篡改其他關(guān)鍵性的數(shù)據(jù),在不篡改控制流數(shù)據(jù)(如函數(shù)返回地址值,函數(shù)指針等)的情況下改變進程的控制流,以達到攻擊目的。

      針對篡改控制流相關(guān)數(shù)據(jù)的攻擊已有多種防御方法,可利用傳統(tǒng)的針對內(nèi)存漏洞的防御方法,如StackGuard[2]、Propolice[3]及RAD[4]等,以增加攻擊的難度。然而隨著新型漏洞的層出不窮,單一的漏洞防御不能做到防御全部類型的漏洞。而針對控制流相關(guān)數(shù)據(jù)的防御方法和控制流一致性檢測方法卻不能抵御非控制流數(shù)據(jù)的攻擊。作為主要的非控制流數(shù)據(jù)的攻擊類型,決策性數(shù)據(jù)攻擊僅僅是通過篡改某些局部變量值,從而改變關(guān)鍵性的條件跳轉(zhuǎn)分支語句的執(zhí)行,以此改變進程的控制流。比如攻擊者可以通過修改SSH中的某些關(guān)鍵局部變量值,如判斷用戶是否擁有root權(quán)限函數(shù)的局部變量authenticated的值,使其為非零,就能獲得root權(quán)限[1]。此類攻擊所執(zhí)行的是進程中正常的代碼而非惡意代碼,并且所有的程序控制流轉(zhuǎn)移都是合法有效,因此傳統(tǒng)的防御方法并不適用于防御此類攻擊。

      由于程序正常執(zhí)行時相鄰的條件跳轉(zhuǎn)語句之間存在著相關(guān)性,決策性數(shù)據(jù)攻擊勢必會改變這種相關(guān)性,造成程序執(zhí)行的路徑發(fā)生異常。因此為防御這類非控制流數(shù)據(jù)的攻擊,研究者提出了基于程序路徑一致性的檢測方法。這類防御方法以一系列條件轉(zhuǎn)移時標(biāo)志位的值來描述程序行為,并以此作為檢測對象,實時檢測程序是否發(fā)生異常。然而這類方法由于檢測對象覆蓋不夠高,比如只檢測連續(xù)執(zhí)行的6到8個條件跳轉(zhuǎn)的標(biāo)志位值[5],因此容易產(chǎn)生二義性,造成漏檢。另一缺陷則是由于檢測頻率過高,容易造成較大的性能開銷。

      本文在分析現(xiàn)有防御方法優(yōu)缺點的基礎(chǔ)上,提出一種延遲檢測異常執(zhí)行路徑(Anomalous Path Lazily Detection,APLD)的方法,用以防御決策性數(shù)據(jù)的攻擊??紤]到攻擊者需要利用系統(tǒng)調(diào)用實現(xiàn)其最終功能,因此將檢測時刻盡可能延遲到系統(tǒng)調(diào)用前,而相對應(yīng)的檢測對象則包含了相鄰兩個系統(tǒng)調(diào)用之間所有的條件跳轉(zhuǎn)指令。為有效描述程序的執(zhí)行行為特征,用層連的哈希運算提取出到達系統(tǒng)調(diào)用所經(jīng)歷的路徑的特征值,以此作為檢測對象。APLD方法盡可能地包含足夠多的條件跳轉(zhuǎn),因此能最大限度減少二義性問題,降低漏檢率。同時延遲的檢測降低了檢測頻率,有利于降低檢測方法的性能開銷。

      2 相關(guān)工作

      控制流數(shù)據(jù)攻擊和非控制流數(shù)據(jù)攻擊雖然最終篡改的對象不同,但是兩類攻擊均需要利用程序中的漏洞(如緩沖區(qū)溢出漏洞、格式化字符串漏洞等),對程序中的假定不變量(如地址)進行攻擊,修改程序中可寫內(nèi)存段的值。為防止攻擊發(fā)生,可采用傳統(tǒng)的漏洞防御方法及地址隨機化方法。

      針對特定漏洞類型的防御方法可在一定程度上加大攻擊的成本,提高攻擊的難度。然而單一的漏洞防御方法并不能完全防御控制流的非法轉(zhuǎn)移,攻擊者仍然可以利用其他漏洞(堆緩沖區(qū)溢出漏洞、虛指針等)篡改目標(biāo)數(shù)據(jù)。地址隨機化方法包含了不同粒度空間的隨機化,如代碼段隨機化[6-7]、函數(shù)塊隨機化[8]以及字節(jié)級隨機化方法[9-10]。然而在具體實現(xiàn)時,受到隨機量大小的限制,地址空間分布隨機化的方法容易被暴力破解[11]。同時由于各種操作系統(tǒng)和編譯器實現(xiàn)的方法不一樣,地址隨機化在進程中應(yīng)用范圍不夠,部分內(nèi)存段中的數(shù)據(jù)未被隨機化,易被攻擊者可以利用此類信息繞過防御方法[12]。

      當(dāng)攻擊最終發(fā)生時程序?qū)霈F(xiàn)異常的行為,程序的一致性被破壞,因此可以通過對程序完整性進行檢測以防御非控制流數(shù)據(jù)的攻擊。程序的一致性檢測是指分析并實時監(jiān)測程序的控制流、數(shù)據(jù)流及執(zhí)行路徑,對程序中的關(guān)鍵對象(如代碼、數(shù)據(jù)等)進行保護,防止這些對象被非法篡改。根據(jù)檢測對象的不同,可以分為控制流一致性檢測、數(shù)據(jù)流一致性檢測和執(zhí)行路徑一致性檢測??刂屏饕恢滦詸z測通過控制流圖保護關(guān)鍵的控制流對象或者代碼不被篡改,然而非控制流數(shù)據(jù)的攻擊并不會使得程序中的控制流出現(xiàn)錯誤的轉(zhuǎn)移,因此這種檢測方法不能有效防御非控制流數(shù)據(jù)攻擊。

      數(shù)據(jù)流一致性檢測通過數(shù)據(jù)流圖保護關(guān)鍵的數(shù)據(jù)流對象不被篡改,可以有效防御各種數(shù)據(jù)被篡改,因此可以防御非控制流數(shù)據(jù)的攻擊。典型的工具有:Data Flow Integrity[13]通過數(shù)據(jù)流分析檢測違反數(shù)據(jù)流圖的惡意寫內(nèi)存對象操作;Typechecking[14]檢測靜態(tài)敏感的數(shù)據(jù)對象中是否含有惡意的內(nèi)容;WIT[15]對程序間的指針進行分析,同時結(jié)合了染色機制計算出某個內(nèi)存對應(yīng)的寫指令,從而對超出內(nèi)存對象的寫指令進行嚴(yán)格限制。然而數(shù)據(jù)流一致性檢測方法屬于一種白盒技術(shù),部分檢測方法需要靜態(tài)分析源代碼,從而獲得完整的數(shù)據(jù)流圖。部分采用了染色分析技術(shù)的檢測方法嚴(yán)格限制了輸入數(shù)據(jù)的使用,帶來了誤檢率過高的問題。

      盡管在非控制流數(shù)據(jù)攻擊中,控制流的轉(zhuǎn)移都是有效的合法的,但是相鄰條件跳轉(zhuǎn)語句之間的相關(guān)性被破壞,程序原有的執(zhí)行路徑卻發(fā)生了變化。因此可以利用執(zhí)行路徑一致性,實時檢測當(dāng)前程序的執(zhí)行路徑是否異常,以此來檢測攻擊。Shi Y et al[5]采用滑動窗口n檢測程序執(zhí)行時的相鄰n個條件跳轉(zhuǎn)標(biāo)志位的值是否正常,其中n取6到8。這種檢測方法能有效檢測非控制路數(shù)據(jù)攻擊所造成的異常的程序執(zhí)行路徑,但由于受限于n的取值,不能完整覆蓋正常路徑,容易出現(xiàn)二義性問題,造成漏檢。Santos J C M et al[16]則是檢測相鄰的間接跳轉(zhuǎn)語句之間所有的條件跳轉(zhuǎn)標(biāo)志位,為防止二義性,將緊鄰間接跳轉(zhuǎn)指令的條件跳轉(zhuǎn)指令的地址加入到檢測對象中。然而這種方法與Shi Y et al方法一樣,需要在每條間接跳轉(zhuǎn)指令處檢測程序的執(zhí)行路徑,檢測頻率仍然較高,性能開銷較大。

      3 異常執(zhí)行路徑的延遲檢測

      本文假設(shè)攻擊者具備修改進程中可寫內(nèi)存的能力,可以通過各種漏洞(如緩沖區(qū)溢出、格式化字符串等)實施決策性數(shù)據(jù)攻擊。

      3.1 執(zhí)行路徑的表征

      由于需要在系統(tǒng)調(diào)用指令執(zhí)行前驗證程序已經(jīng)執(zhí)行的路徑是否有效,并且考慮到只有當(dāng)條件滿足時,條件轉(zhuǎn)移指令才會執(zhí)行。因此可以在程序執(zhí)行時,提取相鄰的系統(tǒng)調(diào)用指令syscalli-1和syscalli之間的所有被執(zhí)行的條件跳轉(zhuǎn)指令,將其地址序列用于表征程序的執(zhí)行路徑。假設(shè)數(shù)組EP中存儲正確的程序執(zhí)行路徑信息,則此時的EP[i]由syscalli-1和syscalli之間的條件跳轉(zhuǎn)地址序列組成。

      由于工作負載不同,程序的執(zhí)行路徑可能不同,由此會產(chǎn)生多條到達同一系統(tǒng)調(diào)用的不同的執(zhí)行路徑。而系統(tǒng)調(diào)用指令為終點的地址序列由于包含的地址個數(shù)不一,會造成極大的存儲開銷,由此帶來較高的性能開銷,因此有必要擬合程序的執(zhí)行路徑信息。一種擬合程序的執(zhí)行路徑信息的方法是將相鄰系統(tǒng)調(diào)用之間所有的條件跳轉(zhuǎn)指令的地址進行異或運算,將運算得到的32比特位的結(jié)果作為表征執(zhí)行路徑的特征值。然而這種單一的異或運算有可能造成執(zhí)行路徑上的某個條件跳轉(zhuǎn)指令地址丟失,如存在下列條件跳轉(zhuǎn)序列:…cjmp1||cjmp 2||cjmp 3||cjmp 4|| cjmp 1…,cjmp1的地址值經(jīng)過異或后會被消除,其信息將被隱藏。條件跳轉(zhuǎn)指令信息被隱藏將會造成所獲取的路徑信息不完整,從而影響防御效果。

      為獲取完整的程序執(zhí)行路徑信息,本文采用一種有效的方法來擬合程序執(zhí)行路徑上的所有條件跳轉(zhuǎn)信息。本文采用了一種簡單的哈希運算,即將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 用于擬合路徑信息的哈希運算

      這種移位后異或運算的實質(zhì)是將相同的地址值在異或運算前混淆,避免同一地址值在異或運算后被隱藏。在h1運算中,混淆區(qū)間(Confusion Interval,CI)為整個32位地址空間,移位粒度被劃分為4份后,可混淆的次數(shù)N為3次。這里定義混淆區(qū)間CI是指參與移位異或運算的地址的位數(shù),混淆次數(shù)N是指可連續(xù)采用該哈希運算(如h1)的同一地址值的個數(shù),即連續(xù)的條件跳轉(zhuǎn)cjmp 1的地址值a1在經(jīng)歷三次哈希運算h1后,所獲得的值h1(h1(h1(a1,a1),a1),a1)并沒有隱藏其中任意一個a1的地址值信息。而在第4次采用h1運算中,若此時地址值與首地址相同,則有可能會造成異或運算后,該地址與頭地址都將被隱藏。綜上分析,單個哈希運算的可混淆次數(shù)N與當(dāng)前的哈希運算的混淆區(qū)間CI有關(guān),即N=CI-1。

      假設(shè)前三次哈希運算采用h1,若在第4次運算中采用h2,由于h2和h1的混淆區(qū)間范圍相同,僅移位方向不同,會造成首地址提前被隱藏,因此不適宜采用h2。若采用h3,盡管混淆區(qū)間CI縮小至前3份(即地址值的前24比特位),但由于低8比特位不參與移位,并將直接進行異或運算,此時的a1值至少將保留低8位的值,首地址和末地址a1的值將不會被徹底隱藏。隨著混淆區(qū)間CI的逐級遞減,h3和h4的可混淆次數(shù)也在逐級變少,但可以采用層連的多個哈希運算,在路徑信息擬合過程中連續(xù)采用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)。層連的哈希運算將可以有效提高可混淆次數(shù),有效地減少地址被隱藏的概率,降低漏檢率,其有效性將在第4章中詳細分析。

      3.2 延遲檢測異常執(zhí)行路徑方法

      延遲檢測異常執(zhí)行路徑方法是在程序運行時,實時搜集相鄰系統(tǒng)調(diào)用之間的所有條件跳轉(zhuǎn)指令信息,通過前述的層連哈希運算,擬合程序的執(zhí)行路徑,并在系統(tǒng)調(diào)用指令執(zhí)行前,驗證該路徑信息是否有效。相應(yīng)的APLD檢測方法的偽代碼如下所示:

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

      圖2 K值的格式

      為了創(chuàng)建正常的程序執(zhí)行路徑,以用于實時驗證程序中的執(zhí)行路徑是否異常,這里采用類似于入侵檢測中基于模型的訓(xùn)練方法獲得完備的<EP||syscall>以填充數(shù)據(jù)EP[],即在安全環(huán)境下,以不同的工作負載連續(xù)運行目標(biāo)程序直至所搜集的正常的執(zhí)行路徑數(shù)量滿足一定的覆蓋率,從而獲得足夠多的實際執(zhí)行路徑信息以填充EP。本文利用這種訓(xùn)練方法在SPEC2000基準(zhǔn)程序中運行ref工作負載,采用了不同參數(shù)下的層連哈希運算,所得到的程序執(zhí)行路徑的數(shù)量如表1所示。

      在表1中,n為32位地址值被劃分的份數(shù)。從表中可以看出,隨著n的增加,同一程序中的EP數(shù)量也明顯增加,如crafty、gap等。分析其原因,是因為隨著n的增加,可被層連的哈希運算的個數(shù)也在增加,可混淆的次數(shù)也在增加,地址被隱藏的概率就會相應(yīng)減少。因而針對不同的路徑,采用不同的層連哈希運算,可以計算得到不同的特征值,而非相同的特征值。隨著n的增加,層連的哈希運算更能真實反映不同的程序執(zhí)行路徑。

      表1 基準(zhǔn)程序的EP數(shù)量

      同時在表1中,部分程序中EP元素的數(shù)量明顯高于其他程序,如gcc、perlbmk和parser等。分析其原因,EP數(shù)量相對較少的程序中所要實現(xiàn)的功能較為簡單,如bzip2和gzip均是實現(xiàn)壓縮算法。而EP數(shù)量較多的程序則其功能較為復(fù)雜,如gcc是編譯器。因此當(dāng)采用相同的層連哈希運算時,EP的數(shù)量與具體的程序相關(guān)。

      4 有效性分析及性能評估

      4.1 地址被隱藏的概率

      其中n代表32位地址值被等分的個數(shù),n=2i,且0<n≤32。r代表跳轉(zhuǎn)指令的復(fù)用距離。復(fù)用距離原本是用于度量程序的局部性[17],是指程序運行中連續(xù)兩次訪問同一數(shù)據(jù)元素之間所訪問的不同數(shù)據(jù)元素的數(shù)目。而本文借用其概念,將r用于表示連續(xù)兩次執(zhí)行同一條件跳轉(zhuǎn)指令之間所執(zhí)行的其他條件跳轉(zhuǎn)指令的個數(shù)。如在執(zhí)行路徑…cjmp1||cjmp 2||cjmp 3||cjmp 4||cjmp 1…中,條件跳轉(zhuǎn)指令cjmp1的復(fù)用距離r為3。若此時假設(shè)n=4,可采用的層連的哈希運算個數(shù)為3個,如圖1中所示的h1、h3和h4,混淆區(qū)間CI范圍分別從4減到2,各個哈希運算可混淆的次數(shù)N分別為3、2和1,因此Ntotal為6次。采用了層連的哈希運算計算上述執(zhí)行路徑時,cjmp1的地址被隱藏的概率為P=1/(1+6)3+1≈4.16E-4。

      若執(zhí)行路徑中某一條件跳轉(zhuǎn)僅被執(zhí)行一次,則其復(fù)用距離r為∞,則此時P為∞,即該條件跳轉(zhuǎn)地址不會被隱藏。若在極端情況下,即在一系列連續(xù)的相同的條件跳轉(zhuǎn)指令執(zhí)行時,首條件跳轉(zhuǎn)指令的復(fù)用距離r為0,在經(jīng)過如圖1中所述的層連哈希運算后(即采用h1、h3和h4),第7個條件跳轉(zhuǎn)指令的地址值將與第一個地址值被隱藏,因此首條件跳轉(zhuǎn)指令地址被隱藏的概率P為1/7。然而在實際情況下,相同的條件跳轉(zhuǎn)指令連續(xù)運行意味著滿足該條件跳轉(zhuǎn)的條件一致,使得指令重復(fù)執(zhí)行。由于異常路徑檢測方法是檢測相鄰的不同的條件跳轉(zhuǎn)指令之間的相關(guān)性,若相鄰的跳轉(zhuǎn)指令相同(如在含有一個條件跳轉(zhuǎn)指令的同一循環(huán)體內(nèi)),則決策性數(shù)據(jù)的攻擊并不會造成相鄰指令之間的相關(guān)性受到影響。因此,即使采用層連哈希方法計算一系列連續(xù)的相同條件跳轉(zhuǎn)指令的路徑時,出現(xiàn)部分指令地址被隱藏情況,也不會影響最終的檢測。

      表2為不同參數(shù)下通過式(1)所求得的值,其代表程序執(zhí)行的路徑中重復(fù)出現(xiàn)的條件跳轉(zhuǎn)指令信息被隱藏的概率。在表2中,n為32位地址值被劃分的份數(shù),r為指令的復(fù)用距離。如n=8,r=1表示32位地址被劃分為8份,且復(fù)用距離為1時,指令信息被隱藏的概率為P=0.001 189。從表中可以看出,隨著n的增加,條件跳轉(zhuǎn)指令信息被隱藏的概率也隨之減少。

      表2 不同參數(shù)下指令信息被隱藏的概率

      4.2 漏檢率

      由于已經(jīng)通過訓(xùn)練方法確定程序的正常行為,因此在實現(xiàn)時采用布隆過濾器(Bloom Filter)存儲數(shù)組EP中的各項元素以降低性能開銷和存儲開銷。

      在APLD方法中,檢測就是有效識別當(dāng)前的K值是否存在于EP數(shù)組中。在假設(shè)EP數(shù)組中的元素由全部的執(zhí)行路徑所組成,則APLD的漏檢率是采用布隆過濾器Bloom filter存儲EP數(shù)組中元素時所帶來不可避免的后果。如本不屬于EP中的元素,在經(jīng)過Bloom filter中hash查找時卻在相關(guān)位判定為1,也就意味著APLD方法在實現(xiàn)時對于不屬于EP中的異常執(zhí)行路徑判定為有效。因此Bloom filter中的誤檢率FPR等同于APLD方法中的漏檢率FNR。FNR= (1-(1-1/m)kt)k≈(1-e-kt/m)k,其中k為相互獨立hash函數(shù)個數(shù),t為組成EP數(shù)組中所有元素個數(shù),m為位數(shù)組的大小。根據(jù)表1中的數(shù)據(jù),可以得到APLD方法的漏檢率如表3所示。

      在表3中,n為32位地址值被劃分的份數(shù),其EP數(shù)組中元素個數(shù)對應(yīng)表1。分析APLD的漏檢率,隨著EP數(shù)量的增多,其漏檢率也隨之增加。部分程序的EP數(shù)量較多,如crafty、perlbmk、parser和gcc等,因此其漏檢率較高。而bzip2、gzip和vortex的EP數(shù)量較少,因此漏檢率較低。

      表3 APLD方法的漏檢率

      4.3 性能評估

      由于部分條件跳轉(zhuǎn)屬于間接跳轉(zhuǎn),只有在程序運行時才能動態(tài)地獲取這部分條件跳轉(zhuǎn)的指令信息。因此為評估APLD方法的性能,本文采用插樁技術(shù),在二進制代碼動態(tài)翻譯工具Pin[18]平臺上實現(xiàn)該方法。實驗環(huán)境建立在Dell微機(3 GHz core2 CPU、2 GB內(nèi)存)上的,運行Red Hat 7.0企業(yè)版的操作系統(tǒng),編譯器選用GCC 4.2.1,并且采用Pin 2.12-53271。

      由于基準(zhǔn)程序gzip和bzip2中EP數(shù)量較少,因此在實現(xiàn)時不采用布隆過濾器存儲EP,其他基準(zhǔn)程序采用布隆所述,實驗所獲得的APLD性能開銷如圖3所示。

      圖3 APLD性能開銷示意圖

      在圖3中,在Pin上直接運行基準(zhǔn)程序時的性能開銷范圍為mcf的1.1倍到gcc的3.3倍。當(dāng)APLD方法采用的劃分份數(shù)n為8時,可被用于層連的哈希運算個數(shù)為7,而此時的性能開銷范圍為gzip的2.03倍到gcc的5.76倍。采用的劃分份數(shù)n為16時,可被用于層連的哈希運算個數(shù)為15,此時的性能開銷范圍為gzip的2.11倍到gcc的5.97倍。采用的劃分份數(shù)n為32時,可被用于層連的哈希運算個數(shù)為31,此時的性能開銷范圍為gzip的2.29倍到gcc的6.01倍。

      從APLD的性能開銷可知,隨著劃分份數(shù)n的增加,APLD的性能開銷并沒有發(fā)生明顯變化。分析其原因,是因為份數(shù)n的增加,只是帶來了更多的細粒度的哈希運算。而細粒度的哈希運算均為移位后異或運算,只是可混淆的區(qū)間發(fā)生變化,并沒有增加指令的數(shù)量,對性能開銷并沒有明顯的影響。因此在不同的n下APLD的性能開銷并沒有顯著的變化。

      5 總結(jié)

      作為一種主要的非控制流數(shù)據(jù)攻擊的類型,決策性數(shù)據(jù)攻擊能繞開以控制流相關(guān)數(shù)據(jù)作為保護對象的防御方法。現(xiàn)有的針對這類攻擊的防御方法在前提假設(shè)上有過多限制,如需要源碼,同時在有效性及性能上存在缺陷。由于決策性數(shù)據(jù)攻擊破壞了相鄰條件跳轉(zhuǎn)語句之間的相關(guān)性,改變了程序原有的執(zhí)行路徑,因此本文提出了一種延遲檢測異常執(zhí)行路徑的方法,用以防御決策性數(shù)據(jù)的攻擊。該檢測方法以相鄰兩個系統(tǒng)調(diào)用之間的所有條件跳轉(zhuǎn)作為執(zhí)行路徑,同時本文提出了一種層連的哈希運算以獲取正確的執(zhí)行路徑信息,并在系統(tǒng)調(diào)用執(zhí)行前檢測執(zhí)行路徑信息是否有效,以此來檢測異常的執(zhí)行路徑,防御決策性數(shù)據(jù)的攻擊。有效性分析和性能評估表明,層連的哈希運算可在極高的概率下,獲得正確的且易于保存的程序執(zhí)行路徑信息。并且在此基礎(chǔ)上實現(xiàn)的延遲檢測異常路徑方法能有效防御決策性數(shù)據(jù)攻擊,且其漏檢率低,性能開銷適中。

      [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,F(xiàn)lorence,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,F(xiàn)ei 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

      作為一種主要的非控制流數(shù)據(jù)攻擊的類型,決策性數(shù)據(jù)攻擊能繞開以控制流相關(guān)數(shù)據(jù)作為保護對象的防御方法。在分析現(xiàn)有的防御決策性數(shù)據(jù)攻擊方法的優(yōu)缺點基礎(chǔ)上,提出了一種延遲的異常路徑檢測方法。為有效避免相同的條件跳轉(zhuǎn)信息被隱藏,引入了層連的哈希運算以獲取正確的程序執(zhí)行路徑信息。在系統(tǒng)調(diào)用執(zhí)行前檢測該路徑信息的有效性,能有效降低檢測頻率,從而降低性能開銷。理論分析和實驗結(jié)果表明,該防御方法能有效防御決策性數(shù)據(jù)攻擊,且其漏檢率低,性能開銷適中。

      決策性數(shù)據(jù)攻擊;執(zhí)行路徑一致性;層連的哈希運算;異常路徑延遲檢測;漏檢率

      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—),女,工程師,主要研究領(lǐng)域:信息安全,入侵檢測;張藍圖,男,工程師,主要研究領(lǐng)域:信息安全,漏洞檢測與防御,網(wǎng)絡(luò)可靠性。E-mail:lantuzhang@163.com

      2013-09-10

      2013-10-23

      1002-8331(2013)24-0100-05

      ◎數(shù)據(jù)庫、數(shù)據(jù)挖掘、機器學(xué)習(xí)◎

      猜你喜歡
      控制流哈希指令
      聽我指令:大催眠術(shù)
      抵御控制流分析的Python 程序混淆算法
      工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
      電子科技(2021年2期)2021-01-08 02:25:58
      抵御控制流分析的程序混淆算法
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
      基于維度分解的哈希多維快速流分類算法
      計算機工程(2015年8期)2015-07-03 12:20:04
      基于控制流隱藏的代碼迷惑
      基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
      計算機工程(2014年6期)2014-02-28 01:25:40
      左云县| 三门县| 盈江县| 若羌县| 阳原县| 安乡县| 牡丹江市| 兴城市| 梧州市| 新化县| 灵川县| 呈贡县| 古蔺县| 太谷县| 长垣县| 佛山市| 革吉县| 怀远县| 高州市| 临沭县| 昆山市| 南昌县| 利津县| 陆川县| 铜陵市| 霍山县| 湘乡市| 新昌县| 九江市| 吉安市| 德兴市| 鄄城县| 静乐县| 康保县| 宜黄县| 岳阳县| 福安市| 巴彦淖尔市| 灌南县| 西丰县| 定日县|