[發(fā)明專(zhuān)利]基于上下文語(yǔ)義和補(bǔ)丁驗(yàn)證的漏洞代碼克隆檢測(cè)方法有效
| 申請(qǐng)?zhí)枺?/td> | 202110007740.8 | 申請(qǐng)日: | 2021-01-05 |
| 公開(kāi)(公告)號(hào): | CN112651028B | 公開(kāi)(公告)日: | 2022-09-30 |
| 發(fā)明(設(shè)計(jì))人: | 郭軍軍;李浩南;王正源 | 申請(qǐng)(專(zhuān)利權(quán))人: | 西安工業(yè)大學(xué) |
| 主分類(lèi)號(hào): | G06F21/57 | 分類(lèi)號(hào): | G06F21/57;G06F8/41 |
| 代理公司: | 陜西電子工業(yè)專(zhuān)利中心 61205 | 代理人: | 程曉霞 |
| 地址: | 710021 陜*** | 國(guó)省代碼: | 陜西;61 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 上下文 語(yǔ)義 補(bǔ)丁 驗(yàn)證 漏洞 代碼 克隆 檢測(cè) 方法 | ||
1.一種基于上下文語(yǔ)義和補(bǔ)丁驗(yàn)證的漏洞代碼克隆檢測(cè)方法,其特征在于,包含有如下步驟:
步驟1)獲取數(shù)據(jù):選定用于構(gòu)建指紋的一個(gè)漏洞,從公開(kāi)漏洞數(shù)據(jù)庫(kù)中獲取該漏洞信息,獲取該漏洞源代碼和補(bǔ)丁;
步驟2)對(duì)漏洞脆弱代碼對(duì)應(yīng)控制語(yǔ)句標(biāo)記:使用開(kāi)源圖生成工具Joern將漏洞源代碼轉(zhuǎn)換為代碼屬性圖,從中找到脆弱代碼對(duì)應(yīng)的控制語(yǔ)句并標(biāo)記;
步驟3)對(duì)漏洞源代碼和補(bǔ)丁進(jìn)行具有針對(duì)重命名克隆的抽象規(guī)范化預(yù)處理:對(duì)漏洞源代碼中漏洞函數(shù)、脆弱代碼、對(duì)應(yīng)控制語(yǔ)句及補(bǔ)丁進(jìn)行規(guī)范化和針對(duì)重命名克隆的別名替換抽象,完成預(yù)處理,得到漏洞函數(shù)、脆弱代碼、對(duì)應(yīng)控制語(yǔ)句及補(bǔ)丁的規(guī)范化中間表示;
步驟4)構(gòu)建漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù):將預(yù)處理后脆弱代碼的漏洞函數(shù)利用哈希函數(shù)生成漏洞函數(shù)的指紋并保存在漏洞函數(shù)指紋庫(kù)中;對(duì)預(yù)處理后的脆弱代碼、對(duì)應(yīng)控制語(yǔ)句和補(bǔ)丁分別利用哈希函數(shù)生成指紋保存在漏洞脆弱代碼指紋庫(kù)中,將漏洞脆弱代碼指紋庫(kù)中的指紋與漏洞函數(shù)指紋庫(kù)中的漏洞函數(shù)指紋對(duì)應(yīng)關(guān)聯(lián),共同完成一個(gè)漏洞的指紋生成;獲取可知范圍內(nèi)其他漏洞源代碼和補(bǔ)丁,實(shí)現(xiàn)漏洞的指紋生成,完成漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù)的構(gòu)建;
步驟5)通過(guò)構(gòu)建的指紋庫(kù)對(duì)待檢測(cè)代碼克隆檢測(cè):首先假設(shè)待檢測(cè)代碼所克隆的漏洞包含于構(gòu)建的漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù)中;再對(duì)待檢測(cè)代碼進(jìn)行具有針對(duì)克隆重命名的抽象規(guī)范化預(yù)處理操作,再利用哈希函數(shù)對(duì)待檢測(cè)代碼生成函數(shù)級(jí)和行級(jí)指紋,進(jìn)而通過(guò)對(duì)漏洞函數(shù)、脆弱代碼、對(duì)應(yīng)控制語(yǔ)句及補(bǔ)丁的指紋匹配檢測(cè)實(shí)現(xiàn)對(duì)待檢測(cè)代碼的克隆檢測(cè)并記錄檢測(cè)結(jié)果;
步驟6)檢測(cè)結(jié)果判定及檢測(cè)輸出:判定完成漏洞函數(shù)、脆弱代碼、對(duì)應(yīng)控制語(yǔ)句和補(bǔ)丁的克隆檢測(cè)的檢測(cè)結(jié)果是否滿(mǎn)足判定條件,若滿(mǎn)足判定條件,則待檢測(cè)代碼為脆弱性代碼克隆并進(jìn)行輸出;判定條件是需滿(mǎn)足條件1或條件2中的一個(gè)即可,其中,條件1和條件2表達(dá)如下:
條件1:待檢測(cè)代碼在漏洞函數(shù)指紋庫(kù)中檢測(cè)到有對(duì)應(yīng)的漏洞函數(shù)指紋;
條件2:待檢測(cè)代碼能夠完整檢測(cè)到脆弱代碼及對(duì)應(yīng)控制語(yǔ)句且補(bǔ)丁代碼沒(méi)有檢測(cè)到。
2.根據(jù)權(quán)利要求1所述的基于上下文語(yǔ)義和補(bǔ)丁驗(yàn)證的漏洞代碼克隆檢測(cè)方法,其特征在于,步驟3中所述的對(duì)漏洞源代碼和補(bǔ)丁進(jìn)行具有針對(duì)重命名克隆的抽象規(guī)范化預(yù)處理,包含:對(duì)代碼中的參數(shù)名稱(chēng)、局部變量、數(shù)據(jù)類(lèi)型及函數(shù)調(diào)用名分別做統(tǒng)一替換;從函數(shù)頭的參數(shù)中收集形式參數(shù),并用符號(hào)FPARAM替換體中出現(xiàn)的每次參數(shù)變量;用符號(hào)LVAR替換代碼中出現(xiàn)的所有局部變量;用符號(hào)DTYPE替換數(shù)據(jù)類(lèi)型;數(shù)據(jù)類(lèi)型不僅包括標(biāo)準(zhǔn)的C數(shù)據(jù)類(lèi)型和限定符,還包括定義的類(lèi)型;用符號(hào)FUNCCALL替換每個(gè)被調(diào)用函數(shù)的名稱(chēng)。
3.根據(jù)權(quán)利要求1所述的基于上下文語(yǔ)義和補(bǔ)丁驗(yàn)證的漏洞代碼克隆檢測(cè)方法,其特征在于,步驟4中所述的構(gòu)建漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù),包括有如下步驟:
步驟4.1)通過(guò)使用MD5哈希算法,對(duì)脆弱代碼的漏洞函數(shù)處理,生成漏洞函數(shù)指紋并將漏洞函數(shù)的長(zhǎng)度和漏洞的CVE編號(hào)同漏洞函數(shù)的指紋作為三個(gè)元素保存為一個(gè)三元組,存入漏洞函數(shù)指紋庫(kù);
步驟4.2)使用MD5哈希算法,對(duì)脆弱代碼、對(duì)應(yīng)控制語(yǔ)句和補(bǔ)丁處理,分別逐行生成脆弱代碼、對(duì)應(yīng)控制語(yǔ)句和補(bǔ)丁的指紋,按語(yǔ)句順序存入漏洞脆弱代碼指紋庫(kù),然后將其與對(duì)應(yīng)漏洞函數(shù)對(duì)應(yīng)關(guān)聯(lián);
步驟4.3)重復(fù)執(zhí)行步驟1-4,即通過(guò)重復(fù)獲取可知范圍內(nèi)的其他漏洞源代碼和補(bǔ)丁數(shù)據(jù)、對(duì)漏洞脆弱代碼對(duì)應(yīng)控制語(yǔ)句標(biāo)記、對(duì)漏洞源代碼和補(bǔ)丁進(jìn)行具有針對(duì)重命名克隆的抽象規(guī)范化預(yù)處理和漏洞指紋生成操作,完成漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù)構(gòu)建。
4.根據(jù)權(quán)利要求1所述的基于上下文語(yǔ)義和補(bǔ)丁驗(yàn)證的漏洞代碼克隆檢測(cè)方法,其特征在于,步驟5中所述的漏洞代碼克隆檢測(cè)方法,包括有如下步驟:
步驟5.1)待檢測(cè)代碼選擇:假設(shè)待檢測(cè)代碼所克隆的漏洞包含于構(gòu)建的漏洞函數(shù)和漏洞脆弱代碼指紋庫(kù);
步驟5.2)待檢測(cè)代碼預(yù)處理:對(duì)待檢測(cè)代碼進(jìn)行漏洞源代碼和補(bǔ)丁的抽象規(guī)范化預(yù)處理操作;
步驟5.3)待檢測(cè)代碼漏洞函數(shù)克隆檢測(cè):利用MD5哈希函數(shù)對(duì)預(yù)處理后的待檢測(cè)代碼以函數(shù)為單位生成函數(shù)級(jí)指紋,通過(guò)哈希查找的方法在漏洞函數(shù)指紋庫(kù)中查找相同漏洞函數(shù)指紋;首先在漏洞函數(shù)指紋庫(kù)中查找是否存在相同的漏洞函數(shù)長(zhǎng)度,再在相同函數(shù)長(zhǎng)度的漏洞函數(shù)指紋中查找是否有與待檢測(cè)代碼相同哈希值的漏洞函數(shù)指紋;如果檢測(cè)到對(duì)應(yīng)漏洞函數(shù)指紋,結(jié)束檢測(cè)并記錄檢測(cè)結(jié)果;如果沒(méi)有檢測(cè)到對(duì)應(yīng)漏洞函數(shù),則進(jìn)入下一步;
步驟5.4)待檢測(cè)代碼脆弱代碼克隆檢測(cè):利用MD5哈希算法對(duì)預(yù)處理后的待檢測(cè)代碼以行為單位利用哈希函數(shù)進(jìn)行處理,生成待檢測(cè)代碼的行級(jí)指紋,并在漏洞脆弱代碼指紋庫(kù)中對(duì)待檢測(cè)代碼中是否存在脆弱代碼進(jìn)行行檢測(cè),行檢測(cè)采用貪婪算法;如果行檢測(cè)成功,則進(jìn)入下一步;反之,結(jié)束檢測(cè)并記錄檢測(cè)結(jié)果;
步驟5.5)待檢測(cè)代碼脆弱代碼對(duì)應(yīng)控制語(yǔ)句克隆檢測(cè):因脆弱代碼行檢測(cè)中忽略上下文關(guān)系,對(duì)待檢測(cè)代碼的行級(jí)指紋在漏洞脆弱代碼指紋庫(kù)中檢測(cè)是否存在脆弱代碼對(duì)應(yīng)控制語(yǔ)句來(lái)驗(yàn)證上下文關(guān)系,如果成功檢測(cè)到脆弱代碼對(duì)應(yīng)控制語(yǔ)句,則進(jìn)入下一步;反之,結(jié)束檢測(cè)并記錄檢測(cè)結(jié)果;
步驟5.6)通過(guò)補(bǔ)丁指紋檢測(cè)漏洞修補(bǔ)情況并記錄:對(duì)待檢測(cè)代碼的行級(jí)指紋在漏洞脆弱代碼指紋庫(kù)中檢測(cè)是否存在脆弱代碼對(duì)應(yīng)補(bǔ)丁指紋來(lái)驗(yàn)證漏洞修補(bǔ)情況,如果成功檢測(cè)到脆弱代碼對(duì)應(yīng)的補(bǔ)丁指紋,則檢測(cè)到待檢測(cè)代碼已修補(bǔ)漏洞,結(jié)束檢測(cè)并記錄檢測(cè)結(jié)果;反之,未檢測(cè)到脆弱代碼補(bǔ)丁指紋,則待檢測(cè)代碼未修補(bǔ)漏洞,同樣結(jié)束檢測(cè)并記錄檢測(cè)結(jié)果。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于西安工業(yè)大學(xué),未經(jīng)西安工業(yè)大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110007740.8/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過(guò)保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過(guò)保護(hù)特定的外圍設(shè)備,如鍵盤(pán)或顯示器
G06F21-06 .通過(guò)感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過(guò)限制訪(fǎng)問(wèn)計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過(guò)限制訪(fǎng)問(wèn)或處理程序或過(guò)程
- 自動(dòng)創(chuàng)建上下文信息提供配置的系統(tǒng)
- 用于管理上下文的方法、系統(tǒng)和裝置
- 一種基于本體的上下文感知應(yīng)用平臺(tái)框架模型
- 一種基于上下文感知的智能家居系統(tǒng)
- 實(shí)現(xiàn)上下文感知業(yè)務(wù)應(yīng)用的方法和相關(guān)裝置
- 一種多推理引擎融合上下文感知系統(tǒng)及其工作方法
- 多個(gè)并發(fā)上下文虛擬演進(jìn)型會(huì)話(huà)管理(虛擬ESM)
- 一種基于異質(zhì)上下文感知的推薦方法
- 一種可提高上下文質(zhì)量的本體建模方法及裝置
- 微服務(wù)全局上下文控制方法及系統(tǒng)
- 面向語(yǔ)義Web服務(wù)程序設(shè)計(jì)的語(yǔ)義數(shù)據(jù)表示和處理方法
- 一種基于語(yǔ)義的三維模型檢索系統(tǒng)和方法
- 一種計(jì)算機(jī)語(yǔ)義工程系統(tǒng)
- 導(dǎo)航方法及裝置
- 一種分層次多語(yǔ)義網(wǎng)系統(tǒng)及方法
- 一種基于上下文的語(yǔ)義匹配方法和系統(tǒng)
- 遠(yuǎn)程語(yǔ)義識(shí)別方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種基于語(yǔ)義依存關(guān)系的醫(yī)療文本標(biāo)注方法
- 基于多級(jí)語(yǔ)義表征和語(yǔ)義計(jì)算的信號(hào)語(yǔ)義識(shí)別方法
- 語(yǔ)義分類(lèi)方法及裝置、存儲(chǔ)介質(zhì)及電子設(shè)備





