<dd id="saiiy"></dd>
  1. <s id="saiiy"></s>

    1. <s id="saiiy"></s>
      1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>

        基于ROP/JOP,gadgets性質(zhì)的軟件多樣化評估方法

        發(fā)布時(shí)間:2025-05-25 21:45:50   來(lái)源:心得體會(huì )    點(diǎn)擊:   
        字號:

        遲宇寧,郭云飛,王亞文,扈紅超

        基于ROP/JOP gadgets性質(zhì)的軟件多樣化評估方法

        遲宇寧,郭云飛,王亞文,扈紅超

        (信息工程大學(xué),河南 鄭州 450001)

        為應對信息化生活中的網(wǎng)絡(luò )攻擊及威脅,降低網(wǎng)絡(luò )系統中同質(zhì)化攻擊快速蔓延的風(fēng)險,增強網(wǎng)絡(luò )和軟件的安全性,軟件多樣化技術(shù)被應用到系統中。軟件多樣化旨在生成功能等價(jià)但內部發(fā)生變化的程序變體,從而改變單一的運行環(huán)境,緩解同質(zhì)化攻擊?,F有的多樣化技術(shù)的評估指標ROP(return-oriented programming)gadgets幸存率難以直接體現安全性影響且評估方法單一,為了更加全面有效地評估軟件多樣化方法的有效性,提出基于ROP/JOP(jump-oriented programming)gadgets性質(zhì)的軟件多樣化評估方法,通過(guò)分析常見(jiàn)的代碼重用攻擊,將抽象的量化轉為具象的指標,從空間、時(shí)間及質(zhì)量3個(gè)方面評估多樣化方法的安全增益及效果。該方法根據gadgets的相似性、損壞度和可用性3個(gè)性質(zhì)探討軟件多樣化技術(shù)如何影響ROP/JOP攻擊。用指令替換、NOP插入、控制流平坦等9種多樣化方法對GNU coreutils程序集進(jìn)行多樣化編譯生成多樣化程序集。對多樣化程序集進(jìn)行基于gadgets性質(zhì)的實(shí)驗,根據實(shí)驗結果評估不同多樣化方法的有效性及對攻擊造成的影響。實(shí)驗結果表明,該方法能夠對軟件多樣化方法的安全增益進(jìn)行準確評估,多樣化技術(shù)會(huì )導致ROP/JOP攻擊所需的攻擊鏈空間增大,構造攻擊鏈的時(shí)間變長(cháng)且攻擊成功率降低。不同的多樣化方法產(chǎn)生的效果高低不一,對后續研究具有更高安全增益的多樣化技術(shù)有指導作用。

        軟件多樣化;
        ROP/JOP攻擊;
        gadgets性質(zhì);
        安全增益評估

        信息技術(shù)及互聯(lián)網(wǎng)的飛速發(fā)展,使得大眾生活越來(lái)越依賴(lài)于網(wǎng)絡(luò )。種類(lèi)繁多、功能各異的應用軟件為人們提供生活便利的同時(shí),也引入了安全風(fēng)險,威脅人們的隱私和財產(chǎn)安全。究其原因是大多數的軟件在設計階段采用了相似或相同的架構、協(xié)議使得軟件漏洞易被黑客在同質(zhì)化環(huán)境中利用。

        為了抵御此類(lèi)威脅, 各類(lèi)安全機構研究了多種防御方法,如在內存中限制可執行頁(yè)面來(lái)抵抗大多數代碼注入攻擊[1],控制流完整性檢測檢測程序是否進(jìn)入非預期的執行路徑[2],動(dòng)態(tài)污點(diǎn)分析追蹤信息流識別破壞內存的攻擊[3]。在這些防御方法中, 大多數只能針對某一種漏洞進(jìn)行防御,且容易被攻破[4]。

        軟件多樣化技術(shù)為防御威脅提供了新的思路,其核心思想是應用軟件多樣化技術(shù)動(dòng)態(tài)地改變攻擊面以提高攻擊成本。軟件多樣性的概念可以追溯到容錯。多樣性將一個(gè)給定組件的多個(gè)實(shí)現方法產(chǎn)生錯誤結果的可能性降到最低。軟件多樣化著(zhù)眼于代碼布局隨機化,可以在不同地方用自動(dòng)化的方式實(shí)現,如通過(guò)編譯器實(shí)現軟件多樣化[5]。在加載時(shí)對程序進(jìn)行反匯編,替換loader加載器[6]實(shí)現多樣化等?,F代操作系統通過(guò)隨機化程序中對象的基址,如堆棧、堆、程序代碼和動(dòng)態(tài)庫,實(shí)現了地址空間布局隨機化(ASLR,address space layout randomization)。

        大量理論和實(shí)踐證明了軟件多樣化技術(shù)能夠有效提高攻擊成本,增強軟件安全性,但如何對軟件多樣化技術(shù)的有效性進(jìn)行評估是一個(gè)難點(diǎn)。劉鎮武等[7]通過(guò)軟件復雜程度的靜態(tài)指標來(lái)評估軟件多樣化技術(shù)。Rossman等[8]結合香農?維納信息熵[9]的角度,通過(guò)利用物種多樣性量化公式去分析操作系統的多樣性,也有依靠邏輯認證[10]來(lái)證明改變攻擊依賴(lài)的程序屬性則表明防御成功。

        評估軟件多樣性技術(shù)有效性的一種方法是計算幸存的gadgets的數量占多樣化軟件gadgets集合的比例。Coffman等[11]采用該方法,分別用相同地址的幸存gadgets占比和不考慮地址的幸存gadgets占比作為指標,對幾種多樣化技術(shù)進(jìn)行了安全性評估。但是該方法所提到獲取的gadgets仍足以發(fā)動(dòng)攻擊,即幸存gadgets數量的占比不能顯著(zhù)體現安全性影響,且幸存gadgets占比這個(gè)指標只考慮了多樣化技術(shù)在空間角度對面向返回的編程(ROP,return-oriented programming)的部分影響。因此,本文提出了一種基于常見(jiàn)代碼重用攻擊(ROP/面向跳轉的編程(JOP,jump-oriented programming))的軟件多樣化技術(shù)有效性的評估方法,獲取程序中ROP/JOP攻擊采用的攻擊鏈,分別從攻擊鏈的相似性、損壞度和可用性3個(gè)方面進(jìn)行定量分析,來(lái)討論軟件多樣化技術(shù)在空間角度、質(zhì)量、時(shí)間角度對ROP/JOP的影響。

        Coppens等[12]使用BinDiff補丁對比算法,利用該算法研究不同補丁之間共同的指令、函數、代碼等。該方法被用在衡量對抗補丁攻擊[13]的有效性上,將補丁前和補丁后的程序視為具有多樣性的程序。

        Banescu等[14-15]用符號執行來(lái)評估各種代碼混淆方法的強度。發(fā)現符號執行對執行了代碼混淆的程序造成覆蓋率減緩,代表對程序進(jìn)行逆向分析的困難增加。但符號執行主要關(guān)注對程序逆向的干擾程度,受程序大小的空間限制。

        Pagani等[16]采用模糊哈希研究了二進(jìn)制文件基于局部敏感哈希(LSH)方法的庫標識、重新編譯和程序相似度。而后Coffman等[17]采用了3種模糊哈希算法,對多樣化的二進(jìn)制文件的符號表進(jìn)行相似性分析,并對比了不同模糊哈希算法的優(yōu)劣。

        Homescu等[18]采用相同地址上幸存gadgets占比為指標,利用該指標衡量不同插入方案的NOP(無(wú)操作)插入多樣化技術(shù)的安全性。Coffman等[11]以采用了Homescu等的幸存gadgets占比為其中一個(gè)指標,提出在不考慮地址的情況下,將相同gadgets占比作為指標,對幾種多樣化技術(shù)進(jìn)行有效性評估。

        多樣化技術(shù)的多層次性使得在部署之前很難確定它的有效性,因此多樣化的目標——引入異構度,干擾同質(zhì)化攻擊,從而使攻擊者的成本增加——變得難以直接測量。以上工作中,Banescu等[14-15]側重于衡量代碼混淆技術(shù)對抗符號執行和程序逆向的有效性。Homescu 等[18]和文獻[11]通過(guò)ROP gadgets的兩種幸存指標評估多樣化技術(shù)的有效性,但僅減少幸存的gadget占比不能增加其對ROP攻擊的安全性,故幸存指標難以真實(shí)反映多樣化技術(shù)的有效性。通常來(lái)說(shuō),軟件多樣性對攻擊引入的多樣化越強,攻擊者利用成本越高,則該軟件的安全性也就越高,最理想的狀態(tài)是攻擊者需要在有效攻擊時(shí)間內構建一套全新的可靠的攻擊鏈。因此,為了量化軟件多樣化真正造成的攻擊干擾程度以及安全性,需要對多樣化技術(shù)有基于攻擊角度的更全面的評估準則和模型。

        2.1 代碼重用攻擊

        攻擊者利用緩沖區溢出漏洞,在存在漏洞的內存地址處重寫(xiě)緩沖區外的返回指針,重定向控制流,以執行事先注入的代碼。除了緩沖區溢出外,整數溢出、格式化字符串等內存損壞類(lèi)的漏洞大多是同一利用方法。為了應對這種利用脆弱內存漏洞達到代碼注入的攻擊,在操作系統中引入了可執行保護,該方法將內存的每個(gè)頁(yè),根據其脆弱性,標記為可寫(xiě)或可執行,兩種狀態(tài)不能同時(shí)存在。若試圖在不可執行頁(yè)上執行代碼,大多數情況下保護機制會(huì )直接終止程序的運行。因此,可執行空間保護使得攻擊者難以執行注入的代碼,為了繞過(guò)這種保護方法,引出了一種新的攻擊類(lèi)型——代碼重用攻擊。

        代碼重用攻擊完全放棄了代碼注入的思想,而是將重點(diǎn)放在重用現有的機器碼上,以達到攻擊效果。其中,常見(jiàn)的代碼重用攻擊為面向返回的編程[19]和面向跳轉的編程[20]。ROP和JOP均利用二進(jìn)制可執行文件中已有的代碼片段來(lái)進(jìn)行攻擊。ROP/JOP攻擊的核心組件是“小工具(gadgets)”,即緊接在返回/跳轉指令之前發(fā)生的指令序列。ROP/JOP gadgets是一個(gè)匯編指令序列,表示返回值的字節結束,可以解釋為指令和參數(如寄存器或即時(shí)值)。

        與代碼注入攻擊(攻擊者利用漏洞,如越界寫(xiě)?注入自己的注入漏洞)不同,ROP/JOP攻擊通過(guò)執行由程序和庫代碼構建的gadgets鏈來(lái)危害應用程序。攻擊者利用gadgets鏈重定向到內存中的任意字節,如果它們位于可執行段,則可直接執行。ROP使用ret指令來(lái)改變程序的控制流,而 JOP 攻擊利用程序間接跳轉和間接調用指令(call指令和jmp指令)來(lái)改變程序的控制流。

        2020年,英特爾表示將在自己的Tiger Lake系列移動(dòng)CPU上配置CET安全功能,該功能旨在防范控制流劫持類(lèi)攻擊,因此可以防止ROP/JOP攻擊。但該功能目前只支持Intel Tiger Lake系列,且對Linux系統的適配性還需要進(jìn)一步整合,即該功能的支持范圍有限,還需要時(shí)間擴大對操作系統、硬件及軟件棧的普適性。故ROP/JOP仍將長(cháng)期成為可用的攻擊方法,因此本文依舊具有較大的研究意義和價(jià)值。

        2.2 軟件多樣化方法

        軟件多樣化最初由Cohen等[21]提出,Cohen等指出程序進(jìn)化是一種防御策略,即程序“進(jìn)化”成與原始程序不同,但語(yǔ)義上相同的版本,并提出了指令重排序和垃圾代碼插入等程序“進(jìn)化”方式。常用的軟件多樣化技術(shù)由編譯器來(lái)實(shí)現,本文結合multicompiler[22]和LLVM Obfuscator[23]構建了具有多種軟件多樣化功能的編譯器,其具體功能如下。

        1) 控制流平坦:利用分發(fā)器控制[24]基本塊之間的直接跳轉,破壞基本塊的跳轉關(guān)系,將整個(gè)程序的跳轉邏輯變得模糊。分發(fā)器的控制讓基本塊都出現在同一層,隱藏了程序的原始跳轉結構。

        2) 偽控制流:通過(guò)插入不影響程序功能的無(wú)效跳轉基本塊[25],構造一些必真或必假的條件,打亂程序原來(lái)的控制流圖。

        3) NOP插入:NOP是處理器在不修改寄存器文件或內存的情況下執行的指令,NOP插入是隨機在當前指令之前插入0或1個(gè)NOP。在本文實(shí)驗中,NOP插入的方式為40%的隨機選擇插入30%的NOP指令。

        4) 指令替換:功能一致的指令有不同的表達方法,如a?5=a+(?5)。該方法在不更改功能的前提下,用一個(gè)等價(jià)的指令序列替換數值上的二進(jìn)制和布爾操作。

        5) 全局變量洗牌:隨機排列全局變量,打亂了編譯器生成的目標代碼中全局變量的順序。

        6) 函數隨機化:這種方法在整個(gè)可執行文件中進(jìn)行全局性的函數重排列,改變了編譯器生成的目標代碼中函數的順序。

        7) 棧反轉:傳統的棧布局為棧底為高地址,棧頂為低地址,棧向低地址生長(cháng),棧反轉技術(shù)將棧的生長(cháng)方式反轉為向高地址生長(cháng)。

        8) 棧填充:往??臻g里填充無(wú)用數據,使實(shí)際執行的??臻g增加。本文實(shí)驗的填充率為50%,將預留的??臻g填充至利用率達到50%。

        3.1 使用的數據集

        本文選擇了一個(gè)開(kāi)源大數據集進(jìn)行評估:GNU核心實(shí)用程序[17]。表1列出了關(guān)于數據集的基本統計信息,使用David A. Wheeler的“SLOC Count”(2.26)計算了數千行代碼的數量(KLOC)。GNU核心實(shí)用程序是一組在類(lèi)Unix操作系統上可以直接通過(guò)命令行使用的常用工具,源代碼是開(kāi)源的,方便利用多樣化編譯器進(jìn)行編譯生成變體。GNU核心實(shí)用程序包含如ls、base64、rm、kill等大量Unix/Linux系統常用工具,提供了源代碼功能上的多樣性。單個(gè)應用程序在實(shí)驗中只提供一個(gè)數據點(diǎn),并采用整個(gè)數據集的平均值作為評估指標。

        表1 GNU核心程序集

        3.2 評估方法

        本文構建了用于評估多樣化變體對原始程序ROP/JOP攻擊的干擾程度的測量方法。為量化多樣化技術(shù)引起的攻擊差異,最直接的方法是分析ROP/JOP 賴(lài)以使用的gadgets。同質(zhì)化的可靠ROP/JOP 攻擊,對gadgets集的相似度、攻擊鏈質(zhì)量和可用性有較高的要求,本文從這3個(gè)方面進(jìn)行評估。同質(zhì)環(huán)境下,未進(jìn)行多樣化的軟件的gadgets應具有較高的相似性甚至完全一致,攻擊鏈質(zhì)量高并且gadgets數量足夠構建可靠的攻擊鏈。多樣化技術(shù)如果能夠達到抗攻擊或減緩攻擊效果,則對應的gadgets應當降低相似性,并破壞鏈質(zhì)量。

        3.2.1 Gadgets相似性算法

        已有的軟件多樣性技術(shù)評估通過(guò)分析不同多樣化技術(shù)中幸存的gadgets的數量或百分比[11]來(lái)量化其安全性影響。該方法被認為可靠性較低,且只考慮了多樣化技術(shù)的gadgets集變化,未將正常執行體和多樣化執行體作為一個(gè)整體進(jìn)行比較。

        評估軟件多樣化技術(shù)帶來(lái)的攻擊差異化程度的另一種方法是研究多樣化技術(shù)引起的相似性降低程度。對于ROP/JOP攻擊來(lái)說(shuō),從空間的角度,直觀(guān)的衡量方法是對比正常軟件和多樣化軟件gadgets集合的相似性。多樣化軟件的gadgets集與正常執行體的gadgets集相似性越低,說(shuō)明多樣化方法引入的gadgets變化越大,針對多樣化軟件構建的攻擊鏈差異度越大,攻擊者所需的空間成本越高。

        為實(shí)現相似性評估,本文提出gadgets相似度計算。本文定義相似度是兩個(gè)可執行程序不考慮地址的情況下共享的具有相同gadgets鏈的比例。Gadgets集合代表攻擊者能采用的攻擊鏈集合,可用的gadgets鏈可能因為多樣化方法在不同變體中呈現差異。

        本文使用Jaccard相似系數[17]來(lái)計算相似度。Jaccard相似系數是一種衡量?jì)蓚€(gè)集合的相似度指標,定義為集合與集合交集的大小除以并集的大小,公式為

        在本文實(shí)驗中,固定正常執行體集合Normal為集合,其余9種多樣化方法生成的變體集合依次為集合,并計算集合A與集合B的Jaccard相似系數。如圖1所示,正常GNU核心程序集中的ls為gadgetsA集合,控制流平坦程序集(CFF-GNU)的ls為gadgetsB集合,gadgetsA和gadgetsB分別取交集和并集進(jìn)行計算得到Jaccard相似系數。

        隨著(zhù)中國社會(huì )經(jīng)濟發(fā)展水平不斷提高,“工業(yè)反哺農業(yè),城市支持農村”方針提上國家發(fā)展日程,新農村建設、美麗鄉村建設、精準扶貧等國家政策在逐步實(shí)施,農村公共服務(wù)需求增加。新的形勢對農村公共服務(wù)供給提出新的要求。本階段的研究主要有城鄉公共服務(wù)的均等化問(wèn)題、新型城鎮化建設對農村公共服務(wù)供給的影響、供給側改革對農村公共服務(wù)的影響、農村公共服務(wù)供給新的模式和機制探索[12-14]。

        表2 用于ROP/JOP 攻擊的TC gadgets

        本文編寫(xiě)腳本自動(dòng)對比兩個(gè)gadgets集合文件,搜索并統計相同的gadgets數量得到交集,用gadgets總數減去交集得到并集,最后實(shí)現jaccard相似系數的計算。

        3.2.2 Gadgets鏈質(zhì)量

        一些gadgets具備圖靈完整性的能力,這類(lèi)gadgets是攻擊時(shí)采用的核心攻擊指令,此處定義為圖靈完整gadgets(TC gadgets)[26]。其中,ROP中有加載內存LM、存儲內存SM、算術(shù)操作AM、棧操作SP、加載寄存器LR,移動(dòng)寄存器MR等為圖靈完備的。JOP額外有跳轉操作JMP和函數調用CALL為圖靈完備的。具體分類(lèi)方法如表2所示。

        圖1 控制流平坦和正常編譯的ls程序gadgets交并集

        Figure1 Gadgets intersection and union of control flow flattening and normal compilers ls program

        攻擊者需要使用gadgets改變原有的寄存器相關(guān)調用和存儲值,所以用于生成攻擊鏈的gadgets鏈質(zhì)量至關(guān)重要。多樣化技術(shù)可能會(huì )改變指令對寄存器的調用和寄存器的存儲值,導致在ROP/JOP的攻擊中,寄存器無(wú)法正常發(fā)揮原來(lái)的作用。為度量gadgets鏈的整體質(zhì)量,本文參考Ahmed等[26]評估不同粒度ASLR方案采用的JIT-ROP gadgets損壞率指標,并針對JOP擴展了TC gadgets,針對ROP和JOP,對原方法采用的指令進(jìn)行了修改,對具有圖靈完備性的每一條gadgets鏈進(jìn)行損壞分析。

        通常,一個(gè)gadgets鏈包含一個(gè)核心指令。如“mov eax, 0x6083e0; cmove rdi, rax; mov eax, [rdi]; ret;”包含mov eax,[rdi]作為核心指令,以及在核心指令之前/之后的一些附加指令。核心指令是攻擊者必要的指令,附加指令可能會(huì )修改核心指令的源寄存器或目標寄存器,如果發(fā)生這種情況,則視該gadgets已損壞。核心指令被修改的情況有以下3種。

        1) 被核心指令前的指令修改:“and [rax], al; mov rbx,[rip+0x205bd7]; pop rbx; ret;”,“pop rbx”為核心指令,rbx被前面的“mov rbx,[rip+0x205bd7]”修改。

        2) 被核心指令后的指令修改:“add [eax], rax; add rax, cl; ret;”,核心指令“add [eax],rax”中rax被后面的“add rax,cl”修改。

        3) 核心指令前/后的指令均可修改:“and eax, ebx ; mov eax, [r9+0x4]; mov [r9+0x4], esi; ret;” ,核心指令“mox eax [r9+0x4]”中eax和esi分別被前后的指令修改。

        本文通過(guò)分析附加指令是否修改小工具的核心指令來(lái)測量寄存器損壞率。根據以上3種場(chǎng)景判斷gadgets損壞情況。確定一組可以修改核心指令的源寄存器或目標寄存器的附加指令(mov、lea、add、sub、cmove、pop、inc、dec、xchg、and、or、xor、shl和shr),將這類(lèi)指令使用的寄存器視為沖突寄存器。

        如果在一組有以上附加指令和表2中核心指令的gadgets鏈中,附加指令修改了核心指令寄存器,則該條gadgets鏈視為被損壞。

        通過(guò)以上方法,獲得被損壞的gadgets鏈數量,用損壞的gadgets鏈數量除以所有g(shù)adgets鏈的數量來(lái)測量寄存器損壞率。

        3.2.3 Gadgets收集效率

        多樣化技術(shù)對ROP/JOP的重要影響是改變gadgets的數量和收斂時(shí)間。多樣化技術(shù)可能帶來(lái)gadgets數量的減少或增加,并增長(cháng)或縮短收集完整gadgets集的收斂時(shí)間。存在一種情況:盡管多樣化技術(shù)使gadgets數量減少,由于擾亂了各種層次的布局,反而增加了收集gadgets的時(shí)間,提高了攻擊者的時(shí)間成本。構建一個(gè)完整可用的攻擊鏈需要有足夠數量的gadgets,而在真實(shí)環(huán)境中每一次攻擊受到有效攻擊時(shí)間的約束,減少軟件中可用的gadgets總數,延長(cháng)收集有效gadgets的時(shí)間,增加了構建攻擊鏈的難度和成本,因此可以減少其受到有效攻擊的次數。為了評估以上情況,本文提出gadgets收集效率這一指標。

        為度量gadgets收集效率,本文對所有執行體運行g(shù)adgets收集函數,記錄收斂到完整gadgets集所需的時(shí)間,并計算每秒可收集gadgets個(gè)數,得出收集效率,該指標不僅反映多樣化技術(shù)對gadgets收集造成的時(shí)間成本影響,也反映了數量的變化。對于攻擊者來(lái)說(shuō),越低的時(shí)間成本內收集的gadgets越多,收集效率越高,則gadgets的可用性越高,攻擊的成功率越高。

        本文實(shí)驗在使用Ubuntu 18.04 LTS 64位操作系統的Linux機器上進(jìn)行,采用內生安全軟件開(kāi)發(fā)環(huán)境(ES2,endogenous security studio)生成執行體。ES2是集軟件代碼開(kāi)發(fā)、異構化編譯、多樣化執行體生成等功能于一體的軟件開(kāi)發(fā)環(huán)境,具備業(yè)界領(lǐng)先的進(jìn)程級細粒度多樣化編譯性能。

        本文采用基于Python的開(kāi)源gadgets收集工具——ropper,并針對實(shí)驗需求對源碼進(jìn)行改進(jìn)。改造后的ropper添加了計算收集完整gadgets時(shí)間的功能函數,增加了只收集ROP或JOP gadgets的功能。

        本文采用9種多樣化技術(shù)(控制流平坦(CFF)、虛假控制流(FCF)、NOP插入(NI)、指令替換(IR)、全局變量洗牌(GVS)、函數隨機化(FR)、棧反轉(RS)、棧填充(FS)和堆棧交換(ESH))以及一種正常編譯方法Normal。對于每種多樣化技術(shù),利用GNU核心程序集,用ES2集中編譯連接。其中,每個(gè)核心程序均使用不同的多樣化技術(shù)進(jìn)行編譯,生成900個(gè)多樣化變體,加上正常編譯未使用多樣化技術(shù)的100個(gè)執行體,共計1 000個(gè)執行體,10個(gè)不同的GNU核心程序集。

        利用3.2節所述的各類(lèi)方法,得到每個(gè)GNU核心程序集的每個(gè)程序對應數據,并取該程序集的平均值,作為實(shí)驗的最終數據。

        4.1 Gadgets相似度的評估

        假設隨著(zhù)gadgets的共同集減少,攻擊者的成本增加。理想情況下,兩個(gè)多樣化的二進(jìn)制文件應該完全沒(méi)有共同的gadgets,攻擊者必須為每個(gè)多樣化的二進(jìn)制文件構建一個(gè)新的ROP鏈。

        本實(shí)驗計算了正常執行體和其他所有多樣化變體的gadgets集相似度。對于每一對執行體和變體,使用相同gadgets來(lái)確定每個(gè)可執行文件的交集,使用Jaccard算法得到相似度,并取程序集的平均值。

        對于每種多樣性技術(shù),圖2顯示了每個(gè)GNU核心程序集中ROP gadgets的平均相似度,即Jaccard相似系數。在采用的多樣化技術(shù)中,發(fā)現NOP插入效率最高,相似度不到5%,說(shuō)明相同的gadgets的數量最少,因為額外的NOP使gadgets的數量變化較大??刂屏髌教辜夹g(shù)的相似度僅為6.73%。除了NOP插入和控制流平坦外,其他的多樣化技術(shù)最終達到高于7%低于8%的相似度。

        圖2 ROP gadgets的相似度

        Figure 2 The similarity of ROP gadgets

        函數隨機化排序因打亂了函數的順序,干擾了內存中函數存放的位置,相似度較小。而細粒度指令替換和全局變量洗牌以及虛假控制流較為接近。因為ROP攻擊以ret指令為結尾,需要多次調用棧達到實(shí)現執行g(shù)adgets鏈的目的,堆棧交換引入的堆棧布局多樣性?xún)?yōu)于棧反轉和棧填充。

        Coffman等[11]采用不考慮地址的幸存gadgets占比這一指標從空間角度上度量多樣化技術(shù)。Coffman的實(shí)驗結果中,NOP插入、控制流平坦、指令替換、偽控制流這4種方法的指標依次升高,這與本文的實(shí)驗結果是吻合的,也側面證明了本文采用指標的可信度。

        圖3是每個(gè)GNU核心程序集中JOP gadgets的平均相似度。JOP gadgets的平均相似度整體高于ROP gadgets。與ROP的情況類(lèi)似,NOP插入依舊是相似度最低的多樣化技術(shù),因其帶來(lái)了較多的無(wú)用過(guò)程??刂屏髌教辜夹g(shù)相似性?xún)H為6.66%。其他的多樣化技術(shù)則維持在8.5%~9%。

        圖3 JOP gadgets的相似度

        Figure 3 The similarity of JOP gadgets

        與ROP gadgets相似度不同的是,全局變量洗牌、函數隨機化和虛假控制流比指令替換引入了更多的多樣性。因為JOP以跳轉為主,函數和變量的變化對跳轉地址的干擾更大。但是JOP攻擊通過(guò)修改棧內容來(lái)修改寄存器值,實(shí)現對棧操作,達到跳轉的目的,所以棧多樣化技術(shù)基本不分上下。

        Gadgets相似度為多樣性技術(shù)的有效性提供了一些見(jiàn)解。不同的多樣化對ROP/JOP gadgets產(chǎn)生不同程度的影響,均未使得相似度趨近于0。這一結果說(shuō)明即便采用了多樣化技術(shù),執行體的gadgets中始終有共同存在的部分。這個(gè)部分或許是一些初始指令,或許是完成攻擊的核心指令。并且不同技術(shù)對ROP和JOP產(chǎn)生的多樣性效果也不相同,取決了該多樣化技術(shù)對ROP和JOP主要利用的地址和內存布局有怎樣程度的改變。

        4.2 Gadgets鏈質(zhì)量的評估

        這個(gè)實(shí)驗的目的是分析gadgets鏈的質(zhì)量和寄存器的可用性。根據3.2.2節描述的方法,通過(guò)對單個(gè)gadget的寄存器損壞分析來(lái)衡量gadget的質(zhì)量。本文測量了圖靈完備的gadgets集的寄存器損壞情況,并通過(guò)將損壞的小工具的數量除以所有小工具的數量來(lái)計算gadgets的寄存器損壞率。

        圖4為圖靈完備的ROP gadgets的寄存器損壞率分析結果??刂屏髌教箤е?lián)p壞率高達34%,NOP插入也造成了gadgets質(zhì)量的較大損失。細粒度的指令替換和全局變量洗牌整體損壞率略高于粗粒度的函數隨機化和虛假控制流(約為4%)。這個(gè)略高的寄存器損壞率表明,細粒度多樣化技術(shù)中g(shù)adget鏈的形成和使用比粗粒度多樣化技術(shù)略難。因為棧反轉只是將棧的生長(cháng)方向對調,ROP對棧頂指針的調用受方向的干擾較小,故棧反轉的效果較差。

        圖4 圖靈完備的ROP gadgets寄存器損壞率

        Figure 4 Register damage rate of TC ROP gadgets

        圖5為圖靈完備的JOP gadgets的寄存器損壞率分析結果。JOP gadgets的整體寄存器損壞率比ROP gadgets的略低,最高不超過(guò)30%。細粒度的指令替換和全局變量洗牌與粗粒度的函數隨機化和虛假控制流損壞率接近,表明對于JOP攻擊,這兩類(lèi)技術(shù)中g(shù)adgets鏈的形成和使用成本接近。JOP攻擊對堆棧的依賴(lài)較小,對寄存器的調用也沒(méi)有ROP嚴格,因此無(wú)論是堆棧多樣性技術(shù)還是其他的多樣性技術(shù),JOP gadgets總體損壞率都略低于ROP gadgets的損壞率。

        圖5 圖靈完備的JOP gadgets寄存器損壞率

        Figure 5 Register damage rate of TC JOP gadgets

        通過(guò)衡量gadgets的寄存器損壞率,可以發(fā)現ROP和JOP對寄存器及堆棧的依賴(lài)程度不同。但多樣化技術(shù)都帶來(lái)不同程度的寄存器損壞,使gadgets鏈質(zhì)量下降,可靠性降低。未來(lái)的多樣化技術(shù)發(fā)展方向,可以考慮以增加gadgets中的寄存器損壞率為研究目標,因為越高的寄存器損壞率讓攻擊變得越不可靠,攻擊能正常使用的寄存器越少。

        4.3 Gadgets可用性的評估

        為了度量gadgets收斂時(shí)間和收集效率,本文采用3.2.3節描述的方法,收集了ROP和JOP各自所有的gadgets,并獲得了收集完整gadgets的收斂時(shí)間,再計算得到平均每秒能收集的gadgets個(gè)數。

        圖6中列出了各種生成的GNU程序集的ROP gadgets平均每秒收集的gadgets個(gè)數。從該指標可看出,多樣化技術(shù)讓ROP gadgets數量有減少的趨勢,降低了gadgets的收集效率和可用性。NOP插入帶來(lái)的減少程度是倍數級的。NOP插入讓軟件膨脹,且插入的NOP指令是無(wú)效的,很大限度增加了收斂完整gadgets的時(shí)間,導致每秒收集數量急劇降低。而堆棧級和函數指令級多樣化技術(shù)整體表現相似。因為理想情況下,這兩類(lèi)的多樣化技術(shù)不會(huì )破壞gadgets,只會(huì )將gadgets從一個(gè)位置轉移到另一個(gè)位置。由于程序執行流的混亂和寄存器分配的隨機化,控制流平坦這種基本塊級的技術(shù)對ROP gadgets的破壞程度較大。

        圖6 平均每秒收集的ROP gadgets數量

        Figure 6 Average of ROP gadgets collected per second

        JOP 的情況與ROP不太一樣。由圖7可知,除了NOP插入帶來(lái)JOP gadgets的減少外,其他多樣化技術(shù)均展現出令人意外的收斂情況。包括在其他指標中表現優(yōu)越的控制流平坦技術(shù),其指標與其余多樣化技術(shù)接近。這個(gè)情況揭示了大多數多樣化技術(shù)在一定限度上增加了JOP gadgets數量。因為JOP不用ret來(lái)連接原始操作和指令,所以需要收集更多可用的以jmp和call結尾的gadgets來(lái)達到攻擊目標。而多樣化技術(shù)對ret結尾的gadgets有削減的作用,因此在JOP攻擊中需要收集更多的jmp和call gadgets來(lái)彌補這一缺失。

        圖7 平均每秒收集的JOP gadgets數量

        Figure 7 Average of JOP gadgets collected per second

        通過(guò)分析gadgets的收斂情況可知,對于ROP來(lái)說(shuō),多樣性越大的技術(shù)使得gadgets的收集效率越低,造成的可用性越低,并且增加越多的攻擊時(shí)間成本。但是JOP受到相關(guān)影響,要完成圖靈完備攻擊則需要收集更多的JOP gadgets??偟膩?lái)說(shuō),多樣化技術(shù)讓gadgets的收斂速度和數量有改變,在實(shí)際情況中應該綜合影響兩種攻擊的平衡性去考慮多樣化技術(shù)的有效性。

        4.4 評估總結

        通過(guò)對9種多樣化技術(shù)和正常編譯產(chǎn)生的GNU核心程序集的ROP/JOP gadgets不同角度的分析發(fā)現,多樣化技術(shù)均對ROP/JOP攻擊產(chǎn)生了不同程度的干擾,會(huì )導致ROP/JOP攻擊所需的攻擊鏈空間增大,構造攻擊鏈的時(shí)間發(fā)生變化且攻擊成功率降低。綜合而言,NOP插入和控制流平坦都發(fā)揮出色,使3個(gè)指標有了較為明顯的變幅,具有更高的安全增益。其他多樣化技術(shù)根據攻擊的需求和多樣化的粒度,對攻擊呈現不同的限制效果。堆棧多樣化技術(shù)總體對執行體的改變局限于堆棧區域,帶來(lái)的安全增益也較弱。

        表3 多樣化技術(shù)評估結果

        本文的評估方法在ROP/JOP攻擊層面,對多個(gè)影響攻擊的gadgets指標進(jìn)行分析,從同質(zhì)化攻擊的不同角度對各類(lèi)軟件多樣化技術(shù)進(jìn)行定量比較,給出多樣化效果的安全增益和有效性的綜合評估結果,并能更加深入地挖掘ROP/JOP gadgets的性質(zhì),日后可根據這些指標和性質(zhì)研究更加具有安全性的多樣化技術(shù)。

        現有的ROP gadgets幸存率指標存在難以直接體現多樣化技術(shù)的安全性影響且評估方法單一的問(wèn)題。為了更加全面地從攻擊視角評估多樣化技術(shù)的有效性,本文根據常見(jiàn)的代碼重用攻擊ROP和JOP及其 gadgets的不同性質(zhì)來(lái)確定多樣化技術(shù)對網(wǎng)絡(luò )攻擊產(chǎn)生的影響,建立評估體系。本文利用GNU核心程序數據集開(kāi)展實(shí)驗,評估了9種不同的多樣化技術(shù)對gadget相似度、鏈質(zhì)量、可用性等方面的影響,從gadgets的空間角度、時(shí)間角度和質(zhì)量可靠角度3個(gè)方面進(jìn)行量化和比較,驗證了所提方法在軟件多樣化領(lǐng)域的適用性以及有效性。

        但是本文的評估方法主要評估了Linux下的X86-64架構軟件多樣化方法,未來(lái)需要進(jìn)一步對Windows系統和其他架構(如ARM的軟件多樣化技術(shù))進(jìn)行評估驗證。此外,可以創(chuàng )建新的指標,對正常軟件和多樣化軟件的函數、指令、基本塊等粒度進(jìn)行差異分析,提出一套不依賴(lài)特定攻擊方法的評估體系。

        [1] LITCHFIELD D. Buffer Underruns, DEP, ASLR and improving the exploitation prevention mechanisms (XPMs) on the Windows platform[EB].

        [2] ABADI M, BUDIU M H, ERLINGSSON ú, et al. Control-flow integrity[C]//Proceedings of the 12th ACM conference on Computer and Communications Security CCS "05. 2005: 340-353.

        [3] LIVSHITS V B, LAM M S. Finding security vulnerabilities in Java applications with static analysis[J]. 14th USENIX Security Symposium, 2005: 271-286.

        [4] 姚東, 張錚, 張高斐, 等. 多變體執行安全防御技術(shù)研究綜述[J]. 信息安全學(xué)報, 2020, 5(5): 77-94.

        YAO D, ZHANG Z, ZHANG G F, et al. A survey on multi-variant execution security defense technology[J]. Journal of Cyber Security, 2020, 5(5): 77-94.

        [5] GIUFFRIDA C, KUIJSTEN A, TANENBAUM A S. Enhanced operating system security through efficient and fine-grained address space randomization[C]//Proceedings of the 21st USENIX Conference on Security symposium. 2012: 40.

        [6] HISER J, NGUYEN-TUONG A, CO M, et al. ILR: where"d my gadgets go[C]//Proceedings of 2012 IEEE Symposium on Security and Privacy. Piscataway: IEEE Press, 2012: 571-585.

        [7] 劉鎮武, 隋然, 張錚, 等. 基于信息熵與軟件復雜度的軟件多樣性評估方法[J]. 信息工程大學(xué)學(xué)報, 2020, 21(2): 207-213.

        LIU Z W, SUI R, ZHANG Z, et al. Software diversity evaluation method based on information entropy and software complexity[J]. Journal of Information Engineering University, 2020, 21(2): 207-213.

        [8] HERNANDEZ-CASTRO J, ROSSMAN J. Measuring software diversity, with applications to security[J]. arXiv: 1310.3307, 2013.

        [9] SHANNON C E. A mathematical theory of communication[J]. Bell System Technical Journal, 1948, 27(3): 379-423.

        [10] COHEN F B. Operating system protection through program evolution[J]. Computers & Security, 1993, 12(6): 565-584.

        [11] COFFMAN J, KELLY D M, WELLONS C C, et al. ROP gadget prevalence and survival under compiler-based binary diversification schemes[C]//Proceedings of the 2016 ACM Workshop on Software Protection. 2016: 15-26.

        [12] COPPENS B, DE SUTTER B, MAEBE J. Feedback-driven binary code diversification[J]. ACM Transactions on Architecture and Code Optimization, 2013, 9(4): 1-26.

        [13] BRUMLEY D, POOSANKAM P, SONG D, et al. Automatic patch-based exploit generation is possible: techniques and implications[C]//Proceedings of 2008 IEEE Symposium on Security and Privacy. 2008: 143-157.

        [14] SEBASTIAN B, CHRISTIAN C, VIJAY G, et al. Code obfuscation against symbolic execution attacks[C]//Proceedings of the 32nd Annual Conference on Computer Security Applications (ACSAC ’16). 2016: 189-200.

        [15] SEBASTIAN B, CHRISTIAN C, AND ALEXANDER P. Predicting the resilience of obfuscated code against symbolic execution attacks via machine learning[C]//Proceedings of the 26th USENIX Security Symposium. 2017: 661-678

        [16] FABIO P, MATTEO D’A, DAVIDE B. Beyond precision and recall: understanding uses (and misuses) of similarity hashes in binary analysis[C]//Proceedings of the Eighth ACM Conference on Data and Application Security and Privacy (CODASPY ’18). 2018: 354-365.

        [17] COFFMAN J, CHAKRAVARTY A, RUSSO J A, et al. Quantifying the effectiveness of software diversity using near-duplicate detection algorithms[C]//Proceedings of the 5th ACM Workshop on Moving Target Defense. 2018: 1-10.

        [18] HOMESCU A, NEISIUS S, LARSEN P, et al. Profile-guided automated software diversity[C]//Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO). Piscataway: IEEE Press, 2013: 1-11.

        [19] ROEMER R, BUCHANAN E, SHACHAM H, et al. Return-oriented programming[J]. ACM Transactions on Information and System Security, 2012, 15(1): 1-34.

        [20] BLETSCH T, JIANG X X, FREEH V, et al. Jump-oriented programming: a new class of code-reuse attack[C]//Proceedings of ASIACCS "11. 2011.

        [20] BLETSCH T, JIANG X X, FREEH V W, et al. Jump-oriented programming: a new class of code-reuse attack[C]//Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security - ASIACCS "11. 2011: 30-40.

        [21] COHEN F B. Operating system protection through program evolution[J]. Computers & Security, 1993, 12(6): 565-584.

        [22] CRANE S, LIEBCHEN C, HOMESCU A, et al. Readactor: practical code randomization resilient to memory disclosure[C]// Proceedings of 2015 IEEE Symposium on Security and Privacy. Piscataway: IEEE Press, 2015: 763-780.

        [23] JUNOD P, RINALDINI J, WEHRLI J, et al. Obfuscator-LLVM: software protection for the masses[C]//Proceedings of 2015 IEEE/ACM 1st International Workshop on Software Protection. 2015: 3-9.

        [24] L′ASZL′O T, KISS ′A. Obfuscating C++ programs via control flow flattening[C]//Processing of Annales Universitatis Scientarum 25 Budapestinensis de Rolando E¨otv¨os Nominatae, Sectio. 2009.

        [25] COLLBERG C, THOMBORSON C, LOW D. Manufacturing cheap, resilient, and stealthy opaque constructs[C]//Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL "98.1998: 184-196.

        [26] AHMED S, XIAO Y, SNOW K Z, et al. Methodologies for quantifying (re-) randomization security and timing under JIT-ROP[C]// Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. 2020: 1803-1820.

        Software diversity evaluation method based on the properties of ROP/JOP gadgets

        CHI Yuning, GUO Yunfei, WANG Yawen, HU Hongchao

        Information Engineering University, Zhengzhou 450001, China

        In order to reduce the risk of rapid spread of homogeneous attacks in network systems, and enhance network and software security, software diversification technologies are applied widely nowadays. Software diversification aims to generate functionally equivalent but internally changed program variants, thereby alter a single operating environment and mitigating homogenization attacks. The existing diversified technical evaluation index ROP gadgets survival rate is difficult to directly reflect the safety impact and the evaluation method is single. In order to evaluate the effectiveness of the diversification method more comprehensively and effectively, a software diversification evaluation method based on the properties of ROP/JOP gadgets is proposed, by analyzing common code reuse attacks, and turns abstract quantification into concrete indicators evaluates the security gain and effect of diversified methods from three aspects of space, time and quality. The method first discusses how diversification techniques affect ROP/JOP attacks according to the three properties of gadgets similarity, damage degree and availability. Nine kinds of diversification methods, such as instruction replacement, NOP insertion, and control flow flattening, are used to diversify the GNU coreutils assembly to generate diversification assembly. Experiments based on the property of gadgets are carried out on the diverse assemblies, and the effectiveness of different diversification methods and the impact on attacks are evaluated according to the experimental results. The experimental results show that this method can accurately evaluate the security gain of software diversification methods, the diversification technology will lead to the increase of the attack chain space required by the ROP/JOP attack, the longer time to construct the attack chain and the lower the attack success rate. The effects of different diversification methods are different, it has a guiding role for the follow-up research on diversified technologies with higher safety gains.

        software diversification, ROP/JOP attack, gadgets properties, safety gain evaluation

        TP393

        A

        10.11959/j.issn.2096?109x.2022086

        2021?09?28;

        2021?12?28

        遲宇寧,cyn_091981@163.com

        國家重點(diǎn)研發(fā)計劃(2021YFB1006200,2021YFB1006201);
        國家自然科學(xué)基金(62072467)

        The National Key R&D Program of China (2021YFB1006200, 2021YFB1006201), The National Natural Science Foundation of China (62072467)

        遲宇寧, 郭云飛, 王亞文, 等. 基于ROP/JOP gadgets性質(zhì)的軟件多樣化評估方法[J]. 網(wǎng)絡(luò )與信息安全學(xué)報, 2022, 8(6): 135-145.

        CHI Y N, GUO Y F, WANG Y W, et al. Software diversity evaluation method based on the properties of ROP/JOP gadgets[J]. Chinese Journal of Network and Information Security, 2022, 8(6): 135-145.

        遲宇寧(1995?),女,云南楚雄人,信息工程大學(xué)碩士生,主要研究方向為網(wǎng)絡(luò )主動(dòng)防御、軟件多樣化。

        郭云飛(1963?),男,河南鄭州人,信息工程大學(xué)教授、博士生導師,主要研究方向為網(wǎng)絡(luò )空間安全、云安全和電信網(wǎng)安全。

        王亞文(1990?),男,河南鄭州人,信息工程大學(xué)助理研究員,主要研究方向為擬態(tài)防御和云計算。

        扈紅超(1982?),男,河南商丘人,信息工程大學(xué)教授、博士生導師,主要研究方向為網(wǎng)絡(luò )空間安全和主動(dòng)防御技術(shù)。

        猜你喜歡寄存器指令程序STM32和51單片機寄存器映射原理異同分析有色金屬設計(2022年4期)2022-02-04《單一形狀固定循環(huán)指令G90車(chē)外圓仿真》教案設計學(xué)校教育研究(2020年11期)2020-06-08Lite寄存器模型的設計與實(shí)現計算機應用(2020年5期)2020-06-07試論我國未決羈押程序的立法完善人大建設(2019年12期)2019-05-21移位寄存器及算術(shù)運算應用電子技術(shù)與軟件工程(2018年1期)2018-03-22“程序猿”的生活什么樣瞭望東方周刊(2017年42期)2017-12-05英國與歐盟正式啟動(dòng)“離婚”程序程序環(huán)球時(shí)報(2017-03-30)2017-03-30創(chuàng )衛暗訪(fǎng)程序有待改進(jìn)中國衛生(2015年3期)2015-11-19中斷與跳轉操作對指令串的影響科技傳播(2015年20期)2015-03-25一種基于滑窗的余度指令判別算法西安航空學(xué)院學(xué)報(2014年5期)2014-07-13
        国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

        <dd id="saiiy"></dd>
        1. <s id="saiiy"></s>

          1. <s id="saiiy"></s>
            1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>