基于代碼語(yǔ)義向量表示和深度學(xué)習(xí)的軟件漏洞檢測(cè)方法
發(fā)布時(shí)間:2021-03-09 09:57
近年來(lái),隨著互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展和軟件技術(shù)的不斷提高,軟件在人類(lèi)的生活中發(fā)揮著越來(lái)越重要的作用,軟件規(guī)模越來(lái)越大。同時(shí),由于軟件規(guī)模的不斷擴(kuò)大,開(kāi)發(fā)人員的疏忽,導(dǎo)致軟件的質(zhì)量參差不齊,軟件中存在的漏洞也越來(lái)越多,嚴(yán)重影響了軟件的使用體驗(yàn)以及軟件的安全性,對(duì)人類(lèi)的生命財(cái)產(chǎn)安全產(chǎn)生了極大的威脅,越早檢測(cè)出軟件中存在的漏洞,損失就會(huì)越小,所以軟件維護(hù)人員及時(shí)檢測(cè)出軟件中的漏洞就顯得尤為重要。采用人工的方式檢測(cè)代碼中的漏洞復(fù)雜度比較高,同時(shí)也費(fèi)時(shí)費(fèi)力,所以要利用漏洞檢測(cè)軟件進(jìn)行自動(dòng)化的批量檢測(cè)。目前的代碼漏洞檢測(cè)方法,誤報(bào)率和漏報(bào)率比較高,而且檢測(cè)粒度比較粗,一般是文件級(jí)別的漏洞檢測(cè),所以本文的工作主要有兩個(gè)部分:第一個(gè)主要部分是從代碼中提取出特征,然后將特征進(jìn)行表示學(xué)習(xí),轉(zhuǎn)化成向量,第二個(gè)主要部分是將特征向量輸入到代碼漏洞檢測(cè)模型當(dāng)中,通過(guò)代碼漏洞檢測(cè)模型輸出代碼有無(wú)漏洞的概率。關(guān)鍵和難點(diǎn)是要在代碼中提取出有用的特征,能表現(xiàn)出代碼漏洞的特征,然后將特征轉(zhuǎn)化成能輸入到代碼漏洞檢測(cè)模型當(dāng)中的向量。這個(gè)向量化的方式也很重要,要可以根據(jù)代碼語(yǔ)句的上下文信息學(xué)習(xí)到代碼token之間的語(yǔ)義信息,另外針對(duì)...
【文章來(lái)源】:哈爾濱工業(yè)大學(xué)黑龍江省 211工程院校 985工程院校
【文章頁(yè)數(shù)】:63 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
本文研究?jī)?nèi)容主要流程
哈爾濱工業(yè)大學(xué)專(zhuān)業(yè)碩士學(xué)位論文-11-樹(shù)中節(jié)點(diǎn)類(lèi)型為標(biāo)識(shí)符定義語(yǔ)句的中間節(jié)點(diǎn)(即IdentifierDeclStatement),然后判斷查找出的中間節(jié)點(diǎn)所對(duì)應(yīng)的語(yǔ)句中是否含有符號(hào)“[”或者“]”,如果這些條件都滿(mǎn)足,則將此標(biāo)識(shí)符定義語(yǔ)句作為切片標(biāo)準(zhǔn)的語(yǔ)句S,并且提取語(yǔ)句中定義的參數(shù)變量作為切片標(biāo)準(zhǔn)的V。最后將S和V組合成最終的切片標(biāo)準(zhǔn)(S,V)。對(duì)于示例程序,如圖2-2在其對(duì)應(yīng)的抽象語(yǔ)法樹(shù)(AST)中匹配到關(guān)鍵點(diǎn),根據(jù)數(shù)組使用作為關(guān)鍵點(diǎn)提取的切片標(biāo)準(zhǔn)為(wchar_tsource[100];,[source])。圖2-2匹配數(shù)組使用關(guān)鍵點(diǎn)通過(guò)分析上述示例,可知在根據(jù)“數(shù)組的使用”關(guān)鍵點(diǎn)生成切片標(biāo)準(zhǔn)(S,V)的過(guò)程中語(yǔ)句S需要滿(mǎn)足以下兩個(gè)條件:(1)語(yǔ)句中包含標(biāo)識(shí)符定義語(yǔ)句(IdentifierDeclStatement);(2)定義語(yǔ)句對(duì)應(yīng)的代碼中包含符號(hào)“[”或者“]”,因?yàn)閿?shù)組定義和使用時(shí)都會(huì)用到“[”和“]”。然后利用上面的切片標(biāo)準(zhǔn)(S,V)對(duì)源程序進(jìn)行切片,判斷程序依賴(lài)圖(PDG)中和切片標(biāo)準(zhǔn)(S,V)存在數(shù)據(jù)依賴(lài)和控制依賴(lài)關(guān)系的語(yǔ)句,分別構(gòu)成前向切片和后向切片,組合成最終的切片結(jié)果。針對(duì)圖2-1的示例程序,其對(duì)應(yīng)的程序依賴(lài)圖以及切片分析過(guò)程如圖2-3。切片標(biāo)準(zhǔn)為(wchar_tsource[100];,[source]),圖中綠色的線(xiàn)代表控制依賴(lài),紅色的線(xiàn)代表可達(dá)關(guān)系,語(yǔ)句“if(staticTrue)”和切片標(biāo)準(zhǔn)“(wchar_tsource[100];,[source])”之間存在控制依賴(lài),并且“if(staticTrue)”出現(xiàn)在切片標(biāo)準(zhǔn)的前面,對(duì)切片標(biāo)準(zhǔn)對(duì)應(yīng)的有影響,所以將其作為針對(duì)切片標(biāo)準(zhǔn)的后向切片的一部分。語(yǔ)句“Source[100-1]=L’\0’;”和切片標(biāo)準(zhǔn)“(wchar_tsource[100];,[source])”之間存在控制依賴(lài),語(yǔ)句“wcsncat(data,source,100)”和切片標(biāo)準(zhǔn)之間
哈爾濱工業(yè)大學(xué)專(zhuān)業(yè)碩士學(xué)位論文-12-也存在控制依賴(lài),并且這兩條語(yǔ)句都出現(xiàn)在切片標(biāo)準(zhǔn)的后面,都會(huì)受到切片標(biāo)準(zhǔn)對(duì)應(yīng)語(yǔ)句的影響,所以將其作為針對(duì)切片標(biāo)準(zhǔn)的前向切片的一部分。圖2-3數(shù)組使用相關(guān)切片過(guò)程2.3.2切片結(jié)果根據(jù)source和data在程序依賴(lài)圖當(dāng)中和別的節(jié)點(diǎn)之間的數(shù)據(jù)依賴(lài)關(guān)系和控制依賴(lài)關(guān)系生成以數(shù)組使用為關(guān)鍵點(diǎn)的切片。切片結(jié)果如圖2-4。3456if(staticTrue)wchar_tsource[100];source[100‐1]="\0";wcsncat(data,source,100);圖2-4數(shù)組使用為關(guān)鍵點(diǎn)的切片2.4算術(shù)表達(dá)式相關(guān)漏洞的程序切片算術(shù)表達(dá)式是指用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合程序語(yǔ)法規(guī)則的式子。由于算術(shù)表達(dá)式的不恰當(dāng)使用所引發(fā)的代碼漏洞稱(chēng)為以算術(shù)表達(dá)式為關(guān)鍵點(diǎn)的代碼漏洞(例如:整型溢出)。同樣以圖2-3中的代碼段為例,分析算術(shù)表達(dá)式關(guān)鍵點(diǎn)的提取以及根據(jù)關(guān)鍵點(diǎn)生成程序切片的過(guò)程。其中算術(shù)表達(dá)式的使用為造成漏洞的關(guān)鍵點(diǎn)。根據(jù)此關(guān)鍵點(diǎn)對(duì)代碼進(jìn)行切片,過(guò)濾出源代碼中只和算術(shù)表達(dá)式的使用相關(guān)的語(yǔ)句,作為漏洞檢測(cè)的數(shù)據(jù),步驟包括:(1)根據(jù)關(guān)鍵點(diǎn)生成切片標(biāo)準(zhǔn)。(2)根據(jù)切片標(biāo)準(zhǔn),生成程序切片。
本文編號(hào):3072683
【文章來(lái)源】:哈爾濱工業(yè)大學(xué)黑龍江省 211工程院校 985工程院校
【文章頁(yè)數(shù)】:63 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
本文研究?jī)?nèi)容主要流程
哈爾濱工業(yè)大學(xué)專(zhuān)業(yè)碩士學(xué)位論文-11-樹(shù)中節(jié)點(diǎn)類(lèi)型為標(biāo)識(shí)符定義語(yǔ)句的中間節(jié)點(diǎn)(即IdentifierDeclStatement),然后判斷查找出的中間節(jié)點(diǎn)所對(duì)應(yīng)的語(yǔ)句中是否含有符號(hào)“[”或者“]”,如果這些條件都滿(mǎn)足,則將此標(biāo)識(shí)符定義語(yǔ)句作為切片標(biāo)準(zhǔn)的語(yǔ)句S,并且提取語(yǔ)句中定義的參數(shù)變量作為切片標(biāo)準(zhǔn)的V。最后將S和V組合成最終的切片標(biāo)準(zhǔn)(S,V)。對(duì)于示例程序,如圖2-2在其對(duì)應(yīng)的抽象語(yǔ)法樹(shù)(AST)中匹配到關(guān)鍵點(diǎn),根據(jù)數(shù)組使用作為關(guān)鍵點(diǎn)提取的切片標(biāo)準(zhǔn)為(wchar_tsource[100];,[source])。圖2-2匹配數(shù)組使用關(guān)鍵點(diǎn)通過(guò)分析上述示例,可知在根據(jù)“數(shù)組的使用”關(guān)鍵點(diǎn)生成切片標(biāo)準(zhǔn)(S,V)的過(guò)程中語(yǔ)句S需要滿(mǎn)足以下兩個(gè)條件:(1)語(yǔ)句中包含標(biāo)識(shí)符定義語(yǔ)句(IdentifierDeclStatement);(2)定義語(yǔ)句對(duì)應(yīng)的代碼中包含符號(hào)“[”或者“]”,因?yàn)閿?shù)組定義和使用時(shí)都會(huì)用到“[”和“]”。然后利用上面的切片標(biāo)準(zhǔn)(S,V)對(duì)源程序進(jìn)行切片,判斷程序依賴(lài)圖(PDG)中和切片標(biāo)準(zhǔn)(S,V)存在數(shù)據(jù)依賴(lài)和控制依賴(lài)關(guān)系的語(yǔ)句,分別構(gòu)成前向切片和后向切片,組合成最終的切片結(jié)果。針對(duì)圖2-1的示例程序,其對(duì)應(yīng)的程序依賴(lài)圖以及切片分析過(guò)程如圖2-3。切片標(biāo)準(zhǔn)為(wchar_tsource[100];,[source]),圖中綠色的線(xiàn)代表控制依賴(lài),紅色的線(xiàn)代表可達(dá)關(guān)系,語(yǔ)句“if(staticTrue)”和切片標(biāo)準(zhǔn)“(wchar_tsource[100];,[source])”之間存在控制依賴(lài),并且“if(staticTrue)”出現(xiàn)在切片標(biāo)準(zhǔn)的前面,對(duì)切片標(biāo)準(zhǔn)對(duì)應(yīng)的有影響,所以將其作為針對(duì)切片標(biāo)準(zhǔn)的后向切片的一部分。語(yǔ)句“Source[100-1]=L’\0’;”和切片標(biāo)準(zhǔn)“(wchar_tsource[100];,[source])”之間存在控制依賴(lài),語(yǔ)句“wcsncat(data,source,100)”和切片標(biāo)準(zhǔn)之間
哈爾濱工業(yè)大學(xué)專(zhuān)業(yè)碩士學(xué)位論文-12-也存在控制依賴(lài),并且這兩條語(yǔ)句都出現(xiàn)在切片標(biāo)準(zhǔn)的后面,都會(huì)受到切片標(biāo)準(zhǔn)對(duì)應(yīng)語(yǔ)句的影響,所以將其作為針對(duì)切片標(biāo)準(zhǔn)的前向切片的一部分。圖2-3數(shù)組使用相關(guān)切片過(guò)程2.3.2切片結(jié)果根據(jù)source和data在程序依賴(lài)圖當(dāng)中和別的節(jié)點(diǎn)之間的數(shù)據(jù)依賴(lài)關(guān)系和控制依賴(lài)關(guān)系生成以數(shù)組使用為關(guān)鍵點(diǎn)的切片。切片結(jié)果如圖2-4。3456if(staticTrue)wchar_tsource[100];source[100‐1]="\0";wcsncat(data,source,100);圖2-4數(shù)組使用為關(guān)鍵點(diǎn)的切片2.4算術(shù)表達(dá)式相關(guān)漏洞的程序切片算術(shù)表達(dá)式是指用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合程序語(yǔ)法規(guī)則的式子。由于算術(shù)表達(dá)式的不恰當(dāng)使用所引發(fā)的代碼漏洞稱(chēng)為以算術(shù)表達(dá)式為關(guān)鍵點(diǎn)的代碼漏洞(例如:整型溢出)。同樣以圖2-3中的代碼段為例,分析算術(shù)表達(dá)式關(guān)鍵點(diǎn)的提取以及根據(jù)關(guān)鍵點(diǎn)生成程序切片的過(guò)程。其中算術(shù)表達(dá)式的使用為造成漏洞的關(guān)鍵點(diǎn)。根據(jù)此關(guān)鍵點(diǎn)對(duì)代碼進(jìn)行切片,過(guò)濾出源代碼中只和算術(shù)表達(dá)式的使用相關(guān)的語(yǔ)句,作為漏洞檢測(cè)的數(shù)據(jù),步驟包括:(1)根據(jù)關(guān)鍵點(diǎn)生成切片標(biāo)準(zhǔn)。(2)根據(jù)切片標(biāo)準(zhǔn),生成程序切片。
本文編號(hào):3072683
本文鏈接:http://sikaile.net/kejilunwen/zidonghuakongzhilunwen/3072683.html
最近更新
教材專(zhuān)著