[發明專利]一種面向漏洞檢測的二進制代碼相似性分析方法有效
| 申請號: | 202011555496.0 | 申請日: | 2020-12-24 |
| 公開(公告)號: | CN112733137B | 公開(公告)日: | 2021-11-16 |
| 發明(設計)人: | 王莘;姜訓智;程蕾蓉 | 申請(專利權)人: | 哈爾濱工業大學 |
| 主分類號: | G06F21/56 | 分類號: | G06F21/56;G06F21/57;G06F8/41;G06F8/53 |
| 代理公司: | 哈爾濱市陽光惠遠知識產權代理有限公司 23211 | 代理人: | 張宏威 |
| 地址: | 150001 黑龍*** | 國省代碼: | 黑龍江;23 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 漏洞 檢測 二進制 代碼 相似性 分析 方法 | ||
1.一種面向漏洞檢測的二進制代碼相似性分析方法,其特征是:包括以下步驟:
步驟1:選定源代碼漏洞庫;
步驟2:將源代碼漏洞庫中代碼進行編譯,形成二進制文件;
步驟3:根據得到的二進制文件,通過詞嵌入模型對二進制文件進行訓練,生成指令的嵌入向量;
所述步驟3具體為:
步驟3.1:利用詞嵌入模型對二進制文件進行訓練,生成指令的嵌入向量,一個匯編指令是由一個操作碼和兩個操作數組成的序列:ins=Opcode,Operand1,Operand2;空操作數由特殊標記EMPTY代替,所有操作碼和操作數組成一個集合,每個操作碼和操作數都被分配一個索引號;一條指令抽象為三個整數的序列,其中每個整數代表一個操作碼或操作數的索引,一個基本塊是一個匯編指令序列b=ins1,ins2,...,insn,即包含三個有序整數的序列;
一個匯編函數是一組基本塊f={b1,b2,...,bm},當兩個匯編函數對所有的輸入產生完全相同的輸出,那么就是相同的;
步驟3.2:基于PV-DM模型設計的詞嵌入模型,PV-DM模型基于文檔中的標記學習文檔表示,文檔是按順序布局的,通過匯編函數表示為控制流圖CFG,將控制流圖建模為多個序列,每個序列對應于一個潛在的執行軌跡,所述軌跡包含線性布局的匯編指令,給定一個二進制文件,使用angr對二進制文件進行反匯編,提取出一個匯編函數列表、基本塊和控制流圖;對于函數fs中的每個序列bi,神經網絡從一開始就遍歷指令,對于每一條指令insj,通過利用前一個指令insj-1和下一個指令insj+1和指令所在的函數向量,最大化在其當前指令處的概率,來預測當前指令tc,通過下式表示概率:
鄰居指令提供的向量捕捉詞匯語義關系,函數的向量記住了給定上下文中無法預測的內容;對每個操作數和操作碼構建詞典,將操作數平均后與操作碼拼接形成指令的向量表示;
步驟4:對指令嵌入向量進行分析,生成基本塊嵌入向量;
步驟5:對生成的基本塊嵌入向量進行相似性檢測,確定二進制文件是否包含漏洞。
2.根據權利要求1所述的一種面向漏洞檢測的二進制代碼相似性分析方法,其特征是:所述步驟1中選用OpenSSL作為源代碼漏洞庫。
3.根據權利要求1所述的一種面向漏洞檢測的二進制代碼相似性分析方法,其特征是:所述步驟2具體為:將源代碼漏洞庫中代碼通過不同的優化級別和編譯選項編譯成對應的二進制文件。
4.根據權利要求1所述的一種面向漏洞檢測的二進制代碼相似性分析方法,其特征是:所述步驟4具體為:
對指令嵌入向量進行分析,生成基本塊嵌入向量,通過anger生成函數的ICFG,通過為字符串和庫函數創建虛擬節點,并從調用點向這些虛擬節點繪制邊,使得兩個圖形在終端虛擬節點上合并成一個,將合成的圖和基本塊的嵌入輸入TADW算法中,通過交替最小二乘ALS算法最小化損失函數,多次迭代優化后,生成基本塊的嵌入。
5.根據權利要求1所述的一種面向漏洞檢測的二進制代碼相似性分析方法,其特征是:所述步驟5具體為:
基于基本塊嵌入向量進行相似性檢測,將兩個函數所對應的向量進行余弦相似度比較,對相似度大于閾值0.5的函數,再分別對每對基本塊的向量進行余弦相似度度量,最后得到二進制文件包含的top K個漏洞。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于哈爾濱工業大學,未經哈爾濱工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011555496.0/1.html,轉載請聲明來源鉆瓜專利網。





