999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于深度學習的動靜結合的漏洞挖掘方法*

2021-03-21 04:34:24馨,易
通信技術 2021年2期
關鍵詞:檢測方法模型

寧 馨,易 平

(上海交通大學,上海 200240)

0 引言

隨著互聯網在全球的普及、物聯網技術的不斷發展、數字經濟的廣泛應用,圍繞網絡和數據的服務與應用呈現爆發式增長。豐富的應用場景暴露出越來越多的網絡安全風險和問題,并在全球范圍內產生廣泛而深遠的影響。圖1顯示了自2019年來CNNVD收錄的漏洞數量變化[1],平均每月新增漏洞數量約1 500個。

圖1 CNNVD采集的漏洞數量(2019/01—2020/10)

安全漏洞是網絡安全風險中最主要的部分。安全漏洞是在硬件、軟件以及協議的具體實現或系統安全策略上存在的缺陷,使攻擊者能夠在未經授權的情況下訪問和修改系統。安全漏洞不僅是病毒、蠕蟲等的重要傳播途徑,也是網絡攻防的焦點,是網絡安全領域的核心問題。因此,漏洞挖掘一直是熱門的研究領域。

符號執行和模糊測試是目前比較常用的漏洞檢測方法。符號執行(Symbolic Execution)由King等[2]首次提出,是一種程序分析技術,使用符號值代替具體值作為程序的輸入,根據漏洞分析規則,通過約束求解等過程得到初步結果,再對結果進行分析處理找出漏洞檢測。模糊測試(Fuzzing)的概念最早由Miller[3]等人提出,已經發展成為一種快速有效地檢測程序中漏洞的方法[4-6]。模糊測試是一種通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。

隨著人工智能的不斷發展,用深度學習的方法來進行漏洞檢測逐漸成為熱門研究領域。目前已經發表了很多用深度學習的方法來檢測軟件漏洞的論文,包括源碼層面的檢測和基于中間語言的檢測。但是,這類方法相較于傳統的模糊測試等方法誤報較多,且由于模型可能會學習到較多訓練集上的特征,泛化性較差。它在訓練集和測試集上效果可能很好,但是在真實代碼中的準確率下降嚴重。

本文提出了一種將深度學習與漏洞代碼檢測和模糊測試結合的方法,通過對待測代碼進行切片和用深度學習模型檢測,先定位到可能觸發漏洞的敏感點,再利用定向模糊測試的方法對代碼進行測試,確定檢測模型判斷的漏洞的可觸發性。

本文的組織結構如下:第1節介紹漏洞檢測及模糊測試方面的相關研究;第2節介紹所采用的方法,包括代碼切片、檢測模型的訓練及定向模糊測試;第3節是模型訓練和模糊測試的實驗結果;第4節是總結。

1 相關研究

1.1 漏洞檢測

隨著深度學習的發展,用深度學習的方法分析程序中的漏洞成為可能。

鄒德清[7]等人提出了第一個基于深度學習進行漏洞檢測的系統化框架SySeVR,并構建了基于深度學習的細粒度漏洞檢測系統VulDeePecker,將人類專家從煩瑣、主觀的手工定義feature中解放出來。與靜態漏洞檢測方法相比,它顯著降低了漏報率。該系統以基于語義的漏洞(Semantics-based Vulnerability Candidates,SeVC)為粒度進行檢測,無法準確定位到漏洞行。

劉強[8]等人提出了一種基于程序切片的相似度匹配的漏洞檢測方法,研究了根據關鍵點對代碼進行切片、特征抽取和向量化的方法,通過計算待測代碼切片與漏洞樣本切片的相似度,判斷待測樣本中是否含有漏洞。該系統沒有使用深度學習的方法,后續可以引入機器學習的方法進行優化。

此外,還有利用中間語言代碼[9]和深度表征學習[10]來進行漏洞檢測的研究,取得了一定的成效。

1.2 模糊測試

模糊測試(Fuzzing)是一種通過向目標系統提供非預期輸入并監視異常結果發現軟件漏洞的方法。它主要通過輸入大量數據發現程序中存在的問題??梢酝ㄟ^使程序某些內容溢出出現異常,或者輸入程序規定范圍內的數據結果出現異常,找出程序漏洞。模糊測試的概念最早由Miller[3]等人提出,已經發展成為一種快速有效的檢測程序漏洞的方法[4-6]。

AFL(American Fuzzy Lop)[11]最初是由Michal Zalewski開發的一個模糊測試工具,通過使用一種特殊的編譯工具和遺傳算法來自動發現有效的測試用例。這些測試用例會觸發目標文件中的新狀態,大大提高了模糊測試的覆蓋率,且具有適度的性能開銷。

AFLgo[12]是基于AFL開發的一個定向灰盒模糊測試的工具,通過設置一個目標點來進行定向模糊測試。對于每個種子,AFLgo會計算其執行路徑到目標點的距離,并計劃為更接近目標點的種子提供更多能量。其中,能量高的種子會有更多的變異機會。它的算法核心是模擬退火算法,每次隨機變異種子,通過計算能量來判斷此次變異是否是在向更優的方向靠近,以此來不斷逼近目標點,實現定向的功能。

此外,微軟研究院[13]還將模糊測試和強化學習結合起來,提出了一種利用強化學習來進行模糊測試的方法。利用馬爾可夫決策過程的概念,將模糊測試轉化為強化學習的問題,利用Q-Learning算法進行決策,通過在初始程序輸入上執行一組種子變異方法后計算的獎勵學習一個策略,以指導下一步種子變異所使用的方法,從而獲得更高的回報。這種利用強化學習進行的模糊測試優于采用隨機變異的模糊測試。

2 實現方法

項目總體流程,如圖2所示。它主要通過代碼切片、模型訓練及檢測、定向模糊測試3個步驟來實現漏洞檢測,具體步驟如下:

(1)利用切片程序根據敏感點對代碼進行切片,獲得漏洞切片;

(2)利用獲得的漏洞切片進行檢測模型的訓練及漏洞檢測;

(3)根據模型檢測的結果,對模型檢測出的有漏洞的代碼進行定向模糊測試。

圖2 項目總體流程

2.1 程序切片

漏洞代碼在用于模型訓練前要進行數據預處理,其中最主要的步驟就是對漏洞進行切片,剔除漏洞代碼中與漏洞觸發無關的語句,使模型更容易學習到漏洞代碼的特征。通過對代碼進行切片,也可以減少向檢測模型中輸入的代碼長度。

本文實現了一個簡單的用于源碼切片的工具,實現了跨函數、跨文件切片,同時支持自動掃描敏感函數和手動選擇敏感行兩種切片方式。具體的切片過程如圖3所示。

將所有要合并在一起進行切片的文件路徑作為切片工具的輸入,如果要手動選擇切片點,則還要將切片點所在的文件及其行號輸入到切片工具。

步驟1:切片程序先在所有要切片的文件中掃描敏感函數(如果手動選擇了切片點,則會跳過這一步)。

步驟2:程序會將掃描到的敏感函數或手動選擇的敏感行中包含的函數及變量標記為被污染的標識符。

步驟3:對于被污染的函數,將其所有參數及調用該函數的行也標記為被污染。

步驟4:對于被污染的變量,程序將遍歷該變量的作用域,尋找包含該變量的行,并將這些行中出現的新的函數與變量也標記為被污染。

步驟5:重復步驟3和步驟4,直到不再出現新的被污染標識符。

步驟6:將所有包含被污染標識符的代碼行記錄下來,輸出只保留這些行的切片文件,最終得到代碼的切片。

模型訓練時多是已知漏洞代碼中漏洞觸發點的行號,所以采用手動選擇敏感行的方式,以漏洞的觸發點為切片點進行切片。在利用模型進行漏洞檢測時,因為無法得知漏洞觸發點的位置,甚至不能確定待測代碼中是否含有漏洞,所以采用自動掃描敏感函數的方式進行切片,掃描程序中可能觸發漏洞的敏感行,并將其作為切片點進行切片。

2.2 模型訓練及檢測

本文訓練一個基于代碼的相似性檢測代碼漏洞的10分類的檢測模型。對于得到的代碼切片,還要進行數據預處理才能用于模型訓練,流程如圖4所示。預處理主要包括把代碼中的宏定義替換掉和對代碼進行函數名和變量名的替換。替換函數名和變量名的主要目的是剔除自定義的函數名和變量名對檢測模型的影響,將除了敏感函數之外的函數名統一替換為FUN1、FUN2的形式,將所有變量名統一替換為VAR1、VAR2的形式。

圖3 切片程序工作流程

圖4 代碼預處理流程

經過預處理的樣本先進行分詞,將代碼轉換成由詞組成的列表,之后對每個詞進行編號,將編號的結果存儲在一個字典中,再把所有的詞替換成對應的編號,利用Word2Vec把所有的詞編號轉換為詞向量,從而將所有的樣本都轉換成向量的形式。因為是基于代碼的相似性來判斷代碼中是否含有漏洞,所以將正負樣本組成不相似樣本對,將兩個同類漏洞的負樣本組成相似樣本對(正樣本是無漏洞代碼,負樣本為有漏洞代碼),并將這些樣本對輸入到Siamese孿生網絡中進行訓練。本文利用多個二分類模型實現多分類效果,共訓練了10個二分類檢測模型,每個模型檢測一種類型的漏洞,整合10個模型的分類結果,最終得到漏洞檢測結果。

在進行漏洞檢測時,對于一段待檢測的代碼切片也要先進行預處理,之后分別用10種模型對代碼進行相似性檢測。每個模型返回的結果是一個取值范圍在0~1之間的浮點數。該數值越接近1,說明這段待檢測的代碼與這種類型的漏洞的相似性越高。取10種模型中相似性最高(即模型返回的數值最大)的一類判斷為待測代碼的漏洞類型。若相似性最高的模型返回的分值也沒有達到設定的閾值,則判斷待測代碼無漏洞。模型訓練和檢測的流程,分別如圖5和圖6所示。

2.3 定向模糊測試

對于模型預測存在漏洞的結果,利用定向模糊測試驗證其漏洞的可觸發性。

本文使用AFLgo[12]對代碼進行定向模糊測試,將切片時記錄的敏感點所在行標記為定向模糊測試的目標,并在BBtargets.txt文件中設置。之后利用afl-gcc對源代碼進行插樁,并利用AFLgo計算種子到目標點的距離,進行定向模糊測試。具體的路徑計算方法如下。

圖5 模型訓練流程

圖6 檢測流程

通過Clang得知目標行所在的函數Tf和基本塊Tb,利用LLVM在調用圖中計算兩個函數間最短的距離(最短路徑的邊數)df(n1,n2)對于一個函數,它到所有目標行最短距離的調和平均數記為函數級的目標距離df(n,Tf)。對于函數中的每個基本塊計算它到下一個可以跳轉的函數的基本塊的距離(調用圖中兩個基本塊之間最短路徑的邊數),再加上待跳轉的函數與目標函數的距離,即為基本塊級的距離db(m,Tb)。最后,根據種子執行路徑中經過的基本塊,計算種子到目標點的距離db(s,Tb)。

AFLgo會給予距離目標點更近的種子更高的能量。這些種子將獲得更多的變異機會,使AFLgo能更快逼近目標點,測試感興趣的路徑。

3 實 驗

本文用于模型訓練及檢測的樣本主要來自于SARD[14]數據集。該數據集是由NIST制作并維護的一個公開的漏洞樣本集,由許多精心編寫的小程序。每個樣本都包含一個good版本和一個bad版本,分別對應無漏洞代碼和有漏洞代碼。

實驗在miniconda3創建的虛擬環境中進行,虛擬環境的python版本為3.6,安裝的其他軟件版本信息為:scikit-learn為0.23.1,tensorflow-gpu為2.2.0,keras-gpu為2.3.1,gensim為3.8.0,smart_open為1.9.0。

訓練的模型是針對源代碼進行檢測的。對于SARD數據集中的每個樣本,根據good和bad的標簽進行分割,其中bad版本作為漏洞樣本,good版本為對應的無漏洞樣本。在進行模糊測試時,通過SARD數據集中帶有的OMITGOOD和OMITBAD標記,可以分別將樣本編譯成good版本和bad版本進行測試,且編譯成的程序跟源代碼分割出的good版本代碼和bad版本代碼一一對應。

實驗過程中,通過對SARD數據集進行處理,共得到了135 776個樣本,其中good和bad樣本各占一半且一一對應。利用其中的113 612個樣本進行模型訓練,剩下的22 164個樣本用于檢測。在進行漏洞檢測時,首先用模型去對這22 164個樣本進行預測,將預測結果寫入csv文件。若模型的檢測結果表明某個樣本有漏洞,利用定向模糊測試對該樣本所對應的程序進行測試。FP、FN、TP、TN的定義,如表1所示。

表1 FP、FN、TP、TN的定義

統計檢測結果中FP、FN、TP、TN的數量,并計算精確率(Precision)、召回率(Recall)和準確率(Accuracy),計算結果如表2所示。

從實驗結果來看,訓練的模型達到了72.38%的準確率,但是仍有較多的誤報和漏報。結合模糊測試的方法后,通過對模型預測的漏洞進行定向模糊測試,可以消除誤報,一定程度上提高了整個檢測的準確率。

表2 模型檢測結果

此外,采用這種動靜結合的方法對glftpd軟件1.23版本進行檢測,通過切片和深度學習模型檢測定位軟件中的敏感點,再結合定向模糊測試,對glftpd源代碼中的dupscan.c文件生成崩潰文件,結合漏洞利用的方法,驗證了該崩潰是可以利用的漏洞。

4 結語

本文提出了一種將深度學習漏洞代碼檢測和模糊測試結合的方法,通過對代碼進行切片,定位敏感點。先利用深度學習模型對代碼切片進行檢測,再通過定向模糊測試的方法將敏感點設置為目標點,對模型預測的有漏洞的代碼進行測試,確定檢測模型判斷的漏洞的是否為誤報。實驗結果表明,通過這種方式可以顯著降低誤報率,提高可用性。

整個實驗過程主要在SARD[14]數據集上進行,未來可以通過擴充數據集來重新訓練檢測模型,提高其泛化能力。目前主要是利用模糊測試來對模型預測的結果進行漏洞可觸發性的檢測,消除了模型的誤報,但對模型的漏報還有待改進。后續可以考慮對模型預測的無漏洞代碼中分值較高的一部分進行模糊測試,以降低漏報率。此外,由于SARD數據集中的代碼相對短小,無法體現出該方法對模糊測試效率的提升。未來可通過檢測工程文件,測試該方法對模糊測試效率的提升。

猜你喜歡
檢測方法模型
一半模型
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
小波變換在PCB缺陷檢測中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 2020最新国产精品视频| 亚洲精品无码av中文字幕| 中文纯内无码H| 色综合天天综合| a级毛片免费看| 为你提供最新久久精品久久综合| 色婷婷亚洲综合五月| 国产高清又黄又嫩的免费视频网站| 国产永久在线观看| 亚洲欧洲日韩久久狠狠爱| 国产精品性| 亚洲精品免费网站| 亚洲精品中文字幕午夜| 国产午夜一级淫片| 午夜国产大片免费观看| 手机精品视频在线观看免费| 国产成人久久777777| 久久综合伊人 六十路| 国产综合精品一区二区| 國產尤物AV尤物在線觀看| 亚洲天堂伊人| 人妖无码第一页| 日韩欧美中文亚洲高清在线| 国产地址二永久伊甸园| 亚洲人成色在线观看| 无码AV日韩一二三区| 中文字幕资源站| 日本妇乱子伦视频| 亚洲人成网18禁| 性色一区| 91丝袜美腿高跟国产极品老师| 中文成人无码国产亚洲| 亚洲欧美激情另类| 国产美女免费| 亚洲人成网7777777国产| 国产午夜一级毛片| 狠狠亚洲五月天| 91伊人国产| 久草性视频| 日本道综合一本久久久88| 国产av一码二码三码无码| 国产麻豆另类AV| 国产99久久亚洲综合精品西瓜tv| 婷婷综合亚洲| 老司机精品久久| 欧美日韩中文国产va另类| 久久人人妻人人爽人人卡片av| 色九九视频| 激情综合婷婷丁香五月尤物| 99精品高清在线播放| 国产精品蜜臀| 久久成人免费| 激情无码视频在线看| 亚洲欧洲日韩国产综合在线二区| 欧美一区二区啪啪| 亚洲无码精品在线播放| 国产精品乱偷免费视频| 欧美午夜视频在线| 精品三级网站| 亚洲午夜国产精品无卡| 欧美www在线观看| 欧美一级夜夜爽| 久久人人97超碰人人澡爱香蕉| 日韩久草视频| 亚洲综合色区在线播放2019| 国产免费怡红院视频| 午夜精品福利影院| 欧类av怡春院| 久久狠狠色噜噜狠狠狠狠97视色 | 国产v精品成人免费视频71pao| 亚洲欧美一区二区三区麻豆| 国产杨幂丝袜av在线播放| 日韩中文精品亚洲第三区| 精品自拍视频在线观看| 日韩欧美国产三级| 久久成人18免费| 一区二区日韩国产精久久| 欧美午夜在线视频| 美女国内精品自产拍在线播放| 99精品视频在线观看免费播放| 国产精品自在自线免费观看| 伊人丁香五月天久久综合|