[發明專利]一種基于深度學習的漏洞檢測方法及系統有效
| 申請號: | 201711089352.9 | 申請日: | 2017-11-08 |
| 公開(公告)號: | CN107885999B | 公開(公告)日: | 2019-12-24 |
| 發明(設計)人: | 金海;鄒德清;李珍;王蘇娟 | 申請(專利權)人: | 華中科技大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57 |
| 代理公司: | 42201 華中科技大學專利中心 | 代理人: | 李智;曹葆青 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 深度 學習 漏洞 檢測 方法 系統 | ||
1.一種基于深度學習的漏洞檢測方法,其特征在于,包括:
(1)離線漏洞分類器訓練步驟:對訓練程序提取庫/API函數調用候選代碼段,給候選代碼段添加類型標簽,并將候選代碼段轉換為向量,將向量輸入神經網絡模型進行訓練,得到漏洞分類器;
(2)在線漏洞檢測步驟:對目標程序提取庫/API函數調用候選代碼段,將候選代碼段轉換為向量,采用訓練好的漏洞分類器對候選代碼段進行分類,輸出含漏洞的代碼段;
步驟(1)具體包括以下步驟:
(1.1)提取庫/API函數調用候選代碼段:從訓練程序中提取庫/API函數調用;對于每個庫/API函數調用,針對各參數分別生成程序切片,并將各參數的程序切片合并,生成庫/API函數調用候選代碼段;
(1.2)給候選代碼段添加類型標簽:對步驟(1.1)中得到的每個庫/API函數調用候選代碼段,若包含已知的漏洞代碼,則添加有漏洞標簽,否則添加無漏洞標簽;
(1.3)將候選代碼段轉換為向量:通過除去非ASCII字符和注釋,映射用戶自定義變量名和函數名為符號名稱,將步驟(1.1)中得到的每個庫/API函數調用候選代碼段表示為符號表征,通過詞法解析將符號表征轉換為單詞序列,然后將單詞序列編碼為向量;
(1.4)訓練神經網絡模型:將步驟(1.3)得到的向量和步驟(1.2)得到的類型標簽,輸入到神經網絡模型訓練,得到訓練好的漏洞分類器。
2.根據權利要求1所述的方法,其特征在于,所述步驟(1.1)生成程序切片的具體實施方式為:通過對程序進行詞法、語法分析,生成過程間程序依賴圖;對于每個接收外部輸入的庫/API函數調用,基于程序依賴圖對各參數分別生成前向程序切片;對于每個不接收外部輸入的庫/API函數調用,基于程序依賴圖對各參數分別生成后向程序切片。
3.根據權利要求2所述的方法,其特征在于,所述步驟(1.3)還通過調整單詞個數使得向量的長度等于預定值,具體實現方式為:
對于采用前向程序切片生成的候選代碼段,通過在向量的尾部填充0或截斷來生成固定長度的向量;對于采用后向程序切片生成的候選代碼段,通過在向量的前部填充0或截斷來生成固定長度的向量。
4.根據權利要求1或2或3所述的方法,其特征在于,所述步驟(1.1)將各參數的程序切片合并的具體實施方式為:對于屬于相同用戶自定義函數的語句,按照語句在函數中出現的順序合并,其中,重復的語句僅保留一條;對于屬于不同用戶自定義函數的語句,若在程序切片中這些用戶自定義函數間已存在順序,則按此函數順序合并,否則采用隨機的函數順序合并。
5.根據權利要求1或3所述的方法,其特征在于,所述步驟(1.3)的將單詞序列編碼為向量采用word2vec、gensim、one-hot方法中的任意一種。
6.根據權利要求1所述的方法,其特征在于,所述步驟(1.4)的神經網絡模型采用循環神經網絡、雙向循環神經網絡、卷積神經網絡中的任意一種。
7.一種基于深度學習的漏洞檢測系統,其特征在于,包括:
離線漏洞分類器訓練模塊,用于對訓練程序提取庫/API函數調用候選代碼段,給候選代碼段添加類型標簽,并將候選代碼段轉換為向量,這些向量輸入到神經網絡模型進行訓練,最后輸出訓練好的漏洞分類器;
在線漏洞檢測模塊,用于對目標程序提取庫/API函數調用候選代碼段,并將候選代碼段轉換為向量,然后采用訓練好的漏洞分類器來分類候選代碼段,最后輸出分類結果為含漏洞的代碼段;
所述離線漏洞分類器訓練模塊包括:
訓練程序候選代碼段提取模塊,用于從訓練程序中提取庫/API函數調用,對于每個庫/API函數調用,針對各參數分別生成程序切片,并將各參數的程序切片合并,生成庫/API函數調用候選代碼段;
訓練程序候選代碼段類型標記模塊,用于對訓練程序中每個庫/API函數調用候選代碼段,若包含已知的漏洞代碼,添加有漏洞標簽,否則添加無漏洞標簽;
訓練程序候選代碼段向量生成模塊,用于通過除去非ASCII字符和注釋,映射用戶自定義變量名和函數名為符號名稱,將訓練程序中每個庫/API函數調用候選代碼段表示為符號表征,通過詞法解析將符號表征轉換為單詞序列,然后將單詞序列編碼為向量;
訓練神經網絡模型模塊,用于將候選代碼段的向量和候選代碼段的類型標簽,輸入到神經網絡模型訓練,通過調節各參數,得到訓練好的漏洞分類器。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華中科技大學,未經華中科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711089352.9/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種罐頭生產線的定量灌裝系統
- 下一篇:軋制油灌裝系統





