[發明專利]基于漏洞指紋的脆弱性代碼克隆檢測方法及其裝置有效
| 申請號: | 201710789364.6 | 申請日: | 2017-09-05 |
| 公開(公告)號: | CN107688748B | 公開(公告)日: | 2019-09-24 |
| 發明(設計)人: | 魏強;劉臻;林超;麻榮寬;柳曉龍 | 申請(專利權)人: | 中國人民解放軍信息工程大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57;G06F21/56 |
| 代理公司: | 鄭州大通專利商標代理有限公司 41111 | 代理人: | 周艷巧 |
| 地址: | 450000 河*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 漏洞 指紋 脆弱 代碼 克隆 檢測 方法 及其 裝置 | ||
本發明涉及一種基于漏洞指紋的脆弱性代碼克隆檢測方法及其裝置,該方法包含:收集代碼樣本,建立漏洞數據庫;選定漏洞,查詢漏洞補丁信息,獲取脆弱性代碼樣本;構建代碼解析器;利用代碼解析器對脆弱性代碼樣本進行預處理,得到規范化的中間表示;將中間表示分割為大小為s行的代碼塊,通過哈希函數計算代碼塊的特征值,并組合生成漏洞指紋;利用代碼解析器對待檢測代碼進行預處理,獲取待檢測代碼的特征值序列;將漏洞指紋映射為n位的位圖,利用位圖識別特征值序列中是否存在脆弱性代碼的克隆并輸出。本發明有效應對代碼克隆中常見代碼修改手段,能夠較好地平衡檢測效率與檢測準確性之間的關系,在高效檢測大規模對象的同時保持良好的準確率。
技術領域
本發明屬于計算機軟件漏洞挖掘技術領域,特別涉及一種基于漏洞指紋的脆弱性代碼克隆檢測方法及其裝置。
背景技術
脆弱性代碼是指導致軟件漏洞產生的關鍵代碼,對脆弱性代碼的克隆可能會在開發過程中引入相同的漏洞。隨著互聯網應用的日益普及,對軟件的日益增長的需求導致了高效開發的需要,因此基于現有組件和代碼模板的重用已成為軟件開發的常用手段,開源軟件(OSS)也成為提高軟件開發效率和質量以及降低編程成本的良好解決方案。然而OSS中眾多的漏洞自然會導致由代碼克隆引起的大量軟件漏洞,這將對系統安全性構成嚴重威脅。美國Black Duck公司指出,大約三分之二的商業應用程序具有已知漏洞的代碼,并且可以預測,基于開源代碼中漏洞的攻擊數量將于2017年增加20%。因此,檢測脆弱性代碼克隆的研究至關重要。代碼克隆通常伴隨著幾種代碼修改方法,如注釋修改,變量重命名,數據類型更改,操作員更改,語句順序更改,代碼塊順序更改,冗余代碼插入和控制結構的等效轉換。Roy等人提出了基于代碼克隆的普遍接受的分類,我們使用以下代碼克隆中修改級別的定義:Level1、通過修改空格和制表符來更改代碼的布局,以及編輯注釋,代碼部分未被修改;Level2、更改變量的數據類型和函數返回值,并重命名標識符和變量;Level3、添加或刪除一些代碼語句以及修改表達式或函數調用,而不會更改代碼的原始函數;Level4、調整代碼結構而不改變語義,如改變代碼塊的順序,控制結構的等效變換。代碼修改級別的增加將直接導致代碼克隆檢測難度的增加。Level1和Level2修改可以在現有工作中有效檢測,而進一步修改通常會導致更大的計算開銷。然而,實際上,Level3和Level4的修改是相當普遍的。
作為面向源代碼級別漏洞挖掘中的重要手段,現階段國內外提出了多種軟件脆弱性代碼克隆檢測方法。比如Jang等人提出了一種快速查找操作系統代碼庫中脆弱性代碼克隆的系統ReDeBug。通過以代碼行為檢測粒度,使用滑動窗口算法與bloom過濾器查找克隆代碼。ReDeBug在速度上具有較大優勢,支持面向大規模代碼庫的檢測,但其無法應對變量重命名或數據類型更改等常見代碼修改手段,表現出了較高的漏報率與誤報率。Li等人針對緩沖區溢出漏洞提出了CLORIFI,通過n-token算法查找已知漏洞代碼的克隆以定位可能存在的漏洞,在此基礎上利用concolic測試驗證漏洞以減少誤報。CLORIFI提高了檢測的準確性,但由于脆弱性代碼克隆檢測算法的限制導致了較高的漏報率,并且檢測消耗資源較大。甘水滔等提出了基于特征矩陣的脆弱性代碼克隆檢測方法CVdetector。通過遍歷漏洞代碼片段的語法分析樹構造關鍵節點的脆弱性特征矩陣與特征向量,利用聚類算法實現了對多種類型漏洞的檢測。雖然該方法的時間開銷與檢測的代碼量呈線性關系,在效率上仍存在較大的提升空間。Kim等人提出了一種高效檢測函數級脆弱性代碼克隆的方法VUDDY,利用函數簽名比對與函數長度過濾實現了高效性與可擴展性,能夠以較高的精確度識別已知漏洞的代碼克隆。但該方法只能應對簡單代碼修改,不支持語序修改、冗余代碼插入等常見的代碼修改手段,應用場景具有較大的局限。
現有脆弱性代碼重用檢測的方法通常將目標代碼轉換為中間表示,如解析樹或控制流圖,基于此可以通過將相同結構或相同特征與已知情況相匹配來找到由代碼克隆引起的漏洞。復雜的中間表示可能有助于提高準確性,但也會導致更高的計算成本,而高抽象度可能會有效地利用,但卻失去了必要的脆弱因素。因此,如何在可接受的成本下平衡效率和準確性,以及有效地處理代碼克隆中的共同修改手段,具有重要的研究意義。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍信息工程大學,未經中國人民解放軍信息工程大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710789364.6/2.html,轉載請聲明來源鉆瓜專利網。





