基于延后策略的動(dòng)態(tài)多路徑分析方法_第1頁
基于延后策略的動(dòng)態(tài)多路徑分析方法_第2頁
基于延后策略的動(dòng)態(tài)多路徑分析方法_第3頁
基于延后策略的動(dòng)態(tài)多路徑分析方法_第4頁
基于延后策略的動(dòng)態(tài)多路徑分析方法_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于延后策略的動(dòng)態(tài)多路徑分析方法* Supported by the National Natural Science Foundation of China under Grant No. 60703076 (國家自然科學(xué)基金); the National High-Tech Research and Development Plan of China under Grant No. 2006AA01Z412, 2007AA01Z451 (國家高技術(shù)研究發(fā)展計(jì)劃(863); 作者簡介: 陳愷(1982),男,江蘇南京人,在讀博士,主要研究領(lǐng)域?yàn)樾畔踩?,軟件漏洞分析與檢測,惡意代碼分析與防范

2、,email: chenk;馮登國(1965),男,博士,研究員,主要研究領(lǐng)域?yàn)槊艽a學(xué)與信息安全;蘇璞睿(1976),男,博士,副研究員,主要研究領(lǐng)域?yàn)樾畔踩? 陳愷1-3+ 馮登國12 蘇璞睿21(信息安全國家重點(diǎn)實(shí)驗(yàn)室 中國科學(xué)院研究生院, 北京市 100049)2(信息安全國家重點(diǎn)實(shí)驗(yàn)室 中國科學(xué)院軟件研究所, 北京市 100190)3(信息安全共性技術(shù)國家工程研究中心,北京市 100190)摘 要:多路徑分析是彌補(bǔ)傳統(tǒng)動(dòng)態(tài)分析方法的不足,對可執(zhí)行程序全面分析的重要方法之一?,F(xiàn)有多路徑方法主要采用隨機(jī)構(gòu)造或者根據(jù)路徑條件構(gòu)造輸入進(jìn)行路徑觸發(fā),這兩者均存在路徑分析不全面和缺乏針對性的問題

3、。本文通過對路徑條件分析,確定了檢測條件的基本組成元素,提出了弱控制依賴和路徑引用集的概念和計(jì)算規(guī)則,并以此為基礎(chǔ)提出一種延后策略的多路徑分析方法。在程序分析過程中,對特定的程序檢測點(diǎn)和檢測點(diǎn)條件,有針對性地進(jìn)行路徑篩選,從語義上進(jìn)行路徑表達(dá)式簡化,在保證檢測點(diǎn)可達(dá)和檢測表達(dá)式具有相同構(gòu)造形式的前提下,簡化檢測表達(dá)式,減少分析路徑的數(shù)量。通過對7款惡意軟件分析實(shí)驗(yàn),結(jié)果表明本方法提高了分析效率和準(zhǔn)確性。關(guān)鍵詞:多路徑分析,可執(zhí)行程序,漏洞檢測,動(dòng)態(tài)分析,延后策略軟件分析是檢測軟件漏洞、軟件惡意行為等安全性問題的基礎(chǔ)。從分析目標(biāo)的不同,現(xiàn)有軟件分析方法一般分為面向源代碼的軟件分析和面向可執(zhí)行程序

4、的軟件分析。前者針對有源代碼的程序,具有更加豐富的類型信息和結(jié)構(gòu)信息,相對而言,分析準(zhǔn)確性更高。但是現(xiàn)有軟件多數(shù)不提供源代碼,尤其是大型的商業(yè)軟件和進(jìn)口軟件等;同時(shí),即使部分軟件提供了源代碼,也不能保證使用的可執(zhí)行程序和源代碼之間的對應(yīng)關(guān)系,這一問題在文獻(xiàn)1中進(jìn)行了詳細(xì)討論。由于大量的應(yīng)用軟件無法獲得源程序,并在一些重要領(lǐng)域應(yīng)用,直接對其可執(zhí)行程序進(jìn)行安全性分析、確保這類軟件的安全性顯得極為重要,該問題也是國內(nèi)外研究的熱點(diǎn)問題??蓤?zhí)行程序分析方法一般分為靜態(tài)方法和動(dòng)態(tài)方法兩種。靜態(tài)分析使用反匯編手段,將可執(zhí)行程序的二進(jìn)制代碼轉(zhuǎn)變?yōu)閰R編語言并以此為基礎(chǔ)進(jìn)行分析。其優(yōu)點(diǎn)在于可以較為全面的分析程序代

5、碼,但是由于分析過程依賴于大量的推理和符號(hào)演算,因此效率較低,且會(huì)造成一定數(shù)量的誤報(bào)2,對于一些經(jīng)過變形和混淆3技術(shù)處理的代碼也不能很好處理。動(dòng)態(tài)分析方法的基本思想是利用程序運(yùn)行時(shí)的數(shù)據(jù)提高分析效率和準(zhǔn)確性,同時(shí)避免由于變形等反靜態(tài)分析技術(shù)帶來的不可分析性。傳統(tǒng)的動(dòng)態(tài)分析一次只能分析一個(gè)運(yùn)行實(shí)例,例如Softice、Ollydbg等,為了提高動(dòng)態(tài)分析的全面性,需要構(gòu)造執(zhí)行應(yīng)用程序的多種可能執(zhí)行路徑,即對可執(zhí)行程序進(jìn)行多路徑分析。按照動(dòng)態(tài)多路徑分析方法的發(fā)展,可以將其分為三類。第一類是將可執(zhí)行程序放在可控環(huán)境中(例如調(diào)試器等)執(zhí)行并手動(dòng)更改分支語句的判斷條件進(jìn)行多路徑分析。這類方法需要大量的人工

6、參與,非常繁瑣且不具全面性。第二類是自動(dòng)構(gòu)造不同的輸入,嘗試觸發(fā)程序執(zhí)行的各種不同路徑以暴露出程序潛在的安全問題。這類方法也稱為Fuzz方法。雖然此類方法在一定程度上提高了第一類方法的效率和覆蓋率,但是大多數(shù)情況下,此類方法僅能窮舉有限個(gè)輸入,并不能對所有的輸入都進(jìn)行測試。因此通過此方法驗(yàn)證的程序會(huì)有一定數(shù)量的漏報(bào),而且會(huì)耗費(fèi)大量時(shí)間重復(fù)已有測試結(jié)果。第三類方法是通過對程序執(zhí)行過程中的路徑條件的求解,有選擇地對路徑進(jìn)行分析,較有代表性的如EXE2等。這類方法使用動(dòng)態(tài)分析方式,提高了靜態(tài)分析的準(zhǔn)確性和效率,同時(shí)避免了Fuzz方法的隨機(jī)性,增加了路徑選擇的效率,本文所做工作也是以此類方法為基礎(chǔ)。但

7、是這類方法仍然會(huì)產(chǎn)生過多的分析路徑,也沒有對路徑條件進(jìn)行分析篩選,以至于難以應(yīng)用到大型程序中4。目前國際上部分學(xué)者使用啟發(fā)式方法嘗試減少路徑分析數(shù)量5,但是效果仍然不理想4。本文所述方法從路徑條件與檢測點(diǎn)之間關(guān)系入手,圍繞著條件表達(dá)式的組成結(jié)構(gòu)加以展開。我們發(fā)現(xiàn),多路徑分析的作用之一在于確定某條語句或若干條語句的集合(稱為程序檢測點(diǎn)集合)在不同的執(zhí)行路徑下是否滿足一定的需求,例如判斷某條語句是否存在漏洞或者是否存在惡意行為等。此時(shí)在程序分析過程中,部分分支條件的取值并不會(huì)影響程序檢測點(diǎn)的判斷條件,因此產(chǎn)生了條件冗余。針對以上應(yīng)用場景,本文提出了一種延后策略的可執(zhí)行程序動(dòng)態(tài)多路徑分析方法。與傳統(tǒng)

8、多路徑分析方法不同,本方法在程序的分支路徑選擇過程中,并不立即進(jìn)行路徑表達(dá)式求解和啟用新進(jìn)程進(jìn)行多路徑分析,而是僅記錄分支條件;當(dāng)遇到程序檢測點(diǎn)時(shí),有選擇的對部分分支語句進(jìn)行多路徑分析,減少需要分析的路徑數(shù)量和檢測表達(dá)式長度,提高了分析效率和準(zhǔn)確性。本文主要做了如下貢獻(xiàn):1)對路徑執(zhí)行條件進(jìn)行分析,確定了檢測條件的基本組成元素,提出了弱控制依賴和路徑引用集的概念和計(jì)算規(guī)則,并以此為基礎(chǔ)對路徑條件進(jìn)行篩選,簡化了檢測條件表達(dá)式,提高了表達(dá)式求解的效率和準(zhǔn)確性。2)提出了一種延后策略的多路徑分析方法。在動(dòng)態(tài)分析的過程中,并不立即對分支語句進(jìn)行多路徑分析,而是在確定檢測點(diǎn)位置和檢測條件后,動(dòng)態(tài)分析路

9、徑條件,有選擇的對檢測表達(dá)式有控制作用的分支語句進(jìn)行多路徑分析,提高了多路徑分析的針對性,簡化了多路徑構(gòu)造過程,改進(jìn)了分析效率。3)實(shí)現(xiàn)了一套基于延后策略的多路徑分析原型系統(tǒng)。對Perfect Keylogger等7款具有惡意操作的軟件進(jìn)行分析,實(shí)驗(yàn)表明,本方法有效簡化了檢測表達(dá)式,避免了無用路徑的分析,提高了多路徑分析的效率和準(zhǔn)確性。本文采用如下組織方式:第1章介紹了目前國內(nèi)外相關(guān)研究工作;第2章討論了路徑條件的組成;第3章提出一種延后的多路徑分析方法;第4章進(jìn)行了實(shí)驗(yàn)與分析;最后總結(jié)全文。1 相關(guān)工作多路徑分析是進(jìn)行程序漏洞檢測、程序惡意行為分析的關(guān)鍵方法之一。目前國際上對可執(zhí)行程序進(jìn)行多

10、路徑分析一般可以分為靜態(tài)分析和動(dòng)態(tài)分析兩種方式。靜態(tài)分析方法多在靜態(tài)反匯編程序的基礎(chǔ)上,提出相關(guān)的分析方法進(jìn)行程序分析。在反匯編方面,目前已有較為成熟的方法和工具,例如IDA Pro IDA Pro Disassembler - multi-processor, windows hosted disassembler and debugger, 等。Wisconsin大學(xué)的WiSA項(xiàng)目組在可執(zhí)行程序的靜態(tài)分析方面做了大量的工作,提出了分析可執(zhí)行程序的VSA6方法,并開發(fā)出CodeSurfer/x867等工具。在反匯編的基礎(chǔ)上進(jìn)行符號(hào)執(zhí)行,可以對程序進(jìn)行多路徑分析8, 9。國內(nèi)如夏一民等人在對漏

11、洞進(jìn)行檢測時(shí),提出了基于條件約束的方法10,此方法也可應(yīng)用在多路徑分析上。靜態(tài)分析雖然可以較為全面的分析程序代碼,但是由于缺乏程序運(yùn)行時(shí)的數(shù)據(jù)信息,所以分析效率較低,且會(huì)造成一定數(shù)量的誤報(bào)2。對于一些經(jīng)過變形和混淆3技術(shù)處理的代碼,靜態(tài)分析也難以處理。目前,人們使用一些基礎(chǔ)理論方法,例如切片方法11,試圖提高靜態(tài)分析的準(zhǔn)確性,但效果仍然不理想12。動(dòng)態(tài)多路徑分析是目前重要的多路徑分析方法。最初人們?yōu)榱擞|發(fā)程序的不同路徑,盡量多的構(gòu)造出不同的輸入,這類方法稱為Fuzz方法。較有代表性的是Ghosh13,它將程序看作是黑盒,通過變換不同的輸入,觀察程序是否會(huì)出現(xiàn)異常,從而進(jìn)行漏洞查找。這類方式不需

12、要對程序進(jìn)行分析,而是對程序進(jìn)行測試,所以執(zhí)行速度較快。但是大多數(shù)情況下,此類方法僅能窮舉有限個(gè)輸入,并不能對所有的輸入都進(jìn)行測試,因此通過此方法驗(yàn)證程序會(huì)存在一定數(shù)量的漏報(bào)。同時(shí),這類方法效率很低,例如程序中有分支語句x=10,這類方法要對x進(jìn)行232計(jì)算才能對不同分支進(jìn)行處理。之后人們通過對執(zhí)行路徑條件進(jìn)行分析,產(chǎn)生了白盒Fuzz的方法。白盒Fuzz方法對不同的分支條件求解,計(jì)算出可能的輸入并盡量多的對不同分支進(jìn)行多路徑分析,較有代表性的是EXE2 、Moser14和SAGE1。但是這類方法需要對遇到的每一個(gè)依賴于外部輸入的分支都進(jìn)行多路徑分析,因此很大程度上影響了實(shí)現(xiàn)效率。Godefro

13、id使用了語法指導(dǎo)的Fuzz分析15,但是預(yù)先對缺乏源代碼的可執(zhí)行程序輸入部分進(jìn)行語法分析非常困難且準(zhǔn)確性不高,同時(shí)這種方法仍然會(huì)產(chǎn)生較多的無用路徑。多種啟發(fā)式方法5, 16, 17也被提出進(jìn)行路徑選擇,試圖在盡量短的時(shí)間內(nèi)達(dá)到更多的代碼覆蓋率,但是這類方法僅是從搜索策略的角度入手,例如深度優(yōu)先、廣度優(yōu)先、隨機(jī)法或通過一定的算子計(jì)算出路徑上的權(quán)值來進(jìn)行路徑選擇,沒有對路徑本身的語句進(jìn)行分析和優(yōu)化處理,因此效果仍然不夠理想4。RWSet方法對指令引用集合和定義集合進(jìn)行分析,從程序語義上嘗試減少多路徑分析的數(shù)量,具有一定效果4,但是它僅是從程序節(jié)點(diǎn)的數(shù)值依賴角度進(jìn)行分析,沒有對控制依賴進(jìn)行分析,例

14、如缺乏針對程序檢測點(diǎn)的運(yùn)行條件分析,和對條件路徑疊加的處理,因此仍然存在無用路徑;且僅適用于源代碼分析。現(xiàn)有多路徑分析方法中,路徑分析不全面和分析過多無用路徑的問題影響了分析的準(zhǔn)確性和分析效率。其原因體現(xiàn)在以下兩個(gè)方面:1)對條件路徑不加選擇地進(jìn)行多路徑擴(kuò)展。在程序執(zhí)行過程中,遇到分支語句即對路徑進(jìn)行分解,進(jìn)而對每個(gè)分支路徑分別產(chǎn)生一個(gè)新進(jìn)程進(jìn)行計(jì)算。Cadar2等人在此基礎(chǔ)上對動(dòng)態(tài)依賴于外部輸入的分支語句進(jìn)行路徑分解,以減少路徑數(shù)目,但是這類方法仍然會(huì)產(chǎn)生較多的無用路徑。2)路徑表達(dá)式過長以至無法求解。在分支計(jì)算過程中,為了明確程序的執(zhí)行路徑,需要記錄下分支條件,當(dāng)分支數(shù)目增加時(shí),條件表達(dá)式

15、長度也隨之增加。條件表達(dá)式的數(shù)目和長度的增加,使得對程序進(jìn)行多路徑分析的難度顯著增加,甚至在有限時(shí)間內(nèi)不可求解。這也是造成路徑分析不全面的原因之一。本文針對以上問題,對程序檢測點(diǎn)與路徑條件的關(guān)系進(jìn)行分析,確定了路徑條件的組成,提出一種延后分析的策略。2 路徑條件的組成本章以一示例為引, 說明路徑條件的必要性和分支選擇的時(shí)機(jī)問題,并定義相關(guān)概念和具體的計(jì)算規(guī)則。圖1.a是一個(gè)典型的分支流程。假設(shè)節(jié)點(diǎn)1是分支語句,其兩個(gè)出口分別指向節(jié)點(diǎn)2和節(jié)點(diǎn)3,節(jié)點(diǎn)4是后必經(jīng)節(jié)點(diǎn)。節(jié)點(diǎn)1的入口條件是C,兩個(gè)分支條件為e和。 圖1.a分支語句圖1.b循環(huán)語句圖1.c子程序調(diào)用語句現(xiàn)有多路徑分析方法在程序運(yùn)行時(shí),會(huì)

16、記錄程序運(yùn)行過程中所有不能靜態(tài)確定分支方向的條件集合CE。例如圖1.a中,假設(shè)條件e依賴于外部輸入,表示為,且。當(dāng)程序運(yùn)行至節(jié)點(diǎn)1進(jìn)行分支選擇時(shí),運(yùn)行條件會(huì)變?yōu)榛?,且?huì)在節(jié)點(diǎn)1處產(chǎn)生新的進(jìn)程進(jìn)行多路徑分析。假設(shè)檢測點(diǎn)在節(jié)點(diǎn)2或3時(shí),以上分析過程是沒有冗余的,因?yàn)闂l件e或保證了檢測點(diǎn)的運(yùn)行條件。但若檢測點(diǎn)在節(jié)點(diǎn)4處,條件e和的必要性并不明顯,因?yàn)樗鼈儾⑽幢WC此時(shí)程序的運(yùn)行條件。因此,需要對節(jié)點(diǎn)2、3、4中引用變量集和定義變量集進(jìn)行更深入的分析方可確定條件e或的必要性。易知,對于理論上最小路徑條件集CE,有。對于循環(huán)語句(圖1.b)與子程序調(diào)用語句(圖1.c),以上情況均會(huì)出現(xiàn)。因此正確選擇分支條

17、件,可以減少分支的數(shù)目和路徑表達(dá)式的長度,也避免產(chǎn)生無用的進(jìn)程進(jìn)行多路徑分析。定義1(路徑) 路徑P是若干條順序執(zhí)行的語句組成的序列,記為:。用表示所有以l0為起點(diǎn),以ln為終點(diǎn)的路徑。用表示所有以l0后繼節(jié)點(diǎn)為起點(diǎn),以ln為終點(diǎn)的路徑,用表示所有以l0起點(diǎn),以ln前驅(qū)節(jié)點(diǎn)為終點(diǎn)的路徑。對于特定的P,使用表示路徑長度。定義2(條件路徑)條件路徑CP是路徑P中順序執(zhí)行的分支語句組成的序列,記為,其中c1是程序執(zhí)行路徑上第一個(gè)分支語句。易知,。用表示所有以l0為起點(diǎn),以ln為終點(diǎn)的條件路徑。用表示所有以l0后繼節(jié)點(diǎn)為起點(diǎn),以ln為終點(diǎn)的條件路徑,用表示所有以l0起點(diǎn),以ln前驅(qū)節(jié)點(diǎn)為終點(diǎn)的條件路徑

18、。對于特定的CP,使用表示條件路徑長度。定義3(檢測條件)檢測條件指在程序運(yùn)行至檢測點(diǎn)p位置時(shí),進(jìn)行某些預(yù)定義檢查所需的條件,例如判斷當(dāng)前狀態(tài)是否會(huì)出現(xiàn)漏洞的條件等,用CCp表示。定義4(檢測表達(dá)式)對于程序執(zhí)行路徑P上的結(jié)點(diǎn)l,程序檢測表達(dá)式。其中C保證程序在每次執(zhí)行過程中均可到達(dá)l,且CCl具有相同的符號(hào)表示。在不發(fā)生歧意的情況下,將簡記為。定理1. 。證明:由檢測表達(dá)式的定義易證。證畢。定義5(弱控制依賴)在路徑上,對于條件結(jié)點(diǎn)lk及任意后續(xù)結(jié)點(diǎn)lj(),假設(shè)lk的后必經(jīng)結(jié)點(diǎn)為lm,若,則稱lj弱控制依賴于lk,記為。根據(jù)弱控制依賴的定義可知其與控制依賴的關(guān)系:,其中表示lj控制依賴于l

19、k,但反之不然。定義6(運(yùn)行條件)在條件執(zhí)行路徑上,對于檢測點(diǎn)p,如果,則稱條件ci是檢測點(diǎn)p的運(yùn)行條件。用RCp表示檢測點(diǎn)p運(yùn)行條件的集合。定理2. 。證明:由運(yùn)行條件的定義,可知p不是ci的后必經(jīng)節(jié)點(diǎn),因此存在路徑,其中l(wèi)n是結(jié)束語句,使得。如果,則不能保證程序運(yùn)行到節(jié)點(diǎn)p處,且無法在p點(diǎn)進(jìn)行表達(dá)式檢測,所以定理2得證。證畢。在圖1.a中,如果在節(jié)點(diǎn)2處進(jìn)行檢測,有,根據(jù)定理2,有。定理2是條件語句是否屬于程序檢測表達(dá)式的充分條件,但不是必要條件,因此對于檢測點(diǎn)p,當(dāng)時(shí),無法確定ci是否屬于CEp。例如圖1.a中,如果在節(jié)點(diǎn)4處進(jìn)行檢驗(yàn)時(shí),將無法確定是否將e或者放入CE4。此時(shí),需要進(jìn)一步

20、分析程序運(yùn)行過程中定義的變量集和引用的變量集。引理1. 在條件執(zhí)行路徑上,假設(shè)l是分支節(jié)點(diǎn)ci的第一個(gè)后必經(jīng)節(jié)點(diǎn),有,其中USE(C)表示表達(dá)式C的引用集合,DEF(C)表示表達(dá)式C的定義集合,表示在p路徑上V集合的變量值。證明:根據(jù)題設(shè)條件,對于程序的執(zhí)行路徑,存在不同的路徑且,在程序的兩次執(zhí)行過程中,當(dāng)ci取不同分支時(shí),即l處USE(CCl)的值不同,因此為了保證在l處CEl中USE(CCl)具有相同值,需要將ci加入CEl。證畢。考慮到在不同路徑上Vp和Vp具有相同值,在多路徑分析時(shí),添加上條件ci也不會(huì)影響CEl的解集,而且多數(shù)情況下編譯器會(huì)將不同路徑上具有相同變量賦值的語句提取出進(jìn)行

21、優(yōu)化,因此引理1可以簡化為定理3。定理3. 在條件執(zhí)行路徑上,假設(shè)l是分支節(jié)點(diǎn)ci的第一個(gè)后必經(jīng)節(jié)點(diǎn),則。定理3僅針對分支語句的第一個(gè)后必經(jīng)節(jié)點(diǎn)l進(jìn)行計(jì)算,并未考慮l后續(xù)節(jié)點(diǎn)的條件依賴關(guān)系。假設(shè)分支語句ci的第一個(gè)后必經(jīng)節(jié)點(diǎn)是l1,檢測語句為l1之后的語句l2,且,則需要考慮中變量定義集合與之間的關(guān)系。定義7(路徑引用集)在程序路徑上,對于在語句l中使用的變量集合s,s依賴于路徑P外的變量集合稱為變量集合s在路徑P上的路徑引用集,用USE(P, s, l)表示。根據(jù)路徑引用集的定義,可以獲得USE(P, s, l)的計(jì)算方法。對于所有,這里使用推導(dǎo)規(guī)則方式:空語句推導(dǎo)規(guī)則:單語句推導(dǎo)規(guī)則:多語

22、句推導(dǎo)規(guī)則:多路徑推導(dǎo)規(guī)則:其中,表示當(dāng)條件c成立時(shí),選擇x1,否則選擇x2。定義8(值依賴條件)在條件執(zhí)行路徑上,假設(shè)lj是分支節(jié)點(diǎn)ci的第一個(gè)后必經(jīng)節(jié)點(diǎn),對于檢測點(diǎn)為lk,如果,則稱條件ci是檢測點(diǎn)lk的值依賴條件。用表示檢測點(diǎn)l值依賴條件的集合。定理4. 在條件執(zhí)行路徑上,對于檢測點(diǎn)l,有。證明:因?yàn)椋鶕?jù)值依賴條件的定義,存在ci的后必經(jīng)節(jié)點(diǎn)l,使得。當(dāng)時(shí),由空語句推導(dǎo)規(guī)則,有,根據(jù)定理3,可知。當(dāng)時(shí),在路徑上由路徑引用集的推導(dǎo)規(guī)則,可以求得集合,不妨將s看作,根據(jù)定理3,可知。證畢。定理4描述了在程序條件路徑CP上,對于和檢測點(diǎn)l,當(dāng)時(shí),是否將ci加入l點(diǎn)的檢測表達(dá)式的充分條件。至此

23、,我們可以得到對于任意條件ci,有如下定理。定理5. 在程序執(zhí)行路徑P上,對于檢測點(diǎn)l,有。證明:由檢測表達(dá)式的定義,有,充分性得證。根據(jù)定理1、定理2和定理4,有,必要性得證。因此。證畢。3 延后的多路徑分析方法現(xiàn)在多路徑分析方法,一般是在分支語句處判斷當(dāng)前分支條件c,如果(其中DD表示數(shù)據(jù)依賴),則創(chuàng)建兩個(gè)進(jìn)程,分別執(zhí)行并遞歸的進(jìn)行多路徑分析2。當(dāng)過多分支語句或者循環(huán)控制語句依賴于外部輸入時(shí),這類多路徑分析方法會(huì)因?yàn)閯?chuàng)建的分析進(jìn)程數(shù)量過多而不實(shí)用(與分支數(shù)目成指數(shù)關(guān)系),這也是目前多路徑分析方法難以應(yīng)用于大規(guī)模程序的主要原因之一。由定理5,在程序執(zhí)行過程中,對于條件,若,則表示c取值真假與

24、CCl無關(guān),因此不需要在條件c處進(jìn)行多路徑擴(kuò)展。這里提出一種基于延后策略的多路徑分析方法,針對已有的檢測點(diǎn),確定與檢測點(diǎn)相關(guān)的分支語句。此方法由兩種模式組成:監(jiān)控模式和檢測模式。在監(jiān)控模式下,被分析程序正常運(yùn)行,監(jiān)控程序記錄路徑P、條件路徑CP等相關(guān)的信息。檢測模式指遇到程序檢測點(diǎn)l后,判斷條件與間關(guān)系的過程。程序開始時(shí)以監(jiān)控模式進(jìn)行。每當(dāng)遇到指令I(lǐng)時(shí),如果I是程序檢測點(diǎn),則轉(zhuǎn)入檢測模式,否則將I加入執(zhí)行路徑P。如果I是分支語句,且,則將I加入條件路徑CP。使用切片方法可以判斷I是否依賴于外部輸入,但其效率較低,且不準(zhǔn)確。這里我們使用污點(diǎn)傳播方式判斷I是否依賴于外部輸入。污點(diǎn)傳播18是一種有效

25、確認(rèn)變量之間是否相關(guān)的分析方法。通過設(shè)置污點(diǎn)源和定義污點(diǎn)傳播規(guī)則,可以判斷程序運(yùn)行過程中變量是否與污點(diǎn)源相關(guān)。污點(diǎn)源可以設(shè)置為外部文件、鍵盤輸入和網(wǎng)絡(luò)輸入等。表1是部分指令的污點(diǎn)傳播規(guī)則,包括數(shù)據(jù)轉(zhuǎn)移類指令、算術(shù)操作指令、邏輯操作類指令、比較類指令等。為了能夠更快的確定某塊內(nèi)存區(qū)域是否依賴于外部輸入,我們使用了影子內(nèi)存的方法。影子內(nèi)存為真實(shí)內(nèi)存的鏡像,其每塊內(nèi)存空間表示相對應(yīng)的真實(shí)內(nèi)存是否依賴于外部輸入。為了保持分析過程中的連貫性,我們對寄存器也實(shí)現(xiàn)了相應(yīng)的影子機(jī)制。表1. 污點(diǎn)傳播規(guī)則指令分類傳播規(guī)則示例語句數(shù)據(jù)轉(zhuǎn)移指令T(op1)T (op2)mov op1, op2算術(shù)操作指令T (op

26、1)T (op1)T(op2); T (add, PSW)T (op1)T(op2)add op1, op2邏輯操作指令T (op1)T (op1)T(op2); T(and, PSW)T (op1)T(op2)and op1, op2比較類指令T(cmp, PSW)T (op1)T(op2)cmp op1, op2其中T(op)BOOL,表示op所指向的操作數(shù)是否為污點(diǎn)數(shù)據(jù);PSW表示機(jī)器狀態(tài)字;(op, PSW),表示op操作引發(fā)PSW中變化的位置,例如add操作會(huì)引起C、P、A、Z、S、O等標(biāo)志位的改變。注意add、and等算術(shù)/邏輯指令會(huì)影響PSW的值,這里也必須引入,因?yàn)閖ne等跳轉(zhuǎn)

27、指令依賴于PSW的值。由于缺少源代碼,污點(diǎn)傳播在分析過程中存在一定的局限性,主要包括如下幾條:(1) 嵌套循環(huán)難以處理的問題:目前原型系統(tǒng)中我們采取的措施是將循環(huán)展開19,但這樣會(huì)造成需要多路徑分析的分支數(shù)量過多的問題。在未來的工作過程中,我們將重點(diǎn)對循環(huán)進(jìn)行處理,進(jìn)一步減少循環(huán)對多路徑分析的影響。(2)操作指令集不完備的問題:由于CPU指令較多,目前的原型系統(tǒng)中完成了數(shù)據(jù)傳輸類指令、算數(shù)操作類指令、邏輯操作類指令和比較類指令等指令集合的污點(diǎn)傳播分析,對于特殊的指令,例如MMX指令、FPU指令等并沒有完成污點(diǎn)傳播分析,這可能會(huì)造成分析不全面的問題。同時(shí)我們僅支持Intel CPU的指令集,并不

28、兼容其他類型的CPU。在未來的工作中,我們將支持更多的指令集,以便完善我們的原型系統(tǒng)。(3)系統(tǒng)調(diào)用的問題: 目前原型系統(tǒng)僅在用戶層進(jìn)行分析,并沒有對內(nèi)核層進(jìn)行污點(diǎn)傳播處理。這可能會(huì)造成部分污點(diǎn)傳播失效的問題,使得分析的全面性受阻。目前采用國際上使用較多的方式,對系統(tǒng)調(diào)用總結(jié)出“摘要”(Summary)信息20,即對部分系統(tǒng)調(diào)用增加一定程度的信息以保持污點(diǎn)傳播分析的連續(xù)性。目前我們對NtReadFile等系統(tǒng)調(diào)用增加了“摘要”信息。在目前軟件安全逆向分析中,單一節(jié)點(diǎn)的檢測往往不能作為漏洞點(diǎn)存在的依據(jù),因此需要考慮多個(gè)檢測點(diǎn)間的共同作用。假設(shè)需要共同作用的檢測點(diǎn)集合為,當(dāng)程序運(yùn)行至L時(shí),進(jìn)入檢測

29、模式。CP中記錄了執(zhí)行路徑P上遇到的所有依賴于外部輸入的條件。不妨設(shè)。此時(shí)需要逐個(gè)判斷CP中的條件c是否屬于CEL。由定理5,所以需判斷條件c是否屬于集合。定義函數(shù)表示結(jié)點(diǎn)b是否是結(jié)點(diǎn)a的后必經(jīng)結(jié)點(diǎn),如果是,則返回true,否則返回false。對于路徑,其中l(wèi)是L中執(zhí)行流程序列的最后一條語句。從指令li開始逆序進(jìn)行分析。對于第一條指令li,根據(jù)不同情況:(1) :,且由于,因此,即,根據(jù)定理2,將li加入CEl,用表示。若,更新路徑引用集。繼續(xù)分析li-1。(2) :使用路徑引用集的推導(dǎo)規(guī)則計(jì)算的路徑引用集,即計(jì)算,其中。若,則。當(dāng)時(shí),如果,根據(jù)定理3可知,。按此步驟繼續(xù)分析li-1。對于任意

30、,根據(jù)如下方法分析:(1) ,(i) 若,更新路徑引用集;(ii) 若,則,根據(jù)定理2,并更新路徑引用集。若,更新路徑引用集。繼續(xù)分析lj-1。(2) :使用路徑引用集的推導(dǎo)規(guī)則,計(jì)算的路徑引用集,即,其中在分析指令時(shí)計(jì)算出。若,更新路徑引用集。當(dāng)時(shí),如果 ,根據(jù)定理5可知,。繼續(xù)分析lj-1。算法1是程序執(zhí)行與檢測表達(dá)式生成的算法框架。目前原型系統(tǒng)的實(shí)現(xiàn)對于分支路徑采用動(dòng)靜結(jié)合方式判斷相關(guān)的引用集合和定義集合,沒有對alias21問題進(jìn)行分析。如果發(fā)現(xiàn)某分支語句的分析過程中,有不確定目標(biāo)的alias操作,則將當(dāng)前分支條件加入相應(yīng)檢測點(diǎn)的值依賴條件VDC中,因此可能會(huì)造成VDC偏大,但此方法不

31、會(huì)失去準(zhǔn)確性。實(shí)驗(yàn)結(jié)果表明,即使使用這種方式,計(jì)算出的需多路徑分析的條件數(shù)量仍然小于EXE方式下的相應(yīng)條件數(shù)量。在今后的工作中,可以使用更精確的方法對alias問題進(jìn)行分析,進(jìn)一步減少分支數(shù)目。在程序循環(huán)時(shí),路徑減少顯得尤為明顯。下例是在循環(huán)程序的示例,對比了EXE方法和延后方法的不同處理方式。例1. 檢測點(diǎn)與循環(huán):int m=input;/ 表示m依賴于外部輸入int n=input; / 假設(shè)n20int a20; int k = 0;if(n 20)i: for ( int i = 0; i n; i+)k = i; / 沒有定義m,但是定義了kj: am = k; / 檢測語句,檢測條

32、件是0m20 對于以上代碼片段,假設(shè)檢測點(diǎn)是j,檢測條件是0m20。如果使用EXE的處理方式,在i處,需要分別對n=0、n=1、n=19進(jìn)行多路徑分析。但是對于這種方式中的每一條路徑,程序到達(dá)檢測點(diǎn)j的檢測條件均沒有變化,仍然為0m20。因此在i處對n進(jìn)行多路徑分析是沒有必要的。但使用延后分析方法,不需要在i處進(jìn)行多路徑分析,因此有效節(jié)省了計(jì)算資源。4 實(shí)驗(yàn)與分析為了測試本方法的有效性和性能,我們實(shí)現(xiàn)了延后策略多路徑分析的原型系統(tǒng)。原型系統(tǒng)由四部分組成,分別是加載模塊、執(zhí)行模塊、污點(diǎn)傳播模塊和延后分析模塊。加載模塊首先加載被分析的程序,再由執(zhí)行模塊執(zhí)行,執(zhí)行的基本單位為程序語句,每執(zhí)行完一條語

33、句后由污點(diǎn)傳播模塊進(jìn)行污點(diǎn)源的識(shí)別與污點(diǎn)數(shù)據(jù)傳播,之后進(jìn)行延后策略的分析。分析過程中使用緩存技術(shù)進(jìn)行優(yōu)化,當(dāng)后續(xù)程序運(yùn)行時(shí)使用到已分析過的結(jié)果時(shí),直接取緩存結(jié)果即可。整個(gè)系統(tǒng)使用C+語言實(shí)現(xiàn),約1萬行代碼。計(jì)算機(jī)硬件使用Dell Optiplex 360計(jì)算機(jī),配以Intel Core 2 Duo CPU E7300 2.66GHz CPU,2GB內(nèi)存,操作系統(tǒng)使用Windows XP SP3。多路徑研究的意義在于其進(jìn)行軟件安全漏洞檢測、程序異常行為分析方面的貢獻(xiàn)。因此我們使用實(shí)際案例數(shù)據(jù)測試基于延后方法動(dòng)態(tài)多路徑分析的有效性。Win32.NetSky是2004年傳播最廣泛的蠕蟲之一, 它在W

34、indows環(huán)境下以郵件方式進(jìn)行傳播。在我們的分析過程中,將GetLocalTime返回值作為污點(diǎn)數(shù)據(jù),并以此為污點(diǎn)源進(jìn)行分析。使用隨機(jī)的日期,程序流程以下圖中最上一層的調(diào)用序列到達(dá)0x100025EE。此時(shí)路徑上的分支語句有0x100025A3、0x100025AD、0x100025BA、0x100025C3、0x100025CB、0x100025D3、0x100025DC,其中0x100025AD與污點(diǎn)數(shù)據(jù)無關(guān)。EXE2方法與Moser14方法應(yīng)用廣泛,是目前國際上最有代表性的可執(zhí)行程序多路徑分析方法之一。由于Moser方法原理與EXE方法類似,實(shí)驗(yàn)時(shí)僅將延后方法與EXE方法作對比。使用E

35、XE方法多路徑分析時(shí),需要在除0x100025AD外的其他分支語句處啟用新的進(jìn)程進(jìn)行路徑分析;若使用延后策略的方法,可以發(fā)現(xiàn)0x100025A3、0x100025CB、0x100025D3、0x100025DC不屬于0x100025EE的運(yùn)行條件或值依賴條件,因此不必在這些位置進(jìn)行多路徑擴(kuò)展,僅需在0x100025BA和0x100025C3處進(jìn)行多路徑分析即可,提高了整體分析的效率。實(shí)際分析時(shí),在0x100025BA處進(jìn)行多路徑擴(kuò)展將到達(dá)NetSky程序的攻擊處ATTACK。圖2 NetSky多路徑分析圖為了對比EXE方法和延后方法對于不同程序需要多路徑分析的分支數(shù)量,我們對7款惡意軟件進(jìn)行測

36、試。Perfect Keylogger是一款記錄鍵盤操作的軟件;CodeRed、Nimda、Slammer、Maslan為網(wǎng)絡(luò)蠕蟲;QQ Thief和ExploitIE是黑客工具。表2記錄了各程序在運(yùn)行過程中相應(yīng)檢測表達(dá)式中條件數(shù)量的平均值。多路徑分析針對不同的目標(biāo),檢測點(diǎn)的選取是不同的,這里不考慮具體的分析目標(biāo),具體檢測點(diǎn)的選取不是本論文的討論重點(diǎn)。目前國際上對程序檢測點(diǎn)有多種選取方法22,為了不失一般性,本文采用在程序中的隨機(jī)檢測點(diǎn)進(jìn)行分析。檢測點(diǎn)的產(chǎn)生規(guī)則是在程序啟動(dòng)后,每100條指令基本塊為間隔作為一個(gè)程序檢測點(diǎn),各程序產(chǎn)生的檢測點(diǎn)的數(shù)目隨著程序的不同而不同。多路徑分析過程中,創(chuàng)建新進(jìn)

37、程的數(shù)量與條件數(shù)量成指數(shù)關(guān)系,因此條件數(shù)量在一定程度上反映多路徑分析效率以及路徑求解的效率。在程序運(yùn)行過程中,檢測表達(dá)式中條件數(shù)量會(huì)不斷變化,因此如果簡單的對每個(gè)檢測表達(dá)式中的條件數(shù)量進(jìn)行平均,將會(huì)喪失結(jié)果的準(zhǔn)確性。這里以原始(Origin)方法為基礎(chǔ),對每個(gè)檢測點(diǎn)在各種方法下的條件表達(dá)式數(shù)量進(jìn)行歸一化,最后取平均值,比較EXE方法和延后策略(LA)對表達(dá)式長度的縮減。其中原始方法指對路徑條件不做任何判斷均進(jìn)行記錄。表2中第2列表示分析過程中,程序檢測點(diǎn)總數(shù);Origin表示原始方法,這也是歸一化處理的基礎(chǔ);第3列為使用EXE方法縮減后的條件表達(dá)式長度所占Origin方法的比例;第4列是使用延

38、后策略的條件數(shù)量相對于Origin方法所占比例;最后一列以百分制表示延后策略檢測表達(dá)式條件數(shù)量占EXE方法的比例。從表1中可以看出,EXE方法雖然使用了污點(diǎn)傳播進(jìn)行處理,但仍存在大量無用條件。使用延后策略的方法能夠減少大量的無用分支語句,簡化了檢測表達(dá)式,減少了分支的數(shù)量,其條件數(shù)量平均僅占EXE方法的22.97%。表2. 三種多路徑方法的比較程序名稱檢測點(diǎn)數(shù)量EXE/ OriginLA/ OriginLA/EXE(%)Perfect Keylogger31930.16660.025615.37CodeRed15770.17670.038121.56Nimda15050.07090.00801

39、1.28Slammer13630.15620.033621.51Maslan12340.05720.00142.45QQ Thief12310.01710.008348.54ExploitIE12230.02170.008740.09表2從整體上對比了EXE方法和延后方法之間對不同程序檢測點(diǎn)中條件數(shù)量的差異,但并沒有顯示出在分析過程中,檢測點(diǎn)條件數(shù)量的變化情況。圖3以Perfect Keylogger為例,從程序隨時(shí)間執(zhí)行的角度加以說明。圖中橫軸記錄的是程序順序流程中隨機(jī)選取的不同檢測點(diǎn),縱軸表示檢測表達(dá)式中條件的數(shù)目。由圖中可知,使用EXE方法,程序的條件檢測點(diǎn)數(shù)目隨程序的執(zhí)行幾乎呈線性增長

40、,當(dāng)程序執(zhí)行流程越長,檢測表達(dá)式中條件數(shù)量越多。值得注意的是,條件數(shù)量每增加1,產(chǎn)生的進(jìn)程數(shù)量并不是增加1,而是在原有基礎(chǔ)上增加1倍,即進(jìn)程數(shù)量與條件表達(dá)式的數(shù)量之間為指數(shù)關(guān)系。因此這也是EXE方法難以分析大型程序的原因。從圖中看出,采用延后策略的方法,檢測點(diǎn)條件數(shù)量呈鋸齒形分布。其原因是檢測表達(dá)式中條件數(shù)量與程序的執(zhí)行過程的長短并無直接關(guān)系,僅與變量之間的依賴關(guān)系和運(yùn)行條件相關(guān)。由于程序中外界變量僅影響部分程序語句,隨著程序的執(zhí)行,此外界變量可能不被繼續(xù)使用,因此后續(xù)階段的檢測表達(dá)式中的檢測條件與前一階段可能并不相關(guān),這也是圖中曲線呈鋸齒型分布的原因。因此,本方法更適用于大型程序。 圖3 P

41、erfect Keylogger中EXE方法和LA方法對于不同檢測點(diǎn)條件數(shù)量的時(shí)間流程圖圖4 分析過程中各程序影子內(nèi)存數(shù)量由于影子內(nèi)存需與真實(shí)內(nèi)存保持對應(yīng)關(guān)系,因此在分析過程中可能會(huì)占用較大空間。在本原型系統(tǒng)中,采用實(shí)時(shí)記錄的影子內(nèi)存方法。當(dāng)有新的內(nèi)存空間被申請時(shí),增加相應(yīng)的影子內(nèi)存;當(dāng)目標(biāo)進(jìn)程對應(yīng)的內(nèi)存空間被釋放時(shí),影子內(nèi)存也隨之釋放。所以原型系統(tǒng)不需要使用整個(gè)內(nèi)存空間作為影子內(nèi)存,而僅僅需要?jiǎng)討B(tài)維護(hù)內(nèi)存堆棧即可,更大程度地減少了原型系統(tǒng)的內(nèi)存空間占用量。為了確認(rèn)分析過程中內(nèi)存占用情況,我們對影子內(nèi)存進(jìn)行了分析。圖4是在分析過程中各程序影子內(nèi)存占用內(nèi)存空間的最大值(單位是KB)。從圖中可知,

42、本原型系統(tǒng)使用影子內(nèi)存機(jī)制所占的內(nèi)存空間(包括堆棧)不超過15M,平均內(nèi)存占用率僅為6.47MB。由于因此,本系統(tǒng)具有較高的空間利用率。為了測試延后方法中檢測點(diǎn)數(shù)量對檢測表達(dá)式條件篩選的效率影響,表3對比了在延后策略下,當(dāng)檢測點(diǎn)數(shù)量發(fā)生變化時(shí),篩選表達(dá)式條件所需的時(shí)間。仍然對7款惡意軟件進(jìn)行測試,檢測點(diǎn)數(shù)量選取0、10、100、1000個(gè),時(shí)間單位為秒。從表中可知,使用延后方法分析10個(gè)、100個(gè)檢測點(diǎn),相對于0個(gè)檢測點(diǎn)并沒有在時(shí)間效率上減小許多。即使分析1000個(gè)檢測點(diǎn),增加的額外檢測時(shí)間也與檢測點(diǎn)數(shù)量幾乎呈線性關(guān)系。因此延后方法具有一定的時(shí)間效率。從表中可以看出,對于部分軟件,例如Nimd

43、a、QQ Thief等,即使在1000個(gè)檢測點(diǎn)時(shí)分析時(shí)間仍然較少。這是由于算法在分析過程中,對部分中間過程的運(yùn)算結(jié)果(例如后必經(jīng)結(jié)點(diǎn)的計(jì)算結(jié)果)進(jìn)行保留,并在下次運(yùn)算時(shí)直接使用造成的。表3. 各種方法運(yùn)行時(shí)間比較(單位:秒)程序名稱LA(0)LA(10)LA(100)LA(1000)Perfect Keylogger191195208313CodeRed535668149Nimda118130134162Slammer515664217Maslan606165106QQ Thief574585636759ExploitIE2872923285795 結(jié)論現(xiàn)有多路徑分析方法主要存在路徑分析不全面

44、、分析效率較低、分析過程中存在大量無用路徑等問題。部分工作僅從檢測表達(dá)式本身對路徑表達(dá)式進(jìn)行優(yōu)化求解,但并沒有結(jié)合程序檢測點(diǎn)和路徑條件進(jìn)行深入簡化。本文針對以上問題,提出了弱控制依賴和路徑引用集的概念以及相應(yīng)的計(jì)算規(guī)則,并在此基礎(chǔ)上提出了一種延后策略的可執(zhí)行程序動(dòng)態(tài)多路徑分析方法。在程序分析過程中,不立即進(jìn)行路徑表達(dá)式求解和多進(jìn)程構(gòu)造,而是記錄當(dāng)前的分支條件。當(dāng)遇到程序檢測點(diǎn)時(shí),有針對性的根據(jù)檢測點(diǎn)條件進(jìn)行路徑篩選,從語義上進(jìn)行路徑表達(dá)式簡化,減少需要分析的路徑數(shù)量,簡化檢測表達(dá)式。本文實(shí)現(xiàn)了一套原型系統(tǒng),并對Perfect Keylogger等7款惡意軟件進(jìn)行分析實(shí)驗(yàn),結(jié)果表明本方法提高了多

45、路徑分析效率和準(zhǔn)確性。實(shí)驗(yàn)中發(fā)現(xiàn),在循環(huán)處理過程中,會(huì)產(chǎn)生大量的條件表達(dá)式,如何對這類條件進(jìn)行有效簡化是未來的工作方向之一。同時(shí),結(jié)合現(xiàn)有漏洞檢測方法,對程序檢測點(diǎn)進(jìn)行更細(xì)粒度的選擇,更多的支持污點(diǎn)分析的指令數(shù)量和完善系統(tǒng)調(diào)用信息,進(jìn)行程序安全性分析也是本文未來的工作方向。References:1Godefroid P., Levin M. Y., and Molnar D., Automated whitebox fuzz testing, /Network and Distributed System Security Symposium, San Diego, CA, 2008. The

46、 Internet Society,2008.2Cadar C., Ganesh V., Pawlowski P. M., Dill D. L., and Engler D. R., EXE: automatically generating inputs of death, /13th ACM conference on computer and communications security, Alexandria, VA, U.S.A, 2006. New York, NY, USA:ACM Press, 2006: 322-335.3Linn C. and Debray S., Obf

47、uscation of executable code to improve resistance to static disassembly, /10th ACM conference on Computer and communications security, Washington D.C., USA, 2003. New York, NY, USA:ACM Press, 2003: 290-299.4Boonstoppel P., Cadar C., and Engler D., RWset: attacking path explosion in constraint-based

48、test generation, /14th International Conference, TACAS, Budapest, Hungary, 2008. New York: Springer-Verlag, 2008: 351-366.5Xie T., Tillmann N., de Halleux J., and Schulte W., Fitness-guided path exploration in dynamic symbolic execution, Microsoft: MSR-TR-2008-123, 2008.6Balakrishnan G. and Reps T.,

49、 Analyzing memory accesses in x86 executables / Lecture Notes in Computer Science. Compiler Construction. Heidelberg: Springer Berlin, 2004: 5237Balakrishnan G., Gruian R., Reps T., and Teitelbaum T., Codesurfer/x86-a platform for analyzing x86 executables / Lecture Notes in Computer Science. Compil

50、er Construction. Heidelberg: Springer Berlin, 2005: 250-2548Cova M., Felmetsger V., Banks G., and Vigna G., Static detection of vulnerabilities in x86 executables, /Annual Computer Security Applications Conference (ACSAC), Miami, FL,USA, 2006. Washington, DC, USA:IEEE Computer Society,2006: 269-278.

51、9Anand S., Orso A., and Harrold M. J., Type-dependence analysis and program transformation for symbolic execution / Lecture Notes in Computer Science. Tools and Algorithms for the Construction and Analysis of Systems. Heidelberg: Springer Berlin, 2007: 117-13310Xia Y., Luo J., and Zhang M., Detectin

52、g out-of-bounds accesses with conditional range constraint, Journal of Computer Research and Development, 2006, 43(10): 1760-1766. (夏一民,羅軍,張民選, 基于條件范圍約束的越界訪問檢測方法.計(jì)算機(jī)研究與發(fā)展, 2006, 43(10): 1760-1766)11Weiser M., Program slicing, IEEE Transaction on Software Engineering, 1984, 10(4): 352-357.12Costa M.,

53、 Castro M., Zhou L., Zhang L., and Peinado M., Bouncer: securing software by blocking bad input, /21st ACM SIGOPS symposium on Operating systems principles, Stevenson, Washington, USA, 2007. New York, NY, USA: ACM Press, 2007: 117-130.13Ghosh A. K., OConnor T., and McGraw G., An automated approach f

54、or identifying potential vulnerabilities in software, /IEEE Symposium on Security and Privacy, Oakland, California, 1998. Los Alamitos, CA, USA: IEEE Computer Society,1998: 104-114.14Moser A., Kruegel C., and Kirda E., Exploring multiple execution paths for malware analysis, /IEEE Symposium on Secur

55、ity and Privacy, Oakland, California, 2007. Washington, DC, USA:IEEE Computer Society,2007: 231245.15Godefroid P., Kiezun A., and Levin M. Y., Grammar-based whitebox fuzzing, /ACM SIGPLAN conference on Programming language design and implementation, Tucson, Arizona, 2008. New York, NY, USA: ACM Pres

56、s, 2008: 206-215.16Sofokleous A. A. and Andreou A. S., Automatic, evolutionary test data generation for dynamic software testing, The Journal of Systems & Software, 2008, 81(11): 1883-1898.17Burnim J. and Sen K., Heuristics for scalable dynamic test generation, /23rd IEEE/ACM International Conferenc

57、e on Automated Software Engineering, LAquila, Italy, 2008. IEEE,2008: 443-446.18Newsome J. and Song D., Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software, /Proceedings of the 12th Annual Network and Distributed System Security Symposium, San Diego, California, 2005. The Internet Society, 2005.19Brumley D., Analysis and defense of vulnerabilities

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論