国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于二進(jìn)制程序的動(dòng)態(tài)污點(diǎn)分析技術(shù)研究綜述

2020-11-26 01:36黃冬秋楊佳庚田志宏
關(guān)鍵詞:污點(diǎn)二進(jìn)制漏洞

黃冬秋, 韓 毅, 楊佳庚, 田志宏

(1. 廣州大學(xué) 網(wǎng)絡(luò)空間先進(jìn)技術(shù)研究院, 廣東 廣州 510006; 2. 鵬城實(shí)驗(yàn)室 網(wǎng)絡(luò)空間安全研究中心, 廣東 深圳 518055)

0 引 言

隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,計(jì)算機(jī)信息技術(shù)已經(jīng)滲透到人們生活的方方面面,計(jì)算機(jī)信息技術(shù)在帶給人們便捷的同時(shí),也帶來了眾多的安全隱患.例如,2019年2月,遺留19年之久的WinRAR高危代碼執(zhí)行漏洞,使5億以上的用戶陷入壓縮危機(jī);5月,堪比“永恒之藍(lán)”的微軟蠕蟲級(jí)漏洞“BlueKeep”導(dǎo)致近100萬臺(tái)設(shè)備置于高危漏洞之下;7月,iOS系統(tǒng)的6個(gè)“無交互”安全漏洞,等等.據(jù)統(tǒng)計(jì),2019年國(guó)家信息安全漏洞庫(kù)(CNNVD)公布漏洞數(shù)量17 316個(gè),美國(guó)國(guó)家漏洞庫(kù)(NVD)公布漏洞數(shù)量17 314個(gè),公共漏洞披露平臺(tái)(CVE)公布漏洞數(shù)量16 778個(gè).倘若這些漏洞被一些國(guó)家級(jí)黑客組織利用,無疑將會(huì)成為國(guó)與國(guó)博弈的重要“軍火武器”.

計(jì)算機(jī)軟件中的安全漏洞已成為信息系統(tǒng)安全的主要威脅,隨著程序變得越來越復(fù)雜、龐大和難以處理,軟件安全漏洞發(fā)掘分析技術(shù)成為安全界的研究熱點(diǎn).根據(jù)研究對(duì)象不同,軟件安全漏洞挖掘技術(shù)可以劃分為基于源碼的漏洞挖掘和基于二進(jìn)制文件的漏洞挖掘兩大類.基于源碼的漏洞挖掘首要條件是獲取軟件的源代碼,安全人員可以通過分析開源項(xiàng)目的源代碼發(fā)現(xiàn)項(xiàng)目中存在的安全漏洞.靜態(tài)分析技術(shù)是基于源代碼的漏洞挖掘的典型技術(shù),通過詞法分析、語法分析、語義分析等技術(shù)檢測(cè)程序中潛在的安全問題.然而,并不是所有軟件都是開放源代碼,大多數(shù)商用軟件的源代碼很難獲得,因此,安全人員引入基于目標(biāo)代碼的漏洞挖掘技術(shù).基于二進(jìn)制文件的漏洞挖掘技術(shù)首先將二進(jìn)制文件進(jìn)行反匯編,獲取到二進(jìn)制文件的匯編代碼;然后對(duì)匯編代碼進(jìn)行切片[1];最后通過跟蹤分析反匯編出來的代碼,來判斷是否存在漏洞.動(dòng)態(tài)污點(diǎn)分析(DTA)技術(shù)作為有效而實(shí)用的信息流分析技術(shù),被廣泛應(yīng)用于漏洞挖掘、未知漏洞檢測(cè)、惡意軟件檢測(cè)和分析、漏洞利用等方面.

動(dòng)態(tài)污點(diǎn)分析技術(shù)是將不受信任的來源的輸入數(shù)據(jù)視為污染數(shù)據(jù),然后監(jiān)視程序的執(zhí)行情況以跟蹤污染數(shù)據(jù)傳播(例如數(shù)據(jù)被污染操作),并檢查污染數(shù)據(jù)何時(shí)被使用[2].例如,緩沖區(qū)溢出和格式化字符串之類的漏洞將受污染的數(shù)據(jù)用作跳轉(zhuǎn)地址或格式化字符串.

動(dòng)態(tài)污點(diǎn)分析技術(shù)主要包含三個(gè)階段(圖1):①污點(diǎn)標(biāo)記,即將來自不受信任來源的數(shù)據(jù)標(biāo)記為污點(diǎn)數(shù)據(jù),并設(shè)置污點(diǎn)標(biāo)簽,污點(diǎn)標(biāo)記存儲(chǔ)在污點(diǎn)標(biāo)記圖中,亦稱為影子內(nèi)存;②污點(diǎn)傳播,即在程序執(zhí)行過程中,提取程序語義信息,識(shí)別程序操作,根據(jù)污點(diǎn)傳播規(guī)則判別每條指令對(duì)應(yīng)的目標(biāo)操作數(shù)是否被污染,寄存器和內(nèi)存內(nèi)容是否被非法改動(dòng);③污點(diǎn)檢測(cè),是在程序運(yùn)行過程中,檢測(cè)某一寄存器或內(nèi)存位置中的數(shù)據(jù)是否被污染,以及對(duì)應(yīng)的污染數(shù)據(jù).

圖1 動(dòng)態(tài)污點(diǎn)分析三個(gè)階段(以一個(gè)污點(diǎn)字節(jié)為例)Fig.1 Three stages of dynamic taint analysis (Take a tainted byte as an example)

由于動(dòng)態(tài)污點(diǎn)分析技術(shù)在網(wǎng)絡(luò)空間安全中發(fā)揮著重要作用,越來越多的研究者開始關(guān)注動(dòng)態(tài)污點(diǎn)分析技術(shù),對(duì)動(dòng)態(tài)污點(diǎn)分析技術(shù)進(jìn)行研究、分析、改進(jìn)和擴(kuò)展,并制定符合目標(biāo)需要的動(dòng)態(tài)污點(diǎn)分析框架.本文從構(gòu)建一個(gè)可用、可靠、高效的動(dòng)態(tài)污點(diǎn)分析系統(tǒng)的角度出發(fā),重點(diǎn)關(guān)注動(dòng)態(tài)污點(diǎn)分析技術(shù)的研究現(xiàn)狀、應(yīng)用領(lǐng)域、存在的問題與挑戰(zhàn)和未來發(fā)展方向等.

1 二進(jìn)制程序漏洞檢測(cè)技術(shù)概述

二進(jìn)制程序漏洞挖掘是一個(gè)多種技術(shù)相互結(jié)合、共同使用和優(yōu)勢(shì)互補(bǔ)的過程,目前較為常見的二進(jìn)制程序漏洞挖掘分析技術(shù)主要有手工測(cè)試技術(shù)、補(bǔ)丁比對(duì)技術(shù)、靜態(tài)分析技術(shù)、動(dòng)態(tài)分析技術(shù)、模糊測(cè)試技術(shù)和動(dòng)態(tài)污點(diǎn)分析技術(shù)等.

1.1 手工測(cè)試技術(shù)

手工測(cè)試技術(shù)[3]是測(cè)試工程師將手動(dòng)準(zhǔn)備好的包含有效輸入和無效輸入的測(cè)試用例,發(fā)送給客戶端或服務(wù)器目標(biāo)服務(wù)程序,根據(jù)目標(biāo)程序的狀態(tài)和對(duì)不同輸入的反應(yīng),識(shí)別程序問題的漏洞檢測(cè)技術(shù).它是軟件測(cè)試中最嚴(yán)格和最古老的方法.這種漏洞檢測(cè)技術(shù)可由測(cè)試者獨(dú)立完成,不需要額外的輔助工具,但是高度依賴測(cè)試者,需要測(cè)試人員對(duì)測(cè)試程序比較了解.手工測(cè)試是一項(xiàng)繁重的工作,需要測(cè)試人員具有一定的耐心、觀察力、投機(jī)性、創(chuàng)新性和開放性等技巧.在大型軟件應(yīng)用程序或數(shù)據(jù)集覆蓋率非常大的應(yīng)用程序上,很難進(jìn)行重復(fù)的手動(dòng)測(cè)試[4].

1.2 補(bǔ)丁比對(duì)技術(shù)

二進(jìn)制補(bǔ)丁比對(duì)技術(shù)[5]主要用于對(duì)“已知”漏洞的挖掘,即通過對(duì)同一程序兩個(gè)連續(xù)或接近版本進(jìn)行比較,識(shí)別新版本中修補(bǔ)的內(nèi)容.由于程序安全補(bǔ)丁會(huì)攜帶有關(guān)脆弱點(diǎn)信息,因此,通過程序分析技術(shù)提取補(bǔ)丁中的關(guān)鍵漏洞信息,推斷程序漏洞利用的攻擊代碼是黑客進(jìn)行漏洞利用的常用手段.經(jīng)驗(yàn)豐富的安全專家或黑客甚至能在很短的時(shí)間完成漏洞挖掘和利用的過程,但這種方法不適合文件修改較多的情況.

1.3 靜態(tài)分析技術(shù)

靜態(tài)分析技術(shù)[6]是在沒有數(shù)據(jù)輸入且沒有運(yùn)行代碼的情況下檢查程序的源代碼或者反匯編代碼(這里指反匯編代碼),通過詞法分析、語法分析和語義分析等檢測(cè)程序中潛在的安全問題.從匯編層面查找系統(tǒng)漏洞的方法是通用的,但這種方法卻費(fèi)時(shí)費(fèi)力.另外,這種方法對(duì)分析人員技術(shù)水平要求較高,該方法的不足之處是無法檢測(cè)到程序動(dòng)態(tài)運(yùn)行過程中產(chǎn)生的安全問題.

1.4 動(dòng)態(tài)分析技術(shù)

動(dòng)態(tài)分析技術(shù)是在調(diào)試器中對(duì)無源碼的二進(jìn)制程序執(zhí)行運(yùn)行時(shí)的分析,通過對(duì)正在運(yùn)行的程序進(jìn)行屬性(運(yùn)行狀態(tài)、內(nèi)存使用狀況、寄存器的值等)分析,進(jìn)而發(fā)現(xiàn)程序潛在的漏洞.盡管動(dòng)態(tài)分析不能證明程序滿足特定的屬性,但是它可以檢測(cè)到違反屬性的行為,并且可以向程序員提供有關(guān)程序行為的有用信息.盡管動(dòng)態(tài)分析技術(shù)可以滿足某些安全檢測(cè)的需要,但是這種技術(shù)效率低,對(duì)分析人員的技術(shù)水平要求較高.另外,在大型軟件應(yīng)用程序或數(shù)據(jù)集覆蓋率非常大的應(yīng)用程序上,動(dòng)態(tài)分析技術(shù)具有很大的限制.

1.5 模糊測(cè)試技術(shù)

模糊測(cè)試技術(shù)通過向待測(cè)試的閉源軟件輸入一組隨機(jī)數(shù)據(jù),監(jiān)視程序運(yùn)行、記錄程序運(yùn)行中的異常行為,最后通過記錄的異常行為,輸入定位軟件的錯(cuò)誤位置.模糊測(cè)試技術(shù)的顯著優(yōu)點(diǎn)是與被測(cè)試程序的關(guān)聯(lián)性較小,且操作簡(jiǎn)單.但模糊測(cè)試技術(shù)本身也有不少局限性,因此,研究者們經(jīng)常通過引入一些新技術(shù)來提升模糊測(cè)試的代碼覆蓋率、測(cè)試用例的有效性和模型的智能性.例如,機(jī)器學(xué)習(xí)、符號(hào)執(zhí)行和動(dòng)態(tài)污點(diǎn)分析等技術(shù)經(jīng)常被引入模糊測(cè)試模型中.

1.6 動(dòng)態(tài)污點(diǎn)分析技術(shù)

動(dòng)態(tài)污點(diǎn)分析技術(shù)能夠從攻擊者進(jìn)行漏洞利用的本質(zhì)出發(fā),分析污點(diǎn)數(shù)據(jù)在程序運(yùn)行過程中的流動(dòng)路徑和影響范圍.從宏觀層面分析,動(dòng)態(tài)污點(diǎn)分析技術(shù)是基于動(dòng)態(tài)二進(jìn)制插樁技術(shù),在不破壞程序原有邏輯的基礎(chǔ)上插入一些信息收集代碼,進(jìn)而獲得二進(jìn)制程序運(yùn)行過程中的相關(guān)信息;接著,增加一個(gè)污點(diǎn)標(biāo)記來標(biāo)識(shí)不安全數(shù)據(jù)或者被不安全數(shù)據(jù)污染的數(shù)據(jù),污點(diǎn)信息存儲(chǔ)在影子內(nèi)存模塊;根據(jù)程序的不同指令類型和指令操作數(shù),設(shè)計(jì)相應(yīng)的污點(diǎn)傳播規(guī)則,傳播程序執(zhí)行過程中污點(diǎn)標(biāo)記對(duì)寄存器和內(nèi)存產(chǎn)生的影響;最后,通過分析程序的數(shù)據(jù)流特征,檢測(cè)程序中潛藏的漏洞.

2 基于二進(jìn)制程序的DTA技術(shù)

動(dòng)態(tài)污點(diǎn)分析技術(shù)于2005年由Newsome等[2]在模型TaintCheck[2]中正式提出,動(dòng)態(tài)污點(diǎn)分析中污點(diǎn)(Taint)的概念首先由腳本語言Perl引入.動(dòng)態(tài)污點(diǎn)分析的提出主要基于以下現(xiàn)象:由于攻擊者通常利用輸入去替換程序執(zhí)行過程中的某一受信任來源的值,進(jìn)而非法更改程序的執(zhí)行.例如,攻擊者可能試圖通過自己的數(shù)據(jù)去覆蓋跳轉(zhuǎn)地址或格式化字符串指向的值,達(dá)到成功利用的效果.

動(dòng)態(tài)污點(diǎn)分析能夠?qū)崿F(xiàn)在程序執(zhí)行時(shí)跟蹤和分析程序標(biāo)記的數(shù)據(jù)流,主要包含污點(diǎn)標(biāo)記、污點(diǎn)傳播及污點(diǎn)檢測(cè)等三個(gè)階段.當(dāng)內(nèi)存字節(jié)被標(biāo)記為污點(diǎn)源時(shí),污點(diǎn)字節(jié)的污點(diǎn)信息會(huì)相應(yīng)地存儲(chǔ)在影子內(nèi)存中.例如污染字節(jié)與未污染的字節(jié)進(jìn)行add運(yùn)算時(shí),被污染運(yùn)算結(jié)果的污染信息也會(huì)相應(yīng)地存儲(chǔ)在影子內(nèi)存中,安全人員可以訪問影子內(nèi)存信息,查詢對(duì)應(yīng)字節(jié)的污染狀態(tài).

2.1 污點(diǎn)標(biāo)記

動(dòng)態(tài)污點(diǎn)分析將來自不受信任來源的數(shù)據(jù)標(biāo)記為污點(diǎn)數(shù)據(jù),并設(shè)置污點(diǎn)標(biāo)簽,污點(diǎn)標(biāo)記存儲(chǔ)在污點(diǎn)標(biāo)記圖中,亦稱為影子內(nèi)存.根據(jù)libdft[7]模型中的污點(diǎn)標(biāo)記模型,可以得到如圖2所示的污染標(biāo)記圖,示例中以一個(gè)bit位標(biāo)識(shí)一個(gè)字節(jié)的污染狀態(tài),使用setb(addr)存儲(chǔ)一個(gè)字節(jié)的污染狀態(tài),setw(addr)存儲(chǔ)兩個(gè)字節(jié)的污染狀態(tài).

圖2 污染標(biāo)記圖Fig.2 Taint bitmap

污點(diǎn)標(biāo)記方式很大程度影響著污點(diǎn)傳播處理和污點(diǎn)信息存儲(chǔ)的效率.污點(diǎn)標(biāo)記粒度可以標(biāo)記到內(nèi)存塊、單個(gè)字節(jié)、單個(gè)位等數(shù)據(jù)單元.污點(diǎn)標(biāo)記粒度越小,所執(zhí)行的動(dòng)態(tài)污點(diǎn)分析會(huì)越細(xì)致,但需要更多的存儲(chǔ)空間來存儲(chǔ)標(biāo)簽.污點(diǎn)標(biāo)簽越大則通用性越強(qiáng),需要更大的存儲(chǔ)空間.

2.2 污點(diǎn)傳播

動(dòng)態(tài)污點(diǎn)分析的目的是跟蹤污點(diǎn)源和污點(diǎn)槽之間的信息流動(dòng).污點(diǎn)傳播主要用于確定程序執(zhí)行時(shí)污點(diǎn)如何精確流動(dòng)[8].例如,當(dāng)指令的源操作數(shù)被污染時(shí),指令的目的操作數(shù)也會(huì)變成污點(diǎn)數(shù)據(jù).

動(dòng)態(tài)污點(diǎn)傳播在程序執(zhí)行過程中,提取程序語義信息,識(shí)別程序操作,根據(jù)污點(diǎn)傳播規(guī)則判別每條指令對(duì)應(yīng)的目標(biāo)操作數(shù)是否被污染、寄存器和內(nèi)存內(nèi)容是否被非法改動(dòng).給定一個(gè)污點(diǎn)的傳播規(guī)則,就可以通過動(dòng)態(tài)污點(diǎn)分析語義定義的語義跟蹤污點(diǎn)的傳播.污點(diǎn)傳播規(guī)則受污點(diǎn)標(biāo)記粒度、指令類別等因素的影響.

二進(jìn)制代碼級(jí)的污點(diǎn)傳播分析有兩種粒度:一種是直接分析X86等指令集,另一種是分析二進(jìn)制代碼翻譯后的中間語言(IR)[9].例如,Pin框架直接基于X86指令集分析,DECAF++基于QEMU模擬器將二進(jìn)制代碼翻譯成中間語言級(jí)別.QEMU使用Tiny Code Generator(TCG)將目標(biāo)代碼翻譯成主機(jī)代碼.

由于二進(jìn)制級(jí)別指令集較為復(fù)雜,并不是所有的指令都是污點(diǎn)信息傳播指令,因此,在編寫污點(diǎn)傳播規(guī)則時(shí)要有選擇地編寫指令的傳播規(guī)則.污染傳播指令可劃分為五類:數(shù)據(jù)移動(dòng)指令(LOAD、STORE、MOVE、PUSH和POP等[10])、算數(shù)運(yùn)算指令(ADD、SUB和XOR等)、條件跳轉(zhuǎn)指令(JZ)、函數(shù)級(jí)間接污染指令(strncpy函數(shù)對(duì)應(yīng)的call指令)和函數(shù)級(jí)敏感函數(shù)指令(scanf、sprintf和strcpy等對(duì)應(yīng)的call指令).污點(diǎn)傳播過程中,不恰當(dāng)?shù)奈埸c(diǎn)傳播規(guī)則經(jīng)常會(huì)引起“過污染”和“欠污染”問題.如圖3所示,若寄存器eax被污染而寄存器ebx沒有被污染,則寄存器eax的污染將保持不變,但是當(dāng)寄存器ebx的值為0且ebx未受污染,污染規(guī)則未清除寄存器eax的污染,則這條規(guī)則是不合理的,將會(huì)導(dǎo)致過污染.過污染和欠污染問題是污點(diǎn)分析引擎面臨的主要技術(shù)挑戰(zhàn).

圖3 過污染示意圖Fig.3 Over-tainting example

2.3 污點(diǎn)檢測(cè)

污點(diǎn)檢測(cè)是在程序運(yùn)行過程中,檢測(cè)某一寄存器或內(nèi)存位置中的數(shù)據(jù)是否被污染,以及對(duì)應(yīng)的污染數(shù)據(jù)有哪些.污點(diǎn)數(shù)據(jù)越權(quán)使用是污點(diǎn)檢測(cè)過程的重點(diǎn),合理制定檢測(cè)規(guī)則對(duì)污點(diǎn)檢測(cè)結(jié)果的正確性至關(guān)重要,常見的檢測(cè)規(guī)則有:將污點(diǎn)數(shù)據(jù)作為跳轉(zhuǎn)地址、將污點(diǎn)數(shù)據(jù)作為執(zhí)行的代碼和污點(diǎn)數(shù)據(jù)受控寫入等.例如,基于動(dòng)態(tài)污點(diǎn)分析的漏洞類型檢測(cè)系統(tǒng)在污點(diǎn)檢測(cè)模塊,會(huì)基于一定的安全規(guī)則檢測(cè)出程序的潛在漏洞類型,如緩沖區(qū)溢出、格式化字符串和堆溢出等;基于動(dòng)態(tài)污點(diǎn)分析的惡意代碼通信協(xié)議逆向分析系統(tǒng),會(huì)基于污點(diǎn)檢測(cè)模塊將網(wǎng)絡(luò)數(shù)據(jù)流作為分析對(duì)象,依據(jù)協(xié)議字段的取值變化頻率和特征推斷得到協(xié)議格式.

3 DTA相關(guān)技術(shù)

本節(jié)將梳理進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析和全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析中涉及到的相關(guān)理論背景,包括進(jìn)程級(jí)動(dòng)態(tài)二進(jìn)制插樁(動(dòng)態(tài)二進(jìn)制插樁)、虛擬化和虛擬機(jī)自省等技術(shù)的基本原理、相關(guān)定義和面臨的問題與存在的挑戰(zhàn).

3.1 動(dòng)態(tài)二進(jìn)制插樁

插樁技術(shù)是一種用于在應(yīng)用程序中插入額外代碼以觀察其行為的技術(shù)[10].根據(jù)插樁的不同階段和不同代碼級(jí)別,通常劃分為:基于源代碼的插樁和基于中間代碼的插樁、基于靜態(tài)二進(jìn)制的插樁和基于動(dòng)態(tài)二進(jìn)制的插樁.一般地,源代碼插樁技術(shù)需要對(duì)源碼進(jìn)行修改和編譯;基于中間代碼的插樁需要有針對(duì)性地進(jìn)行修改,實(shí)現(xiàn)難度較大,但通用性更強(qiáng);靜態(tài)二進(jìn)制插樁技術(shù)在程序執(zhí)行前插入額外的代碼和數(shù)據(jù)并重組二進(jìn)制程序;動(dòng)態(tài)二進(jìn)制插樁在程序運(yùn)行時(shí)實(shí)時(shí)地插入額外代碼和數(shù)據(jù),進(jìn)而觀察程序的運(yùn)行行為.

動(dòng)態(tài)二進(jìn)制插樁分析關(guān)注的是程序運(yùn)行時(shí)的真實(shí)行為,直接在程序執(zhí)行過程中監(jiān)視進(jìn)程并插入指令流,探測(cè)程序運(yùn)行的重要數(shù)據(jù)信息,通過對(duì)重要數(shù)據(jù)信息分析,進(jìn)行程序分析、漏洞檢測(cè)等.例如,利用一個(gè)動(dòng)態(tài)二進(jìn)制插樁工具實(shí)現(xiàn)簡(jiǎn)單的基本塊的統(tǒng)計(jì)功能,為了實(shí)現(xiàn)這一點(diǎn),需要基于DBI引擎的API來檢測(cè)每個(gè)基本塊的最后一條指令,并回調(diào)一個(gè)遞增計(jì)數(shù)器的函數(shù)[10].目前應(yīng)用比較廣泛的動(dòng)態(tài)二進(jìn)制插樁框架主要有Dyninst[11]、DynamoRIO[12]、Pin[13]、Valgrind[14]、Triton[15]和Frida[16]等.以PIN平臺(tái)為例,動(dòng)態(tài)二進(jìn)制插樁框架如圖4所示.

圖4 PIN平臺(tái)動(dòng)態(tài)二進(jìn)制插樁框架Fig.4 Dynamic binary instrumentation framework based on PIN

動(dòng)態(tài)二進(jìn)制插樁技術(shù)正在被廣泛應(yīng)用于軟件工程、程序分析和計(jì)算機(jī)安全等問題.例如,軟件工程師希望通過動(dòng)態(tài)二進(jìn)制插樁系統(tǒng)了解自己所開發(fā)軟件或系統(tǒng)的性能和運(yùn)行行為,硬件工程師使用動(dòng)態(tài)二進(jìn)制插樁系統(tǒng)測(cè)試不受當(dāng)前硬件支持的新指令,軟件測(cè)試工程師使用動(dòng)態(tài)二進(jìn)制插樁系統(tǒng)對(duì)特定程序或系統(tǒng)通過插樁測(cè)試進(jìn)行缺陷檢測(cè)等.

由于這種進(jìn)程級(jí)別的二進(jìn)制插樁框架分析程序和原始程序共享相同的地址空間,均可在CPU ring3應(yīng)用程序?qū)踊蛘遰ing0操作系統(tǒng)內(nèi)核層執(zhí)行,分析代碼具有與被檢測(cè)進(jìn)程相同的特權(quán)[17],這種插樁技術(shù)用于分析惡意軟件時(shí),分析程序可能被篡改.因此,以Pin為代表的進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析框架無法檢測(cè)操作系統(tǒng)內(nèi)核漏洞.在分析惡意軟件時(shí),一旦分析程序被惡意篡改,將會(huì)直接導(dǎo)致分析結(jié)果出錯(cuò).

3.2 虛擬化技術(shù)

一般地,全系統(tǒng)污點(diǎn)分析工具的實(shí)現(xiàn)基于虛擬化技術(shù),分析進(jìn)程與被檢測(cè)進(jìn)程執(zhí)行完全隔離,被檢測(cè)進(jìn)程在來賓虛擬機(jī)內(nèi)部執(zhí)行,分析進(jìn)程在來賓虛擬機(jī)外部執(zhí)行,具有更好的透明性和抗篡改性.

虛擬化是通過應(yīng)用一種或多種概念或技術(shù)(例如硬件和軟件分區(qū)、分時(shí),部分或完整的機(jī)器仿真、模擬和服務(wù)質(zhì)量等),將計(jì)算機(jī)資源劃分為多個(gè)執(zhí)行環(huán)境的框架或方法[18].虛擬化的起源可以追溯到六十年代和七十年代的大型機(jī),虛擬化最初被認(rèn)為是一種邏輯上劃分大型機(jī)以允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行的方法[19].維基百科對(duì)虛擬化這樣定義:在計(jì)算中,虛擬化是指創(chuàng)建某物虛擬(而非實(shí)際)版本的行為,包括虛擬計(jì)算機(jī)硬件平臺(tái)、存儲(chǔ)設(shè)備和計(jì)算機(jī)網(wǎng)絡(luò)資源等[20].現(xiàn)代計(jì)算機(jī)足夠強(qiáng)大,可以使用虛擬化來呈現(xiàn)許多較小的虛擬機(jī)(VM)的錯(cuò)覺,每個(gè)虛擬機(jī)運(yùn)行一個(gè)單獨(dú)的操作系統(tǒng)實(shí)例[21].虛擬化的本質(zhì)是給用戶提供端到端的資源虛擬化服務(wù),提高用戶對(duì)資源的使用效率和管理能力.根據(jù)虛擬化的運(yùn)行模式可劃分為容器虛擬化、模擬器虛擬化和庫(kù)虛擬化.

例如模擬器QEMU就屬于模擬器虛擬化,它通過模擬器模擬出所有的硬件.QEMU是純軟件實(shí)現(xiàn)的虛擬化模擬器,可以在虛擬機(jī)中運(yùn)行未修改的目標(biāo)操作系統(tǒng)(例如Windows或Linux)及其所有應(yīng)用程序,非常靈活、可移植.我們最熟悉的就是QEMU可以模擬出一臺(tái)能夠獨(dú)立運(yùn)行操作系統(tǒng)的虛擬機(jī).QEMU基于Hypervisor(虛擬機(jī)監(jiān)視器)創(chuàng)建、運(yùn)行和管理各個(gè)虛擬機(jī),它的具體工作原理如下:虛擬機(jī)監(jiān)視器Hypervisor從磁盤映像加載二進(jìn)制機(jī)器代碼,使用TCG(微代碼生成器)將其轉(zhuǎn)換為本機(jī)機(jī)器代碼,連接到虛擬或?qū)嶋H設(shè)備,并啟動(dòng)軟件MMU(軟件內(nèi)存管理單元),然后開始在磁盤映像中模擬操作系統(tǒng).

就當(dāng)前來看,模擬器虛擬化持續(xù)擴(kuò)張遇到的障礙主要集中在虛擬化的性能上.研究者們相繼推出各種方法,進(jìn)行提升模擬器虛擬化的性能.例如,開啟KVM的QEMU[22]可以通過KVM模塊提供的系統(tǒng)調(diào)用接口進(jìn)行內(nèi)核設(shè)置,為QEMU虛擬機(jī)提供一定的硬件虛擬化加速,從而提高虛擬機(jī)的性能.KVM是通過調(diào)用Linux本身內(nèi)核功能,實(shí)現(xiàn)對(duì)CPU的底層虛擬化和內(nèi)存虛擬化.

3.3 虛擬機(jī)自省技術(shù)

隨著虛擬化技術(shù)在X86平臺(tái)上突飛猛進(jìn)的發(fā)展,虛擬化技術(shù)重新引起了虛擬化市場(chǎng)的廣泛關(guān)注,導(dǎo)致了監(jiān)控虛擬機(jī)行為的虛擬機(jī)自省技術(shù)及工作的迅速發(fā)展.虛擬機(jī)自省技術(shù)[23]由Garfinkel等在2003年提出.虛擬機(jī)自省技術(shù)根據(jù)從虛擬機(jī)外部檢查和分析來賓虛擬機(jī)操作系統(tǒng)的內(nèi)部狀態(tài)信息,解決了“越來越多先進(jìn)技術(shù)成功實(shí)現(xiàn)攻擊或逃避入侵檢測(cè)系統(tǒng),進(jìn)而防止入侵檢測(cè)系統(tǒng)檢測(cè)或報(bào)告出惡意活動(dòng)”的問題,并在很大程度上增強(qiáng)了逃避和攻擊的抵抗力.并避免了對(duì)抗對(duì)入侵檢測(cè)系統(tǒng)攻擊和躲避技術(shù)產(chǎn)生的兩個(gè)相互矛盾的要求,即受監(jiān)視系統(tǒng)狀態(tài)的可見性和檢測(cè)系統(tǒng)與攻擊者之間的隔離度.

虛擬機(jī)自省技術(shù)面臨的主要挑戰(zhàn)就是語義鴻溝[24]問題.通常,在進(jìn)行虛擬機(jī)自省時(shí),獲取到的來賓虛擬機(jī)操作系統(tǒng)的管理程序視圖只有硬件寄存器和原始二進(jìn)制數(shù)據(jù),沒有高層語義信息,這種差異被稱為語義鴻溝.為了彌合語義鴻溝,提高虛擬機(jī)自省的準(zhǔn)確性和高效性,研究者們分別從虛擬化原理、操作系統(tǒng)原理等不同角度進(jìn)行探討.例如Garfinkel等[23]在提出虛擬機(jī)自省概念時(shí),給出的采用結(jié)合操作系統(tǒng)接口庫(kù)和Linux內(nèi)核崩潰轉(zhuǎn)儲(chǔ)分析工具檢查內(nèi)存和寄存器等設(shè)備信息的方式彌合語義鴻溝;VMwatcher[25]通過解析內(nèi)核數(shù)據(jù)結(jié)構(gòu)(如文件、目錄和進(jìn)程)進(jìn)行重構(gòu)語義視圖,獲得虛擬機(jī)寄存器、內(nèi)存和磁盤等狀態(tài)的全部信息;VIX[26]參照虛擬機(jī)內(nèi)部文件信息將讀取到的字節(jié)信息還原成高級(jí)語義信息,另外,VIX提供了監(jiān)控來賓虛擬機(jī)內(nèi)部進(jìn)程、網(wǎng)絡(luò)端口等的命令和接口.常見的虛擬機(jī)自省工具有VMwatcher[25]、VIX[26]、Virtuoso[27]和VMST[28]等.

4 基于二進(jìn)制程序的DTA技術(shù)研究現(xiàn)狀

動(dòng)態(tài)污點(diǎn)分析在許多研究問題中具有舉足輕重的作用,例如漏洞類型檢測(cè)、惡意軟件分析和協(xié)議逆向工程等.自2005年卡內(nèi)基梅隆大學(xué)的Newsome等[2]基于開源模擬器Valgrind研發(fā)出的動(dòng)態(tài)污點(diǎn)分析系統(tǒng)TaintCheck后,學(xué)術(shù)界相繼推出多個(gè)動(dòng)態(tài)污點(diǎn)分析模型.

動(dòng)態(tài)污點(diǎn)分析技術(shù)的發(fā)展主要分為兩個(gè)階段:2005-2008年主要集中在動(dòng)態(tài)污點(diǎn)分析技術(shù)本身的研究,這一時(shí)期出現(xiàn)了完善動(dòng)態(tài)污點(diǎn)分析理論的TaintCheck[2]、LIFT[29]和Dytan[30]等工具;2008年后關(guān)注點(diǎn)集中在污點(diǎn)分析方法和其他技術(shù)的融合,并出現(xiàn)了基于QEMU模擬器的全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析系統(tǒng).下面從進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析和全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析兩個(gè)方面,對(duì)不同時(shí)期的動(dòng)態(tài)污點(diǎn)分析技術(shù)進(jìn)行比較分析.

4.1 進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析平臺(tái)

進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析系統(tǒng)以動(dòng)態(tài)二進(jìn)制插樁平臺(tái)為支撐,跟蹤記錄程序指令的執(zhí)行.筆者在第3部分已對(duì)動(dòng)態(tài)二進(jìn)制插樁平臺(tái)進(jìn)行了詳細(xì)介紹,這里不再重復(fù)解釋.下面從發(fā)行時(shí)間、插樁平臺(tái)、主要技術(shù)點(diǎn)、是否開源等方面對(duì)上述提到的幾種常見進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析平臺(tái)進(jìn)行綜合比較分析,見表1.

表1 常見進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析框架比較Table 1 Comparation of common process-level dynamic taint analysis frameworks

TaintCheck、LIFT和Dytan框架主要集中在動(dòng)態(tài)污點(diǎn)分析技術(shù)本身的研究.TaintCheck利用插樁對(duì)商業(yè)軟件漏洞進(jìn)行自動(dòng)檢測(cè)、分析和漏洞特征生成,能夠捕獲到程序中覆蓋返回地址、覆蓋函數(shù)指針和格式化字符串漏洞等異常,但消耗的空間和時(shí)間代價(jià)較大.LIFT利用插樁檢測(cè)破壞數(shù)據(jù)(返回地址、函數(shù)指針等)的各種類型安全攻擊.Dytan基于插樁技術(shù)執(zhí)行基于數(shù)據(jù)流和控制流的多污點(diǎn)標(biāo)記和傳播,對(duì)X86二進(jìn)制程序進(jìn)行污點(diǎn)分析.

Minemu[31]、DTAM[32]、FlowWalker[33]和StraightTaint[34]框架分別采用消除多余污點(diǎn)傳播或離線的方式,降低系統(tǒng)的時(shí)間開銷或內(nèi)存開銷.Minemu通過消除多余的指令來傳播污點(diǎn),在一定程度上提升了動(dòng)態(tài)污點(diǎn)分析的性能.DTAM并行地為每個(gè)線程進(jìn)行線程單元的污點(diǎn)分析,最后再離線聚合線程單元的結(jié)果,在一定程度上提高了并行多線程程序的分析效率.FlowWalker和StraightTaint通過離線的方法解決動(dòng)態(tài)污點(diǎn)分析工具在性能上的瓶頸問題.

Libdft[7]平臺(tái)引入了一個(gè)64位影子存儲(chǔ)器,可以在未修改的二進(jìn)制文件、常見操作系統(tǒng)和硬件上運(yùn)行,并提供了可擴(kuò)展的API接口.動(dòng)態(tài)二進(jìn)制分析框架Triton[15]以符號(hào)執(zhí)行引擎而聞名,同時(shí)能夠很好地支持輕量級(jí)動(dòng)態(tài)污點(diǎn)分析.

4.2 全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析平臺(tái)

全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析平臺(tái)一般是基于模擬器實(shí)現(xiàn),分析進(jìn)程與被檢測(cè)進(jìn)程執(zhí)行的完全隔離.系統(tǒng)的被檢測(cè)進(jìn)程在來賓虛擬機(jī)的內(nèi)部執(zhí)行,分析進(jìn)程在來賓虛擬機(jī)的外部執(zhí)行,具有更好的透明性和抗篡改性.全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析技術(shù)的實(shí)現(xiàn)依賴于虛擬監(jiān)控器,虛擬機(jī)自省中面臨的語義鴻溝問題是全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析平臺(tái)面臨的首要挑戰(zhàn),在第二部分的預(yù)備知識(shí)部分已經(jīng)詳細(xì)介紹,這里不再重復(fù)解釋.

圖5所展示的是基于模擬器QEMU的全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析實(shí)現(xiàn).其中,虛擬機(jī)自省組件用于解決虛擬機(jī)監(jiān)控器與上層操作系統(tǒng)之間存在的語義鴻溝問題.全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析技術(shù)會(huì)帶來很大的性能開銷,這是因?yàn)槟M器本身的運(yùn)行會(huì)帶來相當(dāng)大的性能損失,而動(dòng)態(tài)污點(diǎn)分析在污點(diǎn)傳播階段又會(huì)帶來很大的時(shí)間和內(nèi)存開銷.因此,多數(shù)開發(fā)者們都會(huì)采取一定的改進(jìn)措施,盡可能縮小系統(tǒng)或模擬器的性能開銷.下面對(duì)上述提到的全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析框架進(jìn)行簡(jiǎn)單介紹和分析,并從發(fā)行時(shí)間、插樁平臺(tái)、主要技術(shù)點(diǎn)和是否開源等方面進(jìn)行綜合比較,見表2.

圖5 基于QEMU的全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析框架Fig.5 Dynamic binary instrumentation framework based on QEMU

表2 常見全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析框架比較Table 2 Comparation of common system-level dynamic taint analysis frameworks

BitBlaze[35]和DTA++[36]是主要集中在動(dòng)態(tài)污點(diǎn)分析技術(shù)本身的研究.其中,BitBlaze框架中的TEMU組件能夠基于模擬器QEMU提供整個(gè)系統(tǒng)視圖,從系統(tǒng)的外部進(jìn)行細(xì)粒度的二進(jìn)制插樁,為全系統(tǒng)動(dòng)態(tài)二進(jìn)制插樁平臺(tái)的提出提供寶貴經(jīng)驗(yàn).DTA++有效地解決了一些可能導(dǎo)致污染不足的隱式流問題.

DECAF[37]使用TCG指令級(jí)污點(diǎn)傳播,面向于編寫跨平臺(tái)和系統(tǒng)廣泛的分析工具.PANDA[38]增加了記錄和重放執(zhí)行的功能,深入分析整個(gè)系統(tǒng),研究面向系統(tǒng)逆向工程.TAINTINDUCE[39]的研究面向污點(diǎn)傳播規(guī)則的生成.該系統(tǒng)通過觀察程序指令的寄存器狀態(tài)和內(nèi)存訪問狀態(tài)來學(xué)習(xí)污點(diǎn)規(guī)則,進(jìn)而自動(dòng)化地生成污點(diǎn)傳播規(guī)則.成功地解決了使用演繹方法分析指令語義,手動(dòng)總結(jié)規(guī)則來指定污點(diǎn)規(guī)則存在的污點(diǎn)傳播規(guī)則不準(zhǔn)確的問題.

DECAF++[9]從動(dòng)態(tài)污點(diǎn)分析算法設(shè)計(jì)上盡可能少地執(zhí)行污點(diǎn)分析,實(shí)現(xiàn)彈性全系統(tǒng)污點(diǎn)分析,進(jìn)一步提高了動(dòng)態(tài)污點(diǎn)分析系統(tǒng)的性能.OFFDTAN[40]采用離線動(dòng)態(tài)污點(diǎn)分析二進(jìn)制程序的方法,降低程序運(yùn)行時(shí)的開銷.

5 基于二進(jìn)制程序的DTA技術(shù)應(yīng)用

動(dòng)態(tài)污點(diǎn)分析技術(shù)雖然剛剛被提出來十幾年,但已經(jīng)取得了豐碩的成果,特別是最近幾年推出的相對(duì)成熟的動(dòng)態(tài)污點(diǎn)分析框架.通過對(duì)谷歌學(xué)術(shù)2009-2020年近十年動(dòng)態(tài)污點(diǎn)分析應(yīng)用相關(guān)的前150篇論文進(jìn)行統(tǒng)計(jì)分析,發(fā)現(xiàn)動(dòng)態(tài)污點(diǎn)分析技術(shù)主要應(yīng)用于程序分析、模糊測(cè)試、漏洞檢測(cè)、信息泄露檢測(cè)、逆向工程和惡意軟件分析等領(lǐng)域,另外,動(dòng)態(tài)污點(diǎn)分析技術(shù)還應(yīng)用于程序取證、漏洞分析、漏洞利用、漏洞簽名生成等方面.

進(jìn)程級(jí)別的動(dòng)態(tài)污點(diǎn)分析系統(tǒng)一般是針對(duì)單個(gè)用戶模式的進(jìn)程運(yùn)行狀態(tài)進(jìn)行污點(diǎn)分析,分析程序與原始代碼轉(zhuǎn)換在相同的代碼緩存中,一旦分析程序被惡意篡改,將會(huì)直接導(dǎo)致分析結(jié)果出錯(cuò).因此,進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析未來研究的出發(fā)點(diǎn)就是在提高污點(diǎn)分析技術(shù)性能的基礎(chǔ)上,主要將動(dòng)態(tài)污點(diǎn)分析技術(shù)應(yīng)用于程序分析[41-42]、模糊測(cè)試[43-45]、漏洞檢測(cè)[46-49]、信息泄露檢測(cè)[50-51]、逆向工程[52]、安卓惡意軟件分析[53]和漏洞簽名生成[54]等安全問題上.

例如,異常分析框架ExpTracer[41]對(duì)程序入口點(diǎn)到異常點(diǎn)之間的軌跡進(jìn)行污點(diǎn)分析,并記錄內(nèi)存集和寄存器的污點(diǎn)信息,通過整合記錄和后續(xù)指令分析,進(jìn)行異常評(píng)估.TaintScope[43]基于細(xì)粒度的動(dòng)態(tài)污點(diǎn)跟蹤,識(shí)別輸入中的哪些字節(jié)用于安全敏感的操作.這是第一個(gè)支持校驗(yàn)和的模糊測(cè)試工具,可以識(shí)別輸入實(shí)例中的校驗(yàn)和字段,并進(jìn)行準(zhǔn)確定位.Patch-Gen[46]使用一種基于屬性的污點(diǎn)分析方法(ATAM)找到攻擊點(diǎn)和溢出點(diǎn),為Windows X86二進(jìn)制文件自動(dòng)生成補(bǔ)丁.TaintEraser[50]使用語義感知的指令級(jí)污點(diǎn),跟蹤敏感用戶數(shù)據(jù)在現(xiàn)成應(yīng)用程序中的流動(dòng)情況,防止不必要的信息泄露.AndroTaint[52]基于動(dòng)態(tài)污點(diǎn)分析,通過模式匹配的方法進(jìn)行Android惡意軟件檢測(cè).文獻(xiàn)[54]使用控制流依賴的動(dòng)態(tài)污點(diǎn)分析方法,跟蹤程序運(yùn)行過程中的敏感信息,以支持漏洞分析.TASEVS[53]基于二進(jìn)制插樁工具Pin和約束求解工具Z3實(shí)現(xiàn)漏洞簽名生成,并對(duì)漏洞程序進(jìn)行驗(yàn)證.

全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析研究的出發(fā)點(diǎn)是采用硬件支持、彈性動(dòng)態(tài)污點(diǎn)分析、離線動(dòng)態(tài)污點(diǎn)分析、分布式動(dòng)態(tài)污點(diǎn)分析和引入新算法等技術(shù),盡可能地降低動(dòng)態(tài)污點(diǎn)分析帶來的內(nèi)存和時(shí)間開銷,繼而將動(dòng)態(tài)污點(diǎn)分析應(yīng)用于信息泄露檢測(cè)[55-56]、逆向工程[57]、惡意軟件分析[58-60]、程序取證[61]和漏洞利用[62]等安全問題.

例如,TaintDroid[55]使用動(dòng)態(tài)污點(diǎn)分析在基于Android的移動(dòng)設(shè)備上標(biāo)識(shí)并跟蹤隱私敏感信息,防止隱私數(shù)據(jù)泄露.FlowWalker[57]通過離線的方式將污點(diǎn)跟蹤操作與執(zhí)行分離,在虛擬執(zhí)行回放期間處理污點(diǎn)路徑,實(shí)現(xiàn)文件格式提取的需求.DroidScope[58]通過重構(gòu)操作系統(tǒng)和Dalvik語義視圖,基于動(dòng)態(tài)污點(diǎn)分析技術(shù)進(jìn)行Android惡意軟件分析.文獻(xiàn)[61]基于動(dòng)態(tài)污點(diǎn)分析工具實(shí)現(xiàn)Android應(yīng)用程序取證,避免了研究人員使用Cellkerite和Encase移動(dòng)取證工具包進(jìn)行手動(dòng)分析導(dǎo)致的證據(jù)不完整問題.文獻(xiàn)[62]將來自網(wǎng)絡(luò)用戶輸入和配置文件的數(shù)據(jù)標(biāo)記為污點(diǎn),借助數(shù)據(jù)流分析,檢測(cè)程序存在的漏洞,并根據(jù)漏洞利用原型系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單的漏洞利用.

6 基于二進(jìn)制程序的DTA技術(shù)存在的挑戰(zhàn)

動(dòng)態(tài)污點(diǎn)分析技術(shù)雖然已經(jīng)取得了豐碩的研究成果,但不可忽視的是,動(dòng)態(tài)污點(diǎn)分析也有很多問題沒有得到完全解決.現(xiàn)在的動(dòng)態(tài)污點(diǎn)分析框架存在準(zhǔn)確度和性能兩方面的問題,其中準(zhǔn)確度問題主要表現(xiàn)在污點(diǎn)分析過程中存在的“過污染”和“欠污染”問題,性能問題是指動(dòng)態(tài)污點(diǎn)分析系統(tǒng)存在運(yùn)行時(shí)開銷大、速度慢的問題.所謂“過污染”是將一個(gè)與污點(diǎn)輸入無污點(diǎn)傳播關(guān)系的數(shù)據(jù)標(biāo)記為污點(diǎn)屬性,產(chǎn)生了誤報(bào);“欠污染”是將一個(gè)與污點(diǎn)輸入有污點(diǎn)傳播關(guān)系的數(shù)據(jù)標(biāo)記為無污染屬性,即產(chǎn)生了漏報(bào).

進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析往往針對(duì)特定的體系結(jié)構(gòu),目前的進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析框架不具有體系結(jié)構(gòu)通用性,也不支持內(nèi)核漏洞檢測(cè).另外,動(dòng)態(tài)污點(diǎn)分析技術(shù)是一個(gè)略繁重的技術(shù),當(dāng)該技術(shù)應(yīng)用于輕量級(jí)的系統(tǒng)時(shí),就要求開發(fā)人員在準(zhǔn)確性和速度之間進(jìn)行一定的權(quán)衡.例如,將動(dòng)態(tài)污點(diǎn)分析技術(shù)應(yīng)用于模糊測(cè)試工具AFL.

全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析框架不僅模擬器本身會(huì)占用一部分的軟硬件資源,動(dòng)態(tài)污點(diǎn)傳播和動(dòng)態(tài)污點(diǎn)分析也會(huì)帶來更加高昂的代價(jià).全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析技術(shù)應(yīng)該在將技術(shù)應(yīng)用于信息泄露檢測(cè)、逆向工程、惡意軟件分析、程序取證、漏洞利用等安全問題的同時(shí),采用已有的或創(chuàng)新技術(shù)提升系統(tǒng)的性能.由于污點(diǎn)分析數(shù)據(jù)越詳細(xì),動(dòng)態(tài)污點(diǎn)分析系統(tǒng)效率下降就越嚴(yán)重,動(dòng)態(tài)污點(diǎn)分析工具需要開發(fā)人員根據(jù)應(yīng)用環(huán)境要求,在污染精度和污染效率之間進(jìn)行權(quán)衡.

7 總 結(jié)

本文詳細(xì)分析了基于二進(jìn)制文件動(dòng)態(tài)污點(diǎn)分析技術(shù)的國(guó)內(nèi)外研究現(xiàn)狀和最新研究成果,并分別從進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析和全系統(tǒng)級(jí)動(dòng)態(tài)污點(diǎn)分析兩個(gè)方向闡述了動(dòng)態(tài)污點(diǎn)分析技術(shù)的發(fā)展方向和應(yīng)用領(lǐng)域,介紹了基于進(jìn)程級(jí)動(dòng)態(tài)污點(diǎn)分析技術(shù)的動(dòng)態(tài)二進(jìn)制插樁技術(shù)和基于全系統(tǒng)動(dòng)態(tài)污點(diǎn)分析技術(shù)的虛擬化技術(shù)、虛擬機(jī)自省技術(shù)和彌合語義鴻溝技術(shù)等,并對(duì)動(dòng)態(tài)污點(diǎn)分析技術(shù)的原理進(jìn)行了介紹.在此基礎(chǔ)上,對(duì)動(dòng)態(tài)污點(diǎn)分析技術(shù)所面臨的問題和挑戰(zhàn)進(jìn)行了討論,并對(duì)未來本體構(gòu)建的研究方向進(jìn)行了簡(jiǎn)要分析.

猜你喜歡
污點(diǎn)二進(jìn)制漏洞
漏洞
基于代碼重寫的動(dòng)態(tài)污點(diǎn)分析
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
有趣的進(jìn)度
二進(jìn)制在競(jìng)賽題中的應(yīng)用
污點(diǎn)
使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
二進(jìn)制寬帶毫米波合成器設(shè)計(jì)與分析