[發(fā)明專利]一種基于語法特征和語義特征的軟件安全漏洞檢測(cè)方法有效
| 申請(qǐng)?zhí)枺?/td> | 202011488425.3 | 申請(qǐng)日: | 2020-12-16 |
| 公開(公告)號(hào): | CN112541180B | 公開(公告)日: | 2022-09-13 |
| 發(fā)明(設(shè)計(jì))人: | 危勝軍;胡昌振;鐘浩;陶莎;趙敬賓 | 申請(qǐng)(專利權(quán))人: | 北京理工大學(xué);鵬城實(shí)驗(yàn)室 |
| 主分類號(hào): | G06F21/57 | 分類號(hào): | G06F21/57;G06F11/36;G06N3/04 |
| 代理公司: | 北京中海智圣知識(shí)產(chǎn)權(quán)代理有限公司 11282 | 代理人: | 楊樹芬 |
| 地址: | 100081 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 語法 特征 語義 軟件 安全漏洞 檢測(cè) 方法 | ||
1.一種基于語法特征和語義特征的軟件安全漏洞檢測(cè)方法,其特征在于,包括以下步驟:
步驟1、確定檢測(cè)對(duì)象的粒度:
檢測(cè)對(duì)象的粒度是一個(gè)函數(shù)、一個(gè)文件、一個(gè)組件或者任意一段有關(guān)聯(lián)關(guān)系的代碼片段,根據(jù)實(shí)際的檢測(cè)項(xiàng)目需要確定,檢測(cè)項(xiàng)目的語言是C/C++、Java、PHP;
步驟2、建立軟件歷史漏洞庫:
從公開的軟件漏洞庫中搜集與檢測(cè)軟件項(xiàng)目編程語言相同的軟件安全漏洞,建立針對(duì)語言類的漏洞樣本庫,樣本大小為檢測(cè)粒度大小,漏洞庫表明了檢測(cè)粒度大小的樣本具有漏洞的情況,即每個(gè)樣本是否具有漏洞和具有漏洞的類型和數(shù)量;
使用公共漏洞數(shù)據(jù)庫SARD數(shù)據(jù)集,JTS的版本為JTS-1.3,共包含246852個(gè)函數(shù),具有漏洞的函數(shù)105244,占總樣本的42%,通過直接分析文件名與函數(shù)名就能得到每個(gè)函數(shù)的漏洞有無的標(biāo)簽,也就是采用的漏洞標(biāo)簽是1和0,表示漏洞的有和無;
步驟3、建立檢測(cè)對(duì)象的抽象語法樹:
在步驟1的基礎(chǔ)上,基于LLVM編譯器對(duì)檢測(cè)對(duì)象進(jìn)行解析,基于編譯器提供的第三方接口Clang Lib,建立檢測(cè)對(duì)象的抽象語法樹;
步驟4、對(duì)抽象語法樹進(jìn)行嵌入:
在步驟3的基礎(chǔ)上,針對(duì)得到的檢測(cè)對(duì)象的抽象語法樹,按照深度優(yōu)先搜索算法對(duì)抽象語法樹進(jìn)行遍歷,生成針對(duì)語法樹節(jié)點(diǎn)的節(jié)點(diǎn)序列,針對(duì)步驟2中的所有樣本,生成每個(gè)樣本的抽象語法樹,并生成每個(gè)抽象語法樹的節(jié)點(diǎn)序列,基于步驟2的漏洞庫中所有樣本對(duì)應(yīng)的抽象語法樹的節(jié)點(diǎn)序列,使用word2vec嵌入算法對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行嵌入,得到節(jié)點(diǎn)的向量表示;
步驟5、對(duì)檢測(cè)對(duì)象軟件源代碼進(jìn)行編譯:
在步驟1的基礎(chǔ)上,基于LLVM編譯器對(duì)檢測(cè)對(duì)象進(jìn)行編譯,獲取代碼的中間表示;
步驟6、建立檢測(cè)對(duì)象的程序依賴圖:
在步驟5的基礎(chǔ)上,基于代碼的中間表示IR,通過LLVM提供的Pass框架,建立檢測(cè)對(duì)象的程序依賴圖;
步驟7、對(duì)程序依賴圖進(jìn)行嵌入,在步驟6的基礎(chǔ)上,針對(duì)得到的檢測(cè)對(duì)象的PDG,對(duì)PDG進(jìn)行遍歷,生成針對(duì)PDG的節(jié)點(diǎn)序列,具體包括以下步驟:
步驟7.1、設(shè)一個(gè)PDG圖的節(jié)點(diǎn)集合為V,遍歷集合V,輸出所有入度為0的節(jié)點(diǎn),設(shè)為V1,且V=V-V1;
步驟7.2、對(duì)于V1中所有節(jié)點(diǎn)的在V中的后繼節(jié)點(diǎn),其入度減1;
步驟7.3、重復(fù)步驟7.1和步驟7.2,直到V中節(jié)點(diǎn)數(shù)為0,結(jié)束;
步驟7.4、針對(duì)步驟2中的所有樣本,同樣的方法生成每個(gè)樣本的PDG,并生成每個(gè)PDG的節(jié)點(diǎn)序列,基于步驟2的漏洞庫中所有樣本對(duì)應(yīng)的PDG的節(jié)點(diǎn)序列,使用word2vec嵌入算法對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行嵌入,得到節(jié)點(diǎn)的向量表示;
步驟8、使用圖卷積神經(jīng)網(wǎng)絡(luò)對(duì)AST的特征進(jìn)行學(xué)習(xí);
步驟9、使用雙向LSTM對(duì)PDG的特征進(jìn)行學(xué)習(xí):
在步驟7的基礎(chǔ)上,選取雙向長(zhǎng)短期記憶網(wǎng)絡(luò)建立針對(duì)PDG語義特征的深度學(xué)習(xí)模型,BLSTM對(duì)時(shí)間序列輸入具有好的學(xué)習(xí)能力,PDG為時(shí)間序列結(jié)構(gòu),選擇BLSTM模型;
使用的BLSTM包括四層:輸入層、雙向LSTM處理單元層、Attention層與全連接層;
步驟10、建立針對(duì)語法特征和語義特征的融合模型,在步驟8和9的基礎(chǔ)上,選擇兩層的全連接神經(jīng)網(wǎng)絡(luò)和softmax分類器建立融合模型,將步驟8和步驟9的輸出作為全連接層的輸入,全連接層的輸出作為softmax的輸入,Softmax的輸出為漏洞的概率;
步驟11、訓(xùn)練和測(cè)試檢測(cè)模型;
步驟12、將檢測(cè)模型應(yīng)用于新的軟件模塊,將步驟11中獲得的檢測(cè)模型應(yīng)用于新的軟件模塊,首先建立新的軟件模塊的AST和PDG,轉(zhuǎn)換為向量表示,將向量作為模型的輸入,模型運(yùn)行的輸出即為新的軟件模塊具有漏洞的概率。
2.根據(jù)權(quán)利要求1所述的一種基于語法特征和語義特征的軟件安全漏洞檢測(cè)方法,其特征在于,所述步驟8包括以下步驟:
步驟8.1、在步驟4的基礎(chǔ)上,選取圖卷積神經(jīng)網(wǎng)絡(luò)建立針對(duì)AST語法特征的深度學(xué)習(xí)模型;
步驟8.2、將步驟4中得到的節(jié)點(diǎn)的向量表示作為圖卷積神經(jīng)網(wǎng)絡(luò)的輸入,基于圖卷積神經(jīng)網(wǎng)絡(luò)直接對(duì)AST的樹形結(jié)構(gòu)的特征進(jìn)行學(xué)習(xí),使用的圖卷積神經(jīng)網(wǎng)絡(luò)包括四層:輸入層、卷積層、池化層和全連接層。
3.根據(jù)權(quán)利要求1所述的一種基于語法特征和語義特征的軟件安全漏洞檢測(cè)方法,其特征在于,所述步驟11包括以下步驟:
步驟11.1、在步驟2建立的漏洞數(shù)據(jù)庫的基礎(chǔ)上,基于步驟3將步驟2中的檢測(cè)對(duì)象轉(zhuǎn)換為AST,基于步驟4得到AST的向量表示;基于步驟6將步驟2中的檢測(cè)對(duì)象轉(zhuǎn)換為PDG;
步驟11.2、基于步驟7得到PDG的向量表示;將AST的向量表示以及PDG的向量表示,分別作為圖卷積神經(jīng)網(wǎng)絡(luò)和BLSTM的輸入,檢測(cè)對(duì)象的標(biāo)簽作為分類器的輸出,采用Adam優(yōu)化訓(xùn)練算法對(duì)整個(gè)模型進(jìn)行訓(xùn)練和測(cè)試。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京理工大學(xué);鵬城實(shí)驗(yàn)室,未經(jīng)北京理工大學(xué);鵬城實(shí)驗(yàn)室許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011488425.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過限制訪問或處理程序或過程
- 用于從受控對(duì)話語法創(chuàng)建混合主導(dǎo)語法的方法和設(shè)備
- 語音識(shí)別裝置及其方法
- 模擬執(zhí)行網(wǎng)頁以刪除并整理原始碼的系統(tǒng)及其方法
- 基于多元特征的英語作文語法錯(cuò)誤自動(dòng)糾正方法
- 用于生成源碼的方法和裝置
- 一種風(fēng)控規(guī)則編輯器交互裝置及方法
- 一種基于SQL語言的語法語句的擴(kuò)展方法及系統(tǒng)
- 一種基于聲明式語法的兩層可視化聯(lián)動(dòng)編排方法及系統(tǒng)
- 語法改錯(cuò)質(zhì)量評(píng)估方法和系統(tǒng)
- 機(jī)器翻譯中的語法自糾正方法
- 面向語義Web服務(wù)程序設(shè)計(jì)的語義數(shù)據(jù)表示和處理方法
- 一種基于語義的三維模型檢索系統(tǒng)和方法
- 一種計(jì)算機(jī)語義工程系統(tǒng)
- 導(dǎo)航方法及裝置
- 一種分層次多語義網(wǎng)系統(tǒng)及方法
- 一種基于上下文的語義匹配方法和系統(tǒng)
- 遠(yuǎn)程語義識(shí)別方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種基于語義依存關(guān)系的醫(yī)療文本標(biāo)注方法
- 基于多級(jí)語義表征和語義計(jì)算的信號(hào)語義識(shí)別方法
- 語義分類方法及裝置、存儲(chǔ)介質(zhì)及電子設(shè)備





