• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于深度學(xué)習(xí)的軟件安全漏洞挖掘

    2021-10-13 13:46:16顧綿雪孫鴻宇曹婉瑩曹春杰王文杰張玉清
    計算機(jī)研究與發(fā)展 2021年10期
    關(guān)鍵詞:深度特征檢測

    顧綿雪 孫鴻宇 韓 丹 楊 粟 曹婉瑩 郭 禎 曹春杰 王文杰 張玉清,3

    1(海南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 ???570228) 2(國家計算機(jī)網(wǎng)絡(luò)入侵防范中心(中國科學(xué)院大學(xué)) 北京 101408) 3(西安電子科技大學(xué)網(wǎng)絡(luò)與信息安全學(xué)院 西安 710126)

    信息技術(shù)的高速發(fā)展極大地改變了人們的生活方式,便捷的計算機(jī)應(yīng)用程序豐富了人們的生活.近年來,隨著計算機(jī)軟件系統(tǒng)的復(fù)雜性增強(qiáng),潛在的安全漏洞數(shù)量呈現(xiàn)遞增趨勢.美國國家漏洞數(shù)據(jù)庫(National Vulnerability Database,NVD)歷年披露的安全漏洞數(shù)量[1]如圖1所示,從2018年開始,連續(xù)3年披露的安全漏洞記錄數(shù)目均已突破1.5萬條大關(guān).

    盡管部分披露的軟件安全漏洞已經(jīng)被修復(fù),這并不意味著計算機(jī)用戶在使用軟件系統(tǒng)時所面臨的危害有所降低.例如,2014年4月披露的“Shellshock”漏洞(1)https://www.symantec.com/connect/blogs/shellshock-all-you-need-know-about-bash-bug-vulnerability,攻擊者利用僵尸網(wǎng)絡(luò)進(jìn)行分布式拒絕服務(wù)(distributed denial of service, DDoS)攻擊,通過搭載基于公共網(wǎng)關(guān)接口(common gateway interface, CGI)的Web服務(wù)器、OpenSSH服務(wù)器或DHCP客戶端在受攻擊的Bash上執(zhí)行任意代碼,從而在未授權(quán)的情況下訪問計算機(jī)系統(tǒng).之后,2017年5月出現(xiàn)的“WannaCry”勒索病毒軟件(2)http://www.cert.org.cn/publish/main/9/2017/20170513170143329476057/20170513170143329476057_.html,攻擊者利用美國國家安全局(National Security Agency, NSA)在同年3月披露的危險漏洞“永恒之藍(lán)EternalBlue”攻擊脆弱的Windows操作系統(tǒng),入侵用戶主機(jī)并索要比特幣.該勒索病毒波及至少150個國家和地區(qū),給政府、企業(yè)和高校等行業(yè)造成數(shù)以億計的損失,儼然是一場全球性的互聯(lián)網(wǎng)災(zāi)難.近年來,軟件安全漏洞不僅在數(shù)量上逐年激增,其形態(tài)也表現(xiàn)出復(fù)雜性和多樣性的特點,給軟件系統(tǒng)的正常運(yùn)行帶來了嚴(yán)峻的挑戰(zhàn).

    Fig. 1 The number of disclosed vulnerabilities in NVD over the years圖1 美國國家漏洞數(shù)據(jù)庫(NVD)歷年披露的漏洞記錄數(shù)目

    目前,學(xué)術(shù)界和工業(yè)界尚未對軟件安全漏洞的定義形成統(tǒng)一廣泛的共識,本文在總結(jié)文獻(xiàn)[2-4]關(guān)于安全漏洞定義的基礎(chǔ)之上,參照文獻(xiàn)[5]對軟件安全漏洞的定義,即安全漏洞是指在信息產(chǎn)品、信息系統(tǒng)、信息技術(shù)在軟件生命周期中,軟件設(shè)計者在需求、設(shè)計、編碼、配置和運(yùn)行等階段有意或者無意產(chǎn)生的軟件缺陷,從而使得攻擊者在未經(jīng)授權(quán)的情況下訪問計算機(jī)資源.這些軟件缺陷一旦被惡意的攻擊者利用,比如權(quán)限越級、軟件用戶隱私數(shù)據(jù)泄露等,將會導(dǎo)致軟件系統(tǒng)之上的正常服務(wù)行為偏離,危害信息系統(tǒng)的機(jī)密性(confidentiality)、完整性(integrity)和可用性(availability).由于軟件安全漏洞隱蔽存在于軟件生命周期的各個階段,如何利用各種技術(shù)手段盡早挖掘潛在的安全漏洞,降低對軟件系統(tǒng)的危害,是網(wǎng)絡(luò)空間安全領(lǐng)域的熱點研究問題之一.

    軟件安全漏洞挖掘是安全研究人員檢查和分析軟件系統(tǒng)中潛在的安全漏洞的主要技術(shù)手段.通過利用各種檢測工具對軟件、源代碼以及代碼補(bǔ)丁進(jìn)行審計,或者運(yùn)行可執(zhí)行文件對軟件的執(zhí)行過程進(jìn)行測試,查找其軟件缺陷.早期的安全漏洞挖掘技術(shù)主要分為靜態(tài)分析技術(shù)、動態(tài)分析技術(shù)和混合分析技術(shù).靜態(tài)分析技術(shù)是指在不運(yùn)行程序的情況下,對程序源代碼或字節(jié)碼的語法、語義、控制流和數(shù)據(jù)流進(jìn)行分析,從而檢測目標(biāo)程序中可能潛在的安全漏洞.靜態(tài)分析技術(shù)主要包括基于規(guī)則的分析技術(shù)[6]、二進(jìn)制對比技術(shù)[7]、靜態(tài)符號執(zhí)行技術(shù)[8]和靜態(tài)污點分析技術(shù)[9]等.靜態(tài)分析技術(shù)不需要運(yùn)行程序,能夠高效快速地完成對大量程序代碼的審計,代碼覆蓋率較高.但隨著軟件復(fù)雜性的增加,依靠人工專家提取漏洞規(guī)則常常具有主觀性,且構(gòu)造成本過高,不可避免地導(dǎo)致漏洞誤報率和漏報率較高.動態(tài)分析技術(shù)是指在程序運(yùn)行情況下,對運(yùn)行程序的運(yùn)行狀態(tài)、執(zhí)行路徑和寄存器狀態(tài)進(jìn)行分析,從而發(fā)現(xiàn)動態(tài)調(diào)試器中存在的安全漏洞.動態(tài)分析技術(shù)主要包括模糊測試[10-11]、動態(tài)符號執(zhí)行技術(shù)[12-14]和動態(tài)污點分析技術(shù)[15]等.動態(tài)分析技術(shù)一般應(yīng)用于軟件的測試運(yùn)行階段,能夠從運(yùn)行程序的狀態(tài)中追蹤程序的執(zhí)行路徑和數(shù)據(jù)流向,從而提取漏洞特征信息,以提升軟件漏洞挖掘的準(zhǔn)確率.但動態(tài)分析技術(shù)程序存在路徑覆蓋率較低和路徑爆炸問題,且需要消耗大量的計算資源[16].混合分析技術(shù)是指同時結(jié)合靜態(tài)分析和動態(tài)分析技術(shù),以對目標(biāo)程序進(jìn)行安全漏洞挖掘.混合分析技術(shù)主要依賴于安全研究人員分析程序源代碼或字節(jié)碼的靜態(tài)特征和運(yùn)行程序得到的動態(tài)特征,或利用動態(tài)分析對靜態(tài)分析的結(jié)果進(jìn)行校驗,使得安全漏洞挖掘的準(zhǔn)確率提升,從而降低靜態(tài)分析的高漏報率和增加動態(tài)分析的代碼覆蓋率[17-18].

    近年來,隨著人工智能(artificial intelligence,AI)技術(shù)的興起,利用AI可以自動化地從復(fù)雜高維數(shù)據(jù)中提取數(shù)據(jù)的有效特征,已經(jīng)被廣泛應(yīng)用于圖像識別[19]、目標(biāo)檢測[20]和自然語言處理[21]等領(lǐng)域.目前,將AI應(yīng)用于安全漏洞挖掘領(lǐng)域主要是利用機(jī)器學(xué)習(xí)(machine learning, ML)、自然語言處理(natural language processing, NLP)和深度學(xué)習(xí)(deep learning, DL),以實現(xiàn)軟件安全漏洞的自動化和智能化研究.

    基于機(jī)器學(xué)習(xí)的軟件安全漏洞挖掘工作一直受到安全研究人員和軟件供應(yīng)商的關(guān)注和重視.在實際研究中,將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用于安全漏洞挖掘領(lǐng)域主要可以包括基于軟件代碼度量、基于代碼屬性、基于代碼相似性以及基于代碼模式的安全漏洞挖掘模型[22-23].

    具體而言,軟件代碼度量是對軟件一些特征信息的量化表示,用作對軟件質(zhì)量的度量指標(biāo).常用的軟件度量指標(biāo)有開發(fā)者活動(developer activities)、復(fù)雜度(complexity)、代碼變化(code churn)、繼承深度(inheritance depth)、耦合度(coupling)和內(nèi)聚度(cohesion)等.基于軟件代碼度量的漏洞挖掘模型[24-29]通過選取軟件的若干個度量指標(biāo)量化程序特征來進(jìn)行表示,在一定程度上能夠體現(xiàn)程序的整體屬性特征,檢測速度較快,但是量化的程序特征信息與漏洞代碼本身關(guān)聯(lián)性不強(qiáng),細(xì)粒度不夠,只能提供輔助性的漏洞判斷,且具有較高的誤報率和漏報率.

    基于代碼屬性的漏洞挖掘模型在軟件代碼度量的基礎(chǔ)之上,針對具體的漏洞信息特征,從代碼級別挖掘程序代碼本身的特征信息.基于代碼屬性的漏洞挖掘工作[30-37]主要對Web端安全漏洞進(jìn)行研究,應(yīng)用機(jī)器學(xué)習(xí)算法進(jìn)行漏洞挖掘,能夠檢測出SQL注入、跨站點腳本攻擊(cross-site scripting, XSS)、遠(yuǎn)程代碼執(zhí)行(remote code execution, RCE)和緩沖區(qū)溢出(buffer overflow, CWE-119)等漏洞.基于代碼相似性的漏洞挖掘模型在對安全專家手工定義的特征提取之后,使用機(jī)器學(xué)習(xí)等方法計算并比較特征之間的相似度,從而判斷是否屬于同一類型漏洞.

    基于代碼相似性的漏洞挖掘模型[38-40]主要能夠檢測出代碼重復(fù)利用引起的漏洞問題,在一定程度上能夠提升漏洞檢測的準(zhǔn)確率.但漏洞特征主要依靠安全專家手工定義,且只能發(fā)現(xiàn)已知的漏洞信息,應(yīng)用比較局限.

    基于代碼模式的漏洞挖掘模型,也可以理解為基于語法語義的漏洞挖掘模型,具體又可分為基于詞法分析的漏洞挖掘模型和基于語法分析的漏洞挖掘模型.基于詞法分析的漏洞挖掘模型[41-49]主要采用文本挖掘技術(shù)對源代碼的標(biāo)識符、函數(shù)名和運(yùn)算符等進(jìn)行標(biāo)記,對提取到的有效信息進(jìn)行抽象表示,接著經(jīng)過編碼模型進(jìn)行向量化處理之后,得到供機(jī)器學(xué)習(xí)模型訓(xùn)練的特征集合.基于語法分析的漏洞挖掘模型[50-54]通過靜態(tài)分析技術(shù)對程序源代碼的數(shù)據(jù)流和數(shù)據(jù)依賴進(jìn)行更深層次的特征表示,主要依據(jù)抽象語法樹(abstract syntax tree, AST)、數(shù)據(jù)流圖(data flow graph, DFG)、控制流圖(control flow graph, CFG)和程序依賴圖(program dependency graph, PDG)等語法語義結(jié)構(gòu)提取特征集合.相比于基于軟件代碼度量的漏洞挖掘模型,基于代碼模式的漏洞挖掘模型在很大程度上考慮了函數(shù)組件和函數(shù)控制流之間的聯(lián)系,兼顧了代碼的語法語義信息,且能夠抽象出代碼中更深層次的特征.

    然而,基于傳統(tǒng)機(jī)器學(xué)習(xí)的軟件安全漏洞挖掘模型依賴于安全專家去定義漏洞特征,且只能挖掘已知的漏洞信息,在實際應(yīng)用環(huán)境中無法挖掘未知的漏洞信息,應(yīng)用范圍比較局限.同時,現(xiàn)有的基于機(jī)器學(xué)習(xí)的軟件安全漏洞挖掘模型無法指明與漏洞相關(guān)的關(guān)鍵語句或特征,使得難以定位安全漏洞存在的精確位置.

    隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,越來越多的安全研究人員開始將深度學(xué)習(xí)技術(shù)應(yīng)用于軟件安全漏洞挖掘領(lǐng)域.相比于傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)依賴安全專家定義手工特征,深度學(xué)習(xí)技術(shù)通過構(gòu)建多樣性的神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行訓(xùn)練,使得能夠更加自動化和智能化地從復(fù)雜數(shù)據(jù)中提取有效特征信息,以提高軟件安全漏洞挖掘的準(zhǔn)確率,降低漏洞的誤報率和漏報率.因此,本文主要側(cè)重于基于深度學(xué)習(xí)的軟件安全漏洞挖掘工作研究,為此廣泛收集并調(diào)研了自2013-01—2021-06期間來自IEEE Xplore,ACM Digital Library,SpringerLink和中國知網(wǎng)(CNKI)等國內(nèi)外數(shù)據(jù)庫以及著名安全會議(IEEE S&P,USENIX Security,CCS,NDSS等)收錄的現(xiàn)有研究工作,如圖2所示,并總結(jié)和歸納基于深度學(xué)習(xí)的軟件安全漏洞挖掘領(lǐng)域目前已有的研究成果,指出該領(lǐng)域的研究趨勢.

    本文的主要貢獻(xiàn)有4個方面:

    1) 廣泛收集并調(diào)研了基于深度學(xué)習(xí)的軟件安全漏洞挖掘領(lǐng)域的現(xiàn)有相關(guān)文獻(xiàn),總結(jié)了基于深度學(xué)習(xí)的軟件安全漏洞挖掘的一般框架和相關(guān)技術(shù)方法;

    2) 以深度特征表示為切入點,分類闡述和分析基于不同代碼表征形式的安全漏洞挖掘模型,并分別指出各表征方式中相關(guān)方案的優(yōu)缺點;

    3) 從具體的應(yīng)用場景出發(fā),分別探討目前深度學(xué)習(xí)應(yīng)用于物聯(lián)網(wǎng)、區(qū)塊鏈智能合約以及其他領(lǐng)域漏洞挖掘的研究進(jìn)展,并系統(tǒng)進(jìn)行了對比;

    4) 分析當(dāng)前基于深度學(xué)習(xí)的軟件安全漏洞挖掘領(lǐng)域面臨的九大挑戰(zhàn)和機(jī)遇,并對未來的研究趨勢進(jìn)行展望.

    Fig. 2 Literature number of software vulnerability mining based on deep learning圖2 基于深度學(xué)習(xí)的軟件漏洞挖掘文獻(xiàn)數(shù)量

    1 基于深度學(xué)習(xí)的軟件漏洞挖掘工作框架

    通過調(diào)研現(xiàn)有的研究工作,我們給出了基于深度學(xué)習(xí)的軟件安全漏洞挖掘模型的一般工作框架,包括數(shù)據(jù)收集、學(xué)習(xí)和檢測3個階段,如圖3所示.同時,分析和歸納了現(xiàn)有數(shù)碼表征和模型學(xué)習(xí)技術(shù),供讀者進(jìn)一步深入了解基于深度學(xué)習(xí)的軟件安全漏洞挖掘模型的相關(guān)技術(shù)方法.

    Fig. 3 The framework of software vulnerability mining based on deep learning圖3 基于深度學(xué)習(xí)的軟件漏洞挖掘工作框架

    1.1 數(shù)據(jù)收集階段

    在數(shù)據(jù)收集階段,需要收集大量的漏洞數(shù)據(jù)供深度學(xué)習(xí)模型進(jìn)行訓(xùn)練和學(xué)習(xí).通過梳理和分析現(xiàn)有研究工作發(fā)現(xiàn),目前大部分的數(shù)據(jù)主要來源于NVD,通用漏洞披露數(shù)據(jù)庫(Common Vulnerabilities and Exposures, CVE)、國家信息安全漏洞庫(China National Vulnerability Database of Information Security, CNNVD)和Github等主流開源網(wǎng)站,且以二進(jìn)制文件和源代碼為主要分析對象.

    1.2 學(xué)習(xí)階段

    學(xué)習(xí)階段主要由3部分構(gòu)成,分別是數(shù)據(jù)預(yù)處理、數(shù)據(jù)表征和模型學(xué)習(xí).1)數(shù)據(jù)預(yù)處理階段.首先要對獲取的程序數(shù)據(jù)集進(jìn)行預(yù)處理,緩解數(shù)據(jù)重復(fù)和數(shù)據(jù)不平衡問題.一般來說,可以采用數(shù)據(jù)清洗、數(shù)據(jù)集成和數(shù)據(jù)規(guī)約等方法對訓(xùn)練數(shù)據(jù)集進(jìn)行預(yù)處理.2)數(shù)據(jù)表征階段.即需要將軟件程序數(shù)據(jù)集解析為合適的表示結(jié)構(gòu)用于模型訓(xùn)練,目前,通常使用序列、抽象語法樹、圖、文本和混合特征等表征形式抽象出源代碼漏洞的特征信息.3)模型學(xué)習(xí)階段.由于收集到的軟件程序數(shù)據(jù)集通常是文本表示,并不能直接用于深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練.因此,該部分需要將從數(shù)據(jù)表征模塊抽象出的代碼表征映射為向量形式,從而作為訓(xùn)練模型的輸入.在多次訓(xùn)練過程中不斷調(diào)整和優(yōu)化模型參數(shù),得到一個性能較優(yōu)的漏洞挖掘模型,并應(yīng)用于真實數(shù)據(jù)檢測階段.

    1.3 檢測階段

    檢測階段中,在獲得漏洞挖掘模型之后,可以對目標(biāo)軟件程序進(jìn)行漏洞預(yù)測.檢測階段的流程與學(xué)習(xí)階段在數(shù)據(jù)預(yù)處理和數(shù)據(jù)表征方面類似,對目標(biāo)程序提取的表征向量化之后,輸入到學(xué)習(xí)階段得到的漏洞挖掘模型,從而得到預(yù)測結(jié)果.

    1.4 數(shù)據(jù)表征技術(shù)

    近年來,大量安全研究人員通過對安全漏洞產(chǎn)生的原理、條件和特征等方面進(jìn)行深入研究,采用各種數(shù)據(jù)表征方式和深度學(xué)習(xí)算法在不同程度上構(gòu)建了不同的漏洞挖掘模型.由于程序數(shù)據(jù)包含豐富的特征信息,如何構(gòu)建合適的數(shù)據(jù)表征方式最大程度上提取與漏洞相關(guān)的特征信息,是一個復(fù)雜艱巨的任務(wù).本文通過整理和分析現(xiàn)有研究工作,發(fā)現(xiàn)目前代碼表征方式主要可以分為5類,分別是:基于序列的表征方式、基于抽象語法樹的表征方式、基于圖的表征方式、基于文本的表征方式和基于混合的表征方式.圖4給出了基于不同代碼表征軟件漏洞挖掘文獻(xiàn)數(shù)量占比情況.

    Fig. 4 The percentage of studies based on different code representations for software vulnerability mining圖4 基于不同代碼表征的軟件漏洞挖掘研究占比

    具體而言,1)基于序列的表征方式對源代碼或二進(jìn)制文件進(jìn)行詞法分析,提取與字符流相關(guān)的標(biāo)識符、函數(shù)名和運(yùn)算符等關(guān)鍵特征信息,同時兼顧執(zhí)行路徑、函數(shù)調(diào)用序列和語句調(diào)用序列等信息.2)基于抽象語法樹的表征方式將程序源代碼解析為抽象語法樹結(jié)構(gòu)并從中提取與樹節(jié)點相關(guān)的語法信息.3)基于圖的表征方式則是通過使用圖數(shù)據(jù)結(jié)構(gòu)對源代碼的詞法和語義屬性進(jìn)行表示,使得能夠更加有效地抽象出深層次的代碼特征信息.4)基于文本的表征方式則是直接對從程序數(shù)據(jù)中提取出的特征詞進(jìn)行量化,用于描述和代替程序數(shù)據(jù)信息.5)基于混合的表征方式通常是融合多種特征表示方式,最大程度上豐富程序數(shù)據(jù)的特征信息.

    如何選擇合適的向量編碼模型將抽取的特征轉(zhuǎn)換成向量表示形式,在一定程度上將直接影響模型計算的性能.常用的編碼模型有One-hot[55],Word2vec[56]和Sent2vec[57]等.One-hot[55]編碼將文本映射到向量空間,使用n維向量對n個文本單詞進(jìn)行一一對應(yīng)編碼,但在文本元素過多時,會造成大量的冗余,且無法反映不同元素之間的聯(lián)系.Word2vec[56]為了克服One-hot[55]編碼的不足,對每個單詞分配固定長度的向量,并為語義相似的單詞分配距離相近的向量,提升了深度學(xué)習(xí)模型理解自然語言的能力.Word2vec[56]包含連續(xù)詞袋模型(continuous bag-of-words, CBOW)和Skip-Gram兩種模型.其中,CBOW適合用于小樣本數(shù)據(jù)集,并以周圍詞作為輸入,預(yù)測中心詞.而Skip-Gram適用于數(shù)據(jù)量較大的情況下,根據(jù)中心詞,預(yù)測其對應(yīng)的周圍詞.Sent2vec[57]對Word2vec[56]中CBOW方法進(jìn)行擴(kuò)展,以整個句子作為輸入,并引入n-gram,增強(qiáng)語句中單詞順序的嵌入能力.

    1.5 模型學(xué)習(xí)技術(shù)

    在模型學(xué)習(xí)階段,深度學(xué)習(xí)模型可以實現(xiàn)自動化提取漏洞特征,且能夠獲得比“淺層”模型更好的檢測性能.本文通過整理和對比現(xiàn)有文獻(xiàn)發(fā)現(xiàn),目前應(yīng)用于漏洞挖掘領(lǐng)域常見的深度學(xué)習(xí)模型有:多層感知器(multi-layer perception, MLP)、卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)、長短期記憶網(wǎng)絡(luò)(long short-term memory network, LSTM)、門控循環(huán)單元(gated recurrent unit, GRU)、圖神經(jīng)網(wǎng)絡(luò)(graph neural network, GNN)、深度置信網(wǎng)絡(luò)(deep belief network, DBN)以及其他神經(jīng)網(wǎng)絡(luò)模型(other deep learning models, Others),如自編碼器(auto encoder, AE)、生成對抗網(wǎng)絡(luò)(generative adversarial network, GAN)等.

    其中,MLP模型在非線性數(shù)據(jù)上表現(xiàn)較好,但該模型需要大量的訓(xùn)練數(shù)據(jù)實現(xiàn)擬合,且可解釋性不強(qiáng).CNN模型可以用來學(xué)習(xí)結(jié)構(gòu)化的空間數(shù)據(jù),但該模型在池化過程中會丟失大量有價值的信息,忽略局部與整體之間的關(guān)聯(lián)性.RNN模型可以用來處理時序數(shù)據(jù),來學(xué)習(xí)程序數(shù)據(jù)上下文依賴關(guān)系,但在處理序列過長的數(shù)據(jù)時,容易產(chǎn)生梯度消失問題.LSTM模型是RNN模型的一個變體,在此基礎(chǔ)之上添加記憶單元和遺忘門,使得能夠捕獲序列的長期依賴關(guān)系.GRU模型在將LSTM模型的遺忘門、輸入門和輸出門合并轉(zhuǎn)化為更新門和重置門,以較少的門函數(shù)將重要特征進(jìn)行保存.GNN模型可以用來學(xué)習(xí)圖中節(jié)點、邊或子圖的低維向量空間表示,以獲得深層次的程序數(shù)據(jù)表示.DBN模型可以對程序數(shù)據(jù)在不同概念的粒度上進(jìn)行抽象,在自動化訓(xùn)練過程中通過調(diào)節(jié)自身的權(quán)重值持久化數(shù)據(jù)之間的依賴關(guān)系,具有更好的性能.AE是一種無監(jiān)督學(xué)習(xí)方法,對高維輸入信息進(jìn)行降維、進(jìn)行表征學(xué)習(xí).GAN包含一個生成器和一個判別器,分別用于自動學(xué)習(xí)真實的數(shù)據(jù)分布和正確判別輸入數(shù)據(jù)是來自真實數(shù)據(jù)還是生成器.

    為了使讀者宏觀上了解各深度學(xué)習(xí)算法應(yīng)用于軟件漏洞挖掘的研究情況,本文對該領(lǐng)域現(xiàn)有研究工作進(jìn)行整理和歸納,占比情況具體如圖5所示.其中,為了有效量化混合模型采用的深度學(xué)習(xí)算法,本文對其進(jìn)行了拆分,分別歸納到相應(yīng)的模型進(jìn)行統(tǒng)計.例如,文獻(xiàn)[58]分別在CNN和RNN模型上進(jìn)行量化統(tǒng)計1次.

    通過對現(xiàn)有基于深度學(xué)習(xí)的軟件漏洞挖掘文獻(xiàn)進(jìn)行梳理和分析,本文發(fā)現(xiàn)大部分工作主要從數(shù)據(jù)表征方式的改進(jìn)和學(xué)習(xí)模型的優(yōu)化2個方面提出新的漏洞挖掘方法,且偏向于數(shù)據(jù)表征方式的改進(jìn),這也是本文側(cè)重于以深度特征表示進(jìn)行研究綜述的依據(jù).

    Fig. 5 The percentage of studies which applied different deep learning algorithms for software vulnerability mining圖5 軟件漏洞挖掘模型采用不同深度學(xué)習(xí)算法研究占比

    2 深度特征表示方法

    通過整理和分析現(xiàn)有基于深度學(xué)習(xí)的漏洞挖掘研究工作,目前常見的代碼表征方式有序列表征、AST表征、圖表征、文本表征和混合表征.圖6給出了不同數(shù)據(jù)表征方式下,現(xiàn)有研究工作文獻(xiàn)數(shù)量從2013-01—2021-06的分布情況.本文對其整理和歸納,以便讀者有一個直觀的認(rèn)識.因此,本節(jié)將以每種代碼表征方式為出發(fā)點,分類闡述現(xiàn)有具有代表性的基于深度學(xué)習(xí)的漏洞挖掘研究工作.同時,在現(xiàn)有研究工作基礎(chǔ)之上,本文對每種表征方式的漏洞挖掘模型從不同角度進(jìn)行討論和分析,并給出觀點,供感興趣的研究人員對該領(lǐng)域進(jìn)行進(jìn)一步研究.

    Fig. 6 Literature muber of different code representations for vulnerability mining 圖6 不同代碼表征的漏洞挖掘文獻(xiàn)數(shù)量

    2.1 基于序列表征的漏洞挖掘模型

    序列表征是指對源代碼或二進(jìn)制文件進(jìn)行詞法分析,提取與字符流相關(guān)的標(biāo)識符、函數(shù)名和運(yùn)算符等關(guān)鍵特征信息.同時還包含執(zhí)行路徑、函數(shù)調(diào)用序列和語句調(diào)用序列等特征信息.基于序列表征的漏洞挖掘模型[58-72]是通過利用深度神經(jīng)網(wǎng)絡(luò)(deep neural network, DNN)自動化提取序列特征信息進(jìn)行漏洞挖掘.文獻(xiàn)[59-60]均從函數(shù)調(diào)用序列出發(fā),實現(xiàn)漏洞挖掘.文獻(xiàn)[59]首次將深度學(xué)習(xí)應(yīng)用于序列特征提取,從庫/API函數(shù)調(diào)用序列出發(fā),采用雙向長短期記憶網(wǎng)絡(luò)(bidirectional long short-term memory network, BLSTM)構(gòu)建VulDeePecker漏洞檢測系統(tǒng).基于啟發(fā)式方法將程序源代碼轉(zhuǎn)化為“code gadget”代碼集合,使其產(chǎn)生一組語義聯(lián)系但不一定連續(xù)的多行代碼,檢測出4種未在NVD數(shù)據(jù)庫中報告的漏洞信息,具有一定的有效性.然而,VulDeePecker[59]用例漏洞類型較少,誤報率較大,且只能給出一段代碼中是否包含漏洞信息,無法精確提供與漏洞相關(guān)的位置信息.

    文獻(xiàn)[60]在文獻(xiàn)[59]基礎(chǔ)上引入控制依賴關(guān)系,提出“code attention”,以函數(shù)調(diào)用序列為關(guān)鍵特征信息構(gòu)建一個多分類神經(jīng)網(wǎng)絡(luò)模型μVulDeePecker,從而輔助系統(tǒng)精確捕捉40種漏洞的挖掘工作,具有較高的F1-指數(shù),并檢測出開源軟件Xen中2種未報告的安全漏洞類型.然而,在提取全局特征和局部特征時存在一定的學(xué)習(xí)偏差,提升了誤報率.

    文獻(xiàn)[59-61]在構(gòu)建學(xué)習(xí)模型時,僅使用單深度學(xué)習(xí)模型進(jìn)行特征提取.為了對比單深度學(xué)習(xí)模型和混合深度學(xué)習(xí)模型的效果,文獻(xiàn)[58,62]采用混合深度學(xué)習(xí)模型進(jìn)行特征提取.文獻(xiàn)[62]分別使用CNN,LSTM和混合模型CNN+LSTM進(jìn)行漏洞特征提取,從二進(jìn)制程序執(zhí)行過程中收集近萬條函數(shù)調(diào)用序列作為特征用來訓(xùn)練模型.其實驗結(jié)果發(fā)現(xiàn)采用混合神經(jīng)網(wǎng)絡(luò)模型在進(jìn)行特征訓(xùn)練時,往往能夠挖掘出更多的特征信息,具有較好的漏洞挖掘效果.

    然而,在實際漏洞應(yīng)用場景中,由于對全局特征和局部特征的學(xué)習(xí)偏差,準(zhǔn)確獲取漏洞特征信息并非易事.文獻(xiàn)[58]針對文獻(xiàn)[63]存在的特征學(xué)習(xí)偏差問題,采用底層虛擬機(jī)中間表示技術(shù)(lower level virtual machine intermediate representation, LLVM IR)和混合神經(jīng)網(wǎng)絡(luò)模型對源代碼關(guān)鍵序列結(jié)構(gòu)信息進(jìn)行表征,用于自動化漏洞檢測.該表征方式能夠同時兼顧詞法分析并從細(xì)粒度上進(jìn)行漏洞挖掘,能夠精確識別出漏洞的具體位置.通過對比不同的單深度學(xué)習(xí)模型方法,發(fā)現(xiàn)基于混合神經(jīng)網(wǎng)絡(luò)的漏洞挖掘模型具有較好的性能.

    通過調(diào)研基于序列表征的漏洞挖掘研究工作發(fā)現(xiàn),文獻(xiàn)[58-71]均采用手工標(biāo)注方式解決樣本之間數(shù)據(jù)不平衡問題,花費(fèi)了大量的時間成本,且具有較高的誤報率.為了解決二進(jìn)制軟件漏洞檢測中高誤報率和數(shù)據(jù)不平衡問題,文獻(xiàn)[72]結(jié)合內(nèi)核方法和雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(bidirectional recurrent neural network, BRNN)構(gòu)建深度代價敏感內(nèi)核機(jī)模型(deep cost-sensitive kernel machine, DCKM),用于處理機(jī)器指令集序列.該研究將多種數(shù)據(jù)集進(jìn)行切分,分別與6種開源軟件進(jìn)行對比,其實驗結(jié)果表明結(jié)合深度學(xué)習(xí)的代價敏感內(nèi)核機(jī)模型能夠有效解決樣本之間數(shù)據(jù)不平衡問題,降低誤報率.同時,本文發(fā)現(xiàn)該工作在多源數(shù)據(jù)集漏洞收集方面,能夠?qū)?shù)據(jù)集自動化標(biāo)注有一定的借鑒意義.

    基于序列表征的漏洞挖掘模型利用深度神經(jīng)網(wǎng)絡(luò)自動化提取序列特征信息,本文從現(xiàn)有的基于序列表征的漏洞挖掘研究工作中,挑選和總結(jié)了5項具有代表性的研究工作,具體如表1所示.表1分別從分析對象、模型構(gòu)造、檢測細(xì)粒度、漏洞類型以及性能多個角度進(jìn)行分析和討論,并給出了基于序列表征的漏洞挖掘模型領(lǐng)域的一些觀點.

    Table 1 Comparisons of Some Reviewed Works Which Applied Sequence-based Feature Representation for Vulnerability Mining表1 基于序列表征的漏洞挖掘模型部分工作對比

    討論1.由表1可知,從分析對象而言,對C/C++源代碼以及二進(jìn)制代碼中存在的漏洞挖掘是目前的研究熱點.從采用的深度學(xué)習(xí)模型方面而言,相比于采用單深度學(xué)習(xí)模型[59-61],利用混合模型[58,62]學(xué)習(xí)序列漏洞特征信息,往往具有較好的漏洞檢測能力,在性能方面可見一斑.從檢測細(xì)粒度上看,由于沒有一個規(guī)范統(tǒng)一的漏洞數(shù)據(jù)集,不同漏洞挖掘工作構(gòu)建的數(shù)據(jù)集在一定程度上對檢測細(xì)粒度產(chǎn)生了不同的影響.從漏洞類型上而言,文獻(xiàn)[58,61-62]能夠?qū)崿F(xiàn)多種漏洞類型的挖掘.而針對常見的緩沖區(qū)溢出類型(CWE-119)和資源管理溢出類型(CWE-399)漏洞挖掘,文獻(xiàn)[59]的挖掘效果較優(yōu)于文獻(xiàn)[72],取得了4.7%的提升.

    觀點1.基于序列表征的漏洞挖掘模型能夠直接對代碼進(jìn)行詞法分析,并對字符流相關(guān)的關(guān)鍵特征信息、執(zhí)行路徑和調(diào)用序列等信息進(jìn)行統(tǒng)計得到序列表征,映射到向量空間作為神經(jīng)模型的輸入.通過對比和歸納現(xiàn)有研究工作,本文發(fā)現(xiàn):1)利用DNN學(xué)習(xí)得到的序列表征與漏洞特征的關(guān)聯(lián)性較強(qiáng),具有良好的漏洞檢測能力;2)相比于單深度學(xué)習(xí)模型,混合模型學(xué)習(xí)到的序列特征信息更加豐富,檢測能力也相對較強(qiáng);3)在漏洞挖掘過程中,提取所需的序列特征需要大量的訓(xùn)練數(shù)據(jù),再進(jìn)行向量化輸入到深度學(xué)習(xí)模型之中,檢測速度一般較慢.

    2.2 基于抽象語法樹表征的漏洞挖掘模型

    抽象語法樹(abstract syntax tree, AST)是程序編譯過程中對源代碼抽象語法結(jié)構(gòu)的一種樹狀表現(xiàn)形式,其中每一個樹節(jié)點代表實際代碼的一種語法結(jié)構(gòu)信息[73].基于抽象語法樹特征表示的漏洞挖掘模型[74-87]通過使用Clang,ANTLR和Lex等開源軟件將程序源代碼文件生成AST,接著對AST節(jié)點進(jìn)行遍歷轉(zhuǎn)化為數(shù)據(jù)流結(jié)構(gòu),從而提取層次化的特征信息.

    文獻(xiàn)[74-76]在不同程度上均實現(xiàn)了項目內(nèi)漏洞預(yù)測(within-project vulnerability prediction, WPVP),并取得了不錯的性能.文獻(xiàn)[74]結(jié)合雙向門控循環(huán)單元(bidirectional gated recurrent unit, BGRU)提出了一種基于AST表征的具有可解釋性的細(xì)粒度漏洞挖掘模型.該模型能夠區(qū)分不同行和不同語法元素對于漏洞信息的重要性,對漏洞AST中節(jié)點關(guān)鍵信息進(jìn)行標(biāo)記,使得對漏洞的具體位置進(jìn)行精確定位,達(dá)到細(xì)粒度的漏洞挖掘.然而,該工作在生成AST的過程中時間漫長且容易出現(xiàn)AST語義信息爆炸問題,難以應(yīng)用于規(guī)模較大的軟件系統(tǒng),具有一定的局限性.

    文獻(xiàn)[75]對生成后的AST規(guī)模如何縮減這方面進(jìn)行了深入的研究,提出了一種新型切割A(yù)ST神經(jīng)網(wǎng)絡(luò)模型ASTNN,用來捕捉詞法和語義信息.該研究在語句級別上,將一個代碼片段得到的較大規(guī)模的AST分割成多個小語句樹,采用BGRU對生成的代碼片段進(jìn)行訓(xùn)練.他們的研究成果取得了不錯的實驗性能.但相比于文獻(xiàn)[74],該方案只能用于特定的代碼克隆漏洞檢測,無法實現(xiàn)多類型漏洞檢測以及跨項目漏洞檢測任務(wù).

    在基于序列表征的漏洞挖掘模型中,利用混合模型學(xué)習(xí)漏洞表征,常常具有較好的漏洞檢測能力,文獻(xiàn)[76]針對緩沖區(qū)溢出類型和資源管理異常類型漏洞,分別使用CNN與LSTM提取漏洞的全局和局部特征信息,提出一種結(jié)合傅里葉變換的深度卷積LSTM神經(jīng)網(wǎng)絡(luò)模型用于漏洞檢測,并利用注意力機(jī)制對關(guān)鍵代碼特征進(jìn)行重要性分析,使得模型具有更加良好的解釋性.

    通過調(diào)研現(xiàn)有基于AST表征的漏洞挖掘研究工作,本文發(fā)現(xiàn)針對跨項目漏洞預(yù)測(cross-project vulnerability prediction, CPVP)研究在文獻(xiàn)數(shù)量上較少.事實上,跨項目漏洞挖掘需要在一個項目上構(gòu)造漏洞挖掘模型從而實現(xiàn)另一個項目的漏洞挖掘,在實際開發(fā)場景之中,由于AST生成規(guī)模較大和容易出現(xiàn)語義爆炸等問題,常常導(dǎo)致模型的性能不佳.

    在CPVP研究中,針對文獻(xiàn)[75]易出現(xiàn)的AST語義信息爆炸問題,文獻(xiàn)[77]發(fā)現(xiàn)結(jié)合DBN對AST語法語義信息進(jìn)行特征降維,能夠有效增強(qiáng)CPVP的能力.文獻(xiàn)[78]首次將遷移學(xué)習(xí)(transfer learning, TL)應(yīng)用于跨項目軟件漏洞挖掘,證明發(fā)現(xiàn)即使在小數(shù)量的數(shù)據(jù)標(biāo)簽項目中,也能取得不錯的檢測效果.該研究從6個開源軟件中收集函數(shù)層次的數(shù)據(jù)集,實驗結(jié)果表明:無論是在WPVP或者在CPVP中,將AST和TL應(yīng)用于漏洞挖掘具有較好的漏洞檢測能力.

    為了實現(xiàn)CPVP中細(xì)粒度的漏洞挖掘,文獻(xiàn)[79]在文獻(xiàn)[75-76]基礎(chǔ)上提出了基于注意力機(jī)制的雙向長短期記憶網(wǎng)絡(luò)模型(attention-based bidirectional long short-term memory network, ABLSTM),用于漏洞特征提取,取得了較好的漏洞檢測效果.然而在提取詞法語義的特征模型中沒有太大的變化,因此本文推測基于AST表征的漏洞挖掘模型在一定程度上雖然較好地保留了代碼的語法語義特征,但在進(jìn)行漏洞特征提取時效果比較有限.

    基于抽象語法樹的漏洞挖掘模型能夠挖掘源代碼層次化的特征信息,本文從基于抽象語法樹的漏洞挖掘研究工作中挑選和總結(jié)了6項具有代表性的研究工作,具體如表2所示.表2分別從分析對象、模型構(gòu)造、是否跨項目、漏洞類型和性能等多個方面進(jìn)行對比和分析.

    Table 2 Comparisons of Some Reviewed Works Which Applied AST-based Feature Representation for Vulnerability Mining表2 基于抽象語法樹表征的漏洞挖掘模型部分工作對比

    討論2.本文發(fā)現(xiàn)基于AST表征方式的漏洞挖掘模型從分析對象而言主要以C/C++和Java源代碼為主,針對其他編程語言漏洞挖掘的研究相對較少.在模型構(gòu)造方面,采用混合神經(jīng)網(wǎng)絡(luò)[76]的漏洞挖掘效果優(yōu)于單深度學(xué)習(xí)模型[74-75,77-79].從檢測細(xì)粒度而言,檢測粒度越“細(xì)”,模型的挖掘性能越高.也就是說,從語句級別[75]進(jìn)行漏洞特征的提取,會獲得比函數(shù)級別[76,79]和文件級別[77-78]更好的挖掘效果.從是否能夠?qū)崿F(xiàn)跨項目漏洞挖掘而言,能夠發(fā)現(xiàn)基于AST表征方式的漏洞挖掘模型在挖掘能力上明顯優(yōu)于基于序列表征方式的漏洞挖掘模型.從漏洞類型上看,基于AST表征方式的漏洞挖掘不僅能夠?qū)崿F(xiàn)某種特定類型漏洞類型[75-76]的挖掘,也能實現(xiàn)多種漏洞類型[74,77-79]的挖掘.通過分析發(fā)現(xiàn),降維技術(shù)和遷移學(xué)習(xí)能夠在CPVP中取得不錯的效果.

    觀點2.基于AST表征的漏洞挖掘模型能夠?qū)崿F(xiàn)對程序源代碼的抽象表示,完整地保留程序的語法語義信息,刪除了一些與實際語法結(jié)構(gòu)不相關(guān)的細(xì)節(jié),如程序的注釋和分界符號等,適合對程序進(jìn)行分析.因此,本文發(fā)現(xiàn):1)相比于基于序列表征的漏洞挖掘模型,基于AST表征的漏洞挖掘模型能夠完整保留源代碼的詞法和語義語法信息,檢測能力相對較優(yōu);2)由于AST規(guī)模較大,在生成和提取函數(shù)節(jié)點時會花費(fèi)較長的時間成本,檢測速度也相對較慢.

    2.3 基于圖表征的漏洞挖掘模型

    基于圖特征表示的漏洞挖掘模型[30,88-96]是通過使用圖數(shù)據(jù)結(jié)構(gòu)對源代碼的詞法和語義屬性進(jìn)行表示,使得能夠更加有效地抽象出深層次的代碼特征信息.目前常用的圖結(jié)構(gòu)有:DFG、CFG、PDG、數(shù)據(jù)依賴圖(data dependency graph, DDG)和代碼屬性圖 (code property graph, CPG)[51]等.相比于AST對源代碼進(jìn)行直接表示,DFG是一種結(jié)構(gòu)化系統(tǒng)分析方法,以圖形方式表示源代碼在系統(tǒng)內(nèi)部的邏輯流向.CFG則用來描述代碼語句的執(zhí)行順序,以及程序運(yùn)行過程中遍歷到的所有執(zhí)行路徑.PDG對源代碼進(jìn)行標(biāo)記的有向多重圖,能夠反映程序的控制依賴和數(shù)據(jù)依賴關(guān)系.DDG是描述數(shù)據(jù)之間的相互制約關(guān)系,主要分為函數(shù)依賴和連接依賴關(guān)系.CPG是將程序的CFG和DDG等信息進(jìn)行結(jié)合,從而更好地表征程序的結(jié)構(gòu)信息.

    基于圖表征的漏洞挖掘模型主要從不同程序源代碼或二進(jìn)制文件中進(jìn)行安全漏洞挖掘.文獻(xiàn)[30,88-89]從語句層次出發(fā)進(jìn)行漏洞挖掘,均取得了不錯的性能.文獻(xiàn)[30]采用靜態(tài)代碼屬性從CFG和DDG提取源代碼中與漏洞特征相關(guān)的信息,實現(xiàn)Web應(yīng)用中SQLI和XSS漏洞挖掘.該研究基于圖表征對比了不同的機(jī)器學(xué)習(xí)模型和MLP的性能,發(fā)現(xiàn)采用MLP的實驗結(jié)果要比同一數(shù)據(jù)集上采用不同機(jī)器學(xué)習(xí)模型的實驗結(jié)果效果好得多.但圖的生成過程引入了不必要的重復(fù)節(jié)點信息,降低了模型的有效性.

    文獻(xiàn)[88]在數(shù)據(jù)預(yù)處理階段將數(shù)據(jù)依賴和控制依賴關(guān)系,通過嚴(yán)格的去重步驟,移除了重復(fù)編譯的特征向量并生成系統(tǒng)依賴圖(system dependency graph, SDG),輸入到CNN中進(jìn)行學(xué)習(xí)得到圖表征.SDG由去重后的最小中間代碼表示生成而得,發(fā)現(xiàn)具有中間表示學(xué)習(xí)階段的方法有更好的性能.然而,文獻(xiàn)[30,88]實現(xiàn)了單個函數(shù)中語句級別的漏洞檢測,無法進(jìn)行多個函數(shù)比對.為了同時實現(xiàn)多個函數(shù)比對和在語句級別上的漏洞檢測,文獻(xiàn)[89]將深度學(xué)習(xí)與程序切片技術(shù)相結(jié)合,提出了一種面向二進(jìn)制代碼漏洞檢測的深度學(xué)習(xí)系統(tǒng)BVDetector.首先對二進(jìn)制程序的數(shù)據(jù)流和控制流分析,基于CFG提取庫/API函數(shù)調(diào)用,并基于PDG對多個庫/API函數(shù)調(diào)用生成各自對應(yīng)的程序切片,采用BGRU實現(xiàn)語句級別的漏洞挖掘,提升了漏洞挖掘的效果.文獻(xiàn)[30,88-89]都是從語句級別出發(fā)構(gòu)建了不同的深度學(xué)習(xí)模型用于漏洞挖掘,但表現(xiàn)出來的性能有所不佳.這就表明圖表征方式的優(yōu)勢沒有完全挖掘出來,應(yīng)該構(gòu)建適合挖掘圖語法語義信息的深度學(xué)習(xí)模型,實現(xiàn)挖掘性能的提升.

    不少研究工作采用圖神經(jīng)網(wǎng)絡(luò)(graph neural network, GNN)從代碼塊級別[90]和函數(shù)級別[91]實現(xiàn)漏洞挖掘,取得了不錯的效果.文獻(xiàn)[90]以C#編程語言為分析對象,從代碼塊級別出發(fā),預(yù)測每個代碼塊中含有的變量名(VARNAMING)和判斷變量是否被正確使用(VARMISUSE).他們利用PDG邊之間的語法和語義信息,采用GNN構(gòu)建漏洞挖掘模型,取得了較好的檢測能力.然而文獻(xiàn)[30,88-90]僅能挖掘現(xiàn)有已知的漏洞類型,無法檢測其他未知類型的漏洞,具有一定的局限性.

    文獻(xiàn)[91]首次將深度學(xué)習(xí)技術(shù)與漏洞外推(vulnerability extrapolation)概念相結(jié)合,研究利用PDG提取已知漏洞函數(shù)級別的控制依賴和數(shù)據(jù)依賴關(guān)系,采用GNN模型進(jìn)行漏洞模式外推,發(fā)現(xiàn)了一些未曾公布的漏洞信息,這就表明將深度學(xué)習(xí)技術(shù)與漏洞外推結(jié)合的漏洞挖掘模型具有一定的有效性.然而,由于需要對已知漏洞的特征信息進(jìn)行全面的深入分析,這就要求安全研究人員構(gòu)建合適的模型用于學(xué)習(xí)代碼表征,同時漏洞外推只能針對某一種特定漏洞進(jìn)行挖掘,無法檢測其他類型的漏洞,可擴(kuò)展性不強(qiáng).

    基于圖表征的漏洞挖掘模型通過使用圖數(shù)據(jù)結(jié)構(gòu)對源代碼特征進(jìn)行表示,使得能夠抽象出深層次的代碼特征信息.本文從現(xiàn)有的基于圖表征的漏洞挖掘研究工作中,選擇其中5項具有代表性的研究工作進(jìn)行了總結(jié)和對比,具體情況如表3所示.表3分別從分析對象、模型構(gòu)造、檢測細(xì)粒度、漏洞類型以及性能多個角度進(jìn)行分析和討論.

    Table 3 Comparisons of Some Reviewed Works Which Applied Graph-based Feature Representation for Vulnerability Mining表3 基于圖表征的漏洞挖掘模型部分工作對比

    討論3.文獻(xiàn)[30,88-91]在不同程度上構(gòu)建了基于圖表征的漏洞挖掘模型,從分析對象而言,基于圖表征方式的漏洞挖掘模型能夠?qū)崿F(xiàn)多種編程語言[30,88,90-91]以及二進(jìn)制文件[89]的漏洞挖掘.從檢測細(xì)粒度而言,以基本塊屬性為檢測細(xì)粒度的圖表征方式[90],檢測效果相比于函數(shù)級別和語句級別的圖表征方式[30,88-89,91]欠佳.從挖掘的漏洞類型來看,基于圖表征方式的漏洞挖掘模型在特定的漏洞類型挖掘[30,,89-90]以及多種類型漏洞挖掘[88,91]方面,均取得了不錯的檢測效果.

    觀點3.基于圖的表征方式能夠抽象出源代碼中詞法和語義更深層次的特征信息.但由于生成圖表征這一過程復(fù)雜性較高,以及構(gòu)建深度學(xué)習(xí)模型算法存在時間復(fù)雜度和空間復(fù)雜度較高的問題.因此,本文發(fā)現(xiàn):1)選擇圖表征能在一定程度上保留源代碼完整的語法和語義信息,能夠幫助提升漏洞挖掘的效果,但檢測速度較慢,很難應(yīng)用于大規(guī)模的軟件系統(tǒng);2)利用圖嵌入技術(shù)和圖神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)圖表征,可能會帶來更好的漏洞挖掘效果;3)將深度學(xué)習(xí)與漏洞外推相結(jié)合,能夠有效挖掘一種特定類型的漏洞,在未來的研究中如何增強(qiáng)現(xiàn)有漏洞外推工作的能力,是一個值得探索的研究課題.

    2.4 基于文本表征的漏洞挖掘模型

    代碼文本是指源代碼的表面文本、匯編指令和代碼lexer處理的源代碼.文本特征表示是指對從文本中提取出的特征詞進(jìn)行量化,用于描述和代替文本信息.目前,基于文本特征表示的漏洞挖掘模型[97-107]常使用分詞和詞頻統(tǒng)計等方法對程序源代碼進(jìn)行表征,以提取有效的源代碼特征信息.

    文獻(xiàn)[97-102]采用文本挖掘與深度學(xué)習(xí)技術(shù)結(jié)合的方式實現(xiàn)漏洞挖掘,將深度學(xué)習(xí)應(yīng)用于程序分析,均取得了不錯的檢測性能.文獻(xiàn)[97]提出了構(gòu)建程序向量表示的編碼標(biāo)準(zhǔn),利用詞頻統(tǒng)計方法對Java源文件的漏洞模式進(jìn)行表征,采用單深層全卷積神經(jīng)網(wǎng)絡(luò)(fully convolutional networks, FCN)對特征向量進(jìn)行學(xué)習(xí)和訓(xùn)練,其實驗結(jié)果表明深度學(xué)習(xí)模型能夠獲得比“淺層”學(xué)習(xí)模型更好的挖掘性能.事實上,僅依靠詞法分析沒有考慮到語義的上下文關(guān)系,只對程序源代碼信息進(jìn)行了粗糙的語法語義信息提取,限制了漏洞挖掘模型的性能.

    文獻(xiàn)[99-101]以C/C++為分析對象,在不同程度上構(gòu)建了深度學(xué)習(xí)模型用于漏洞挖掘.文獻(xiàn)[99]發(fā)現(xiàn)僅使用詞法分析得到的漏洞特征[97]具有較低的性能,將CNN與NLP相結(jié)合抽象出候選集樣本中的特征,提出了一個系統(tǒng)化的特征提取框架PreNNsem,用于漏洞挖掘.文獻(xiàn)[100]將遷移學(xué)習(xí)應(yīng)用于漏洞挖掘,將基于轉(zhuǎn)換器的雙向編碼表征(bidirectional encoder representation from transform, BERT)方法與BLSTM結(jié)合,從文件級別出發(fā),實現(xiàn)了從英語文本信息到計算機(jī)文件特征提取的過渡,取得了不錯的檢測性能.然而,由于檢測的細(xì)粒度只能從文件級別出發(fā),缺少對程序代碼語義的信息提取,降低了模型的挖掘性能.

    除利用FCN[97],CNN[99]和BLSTM[100]從語料庫中提取漏洞上下文模式和結(jié)構(gòu)信息之外,文獻(xiàn)[101]從語句級別提取語法語義信息,采用神經(jīng)記憶網(wǎng)絡(luò)(neural memory network, NMN)將源代碼的行編碼為特征向量,并存儲到內(nèi)部記憶塊中,有效提升了緩沖區(qū)溢出漏洞類型挖掘的性能.文獻(xiàn)[102]以PHP源代碼為分析對象,結(jié)合深度學(xué)習(xí)技術(shù)和NLP解決PHP Web應(yīng)用程序中SQL注入漏洞檢測問題,豐富了漏洞挖掘的能力.通過分析基于文本表征的漏洞挖掘研究工作發(fā)現(xiàn),大部分研究工作[97-102]僅使用各自構(gòu)建的數(shù)據(jù)集進(jìn)行漏洞挖掘,無法進(jìn)行基準(zhǔn)參考.文獻(xiàn)[103]為了對比不同深度學(xué)習(xí)模型在同一數(shù)據(jù)集上的表現(xiàn)效果,分別采用CNN和RNN進(jìn)行漏洞特征提取,從函數(shù)級數(shù)據(jù)出發(fā),設(shè)計了C/C++詞法分析器歸一化標(biāo)識符信息.其實驗結(jié)果發(fā)現(xiàn)在同一數(shù)據(jù)集上CNN表現(xiàn)出比RNN更好的性能.

    基于文本表征的漏洞挖掘模型直接將源代碼作為文本處理,能夠有效地提取源代碼特征信息.本文從現(xiàn)有的基于文本表征的漏洞挖掘研究工作中,選擇其中6項具有代表性的研究工作進(jìn)行了總結(jié)和對比,具體情況如表4所示.表4分別從分析對象、模型構(gòu)造、檢測細(xì)粒度、漏洞類型以及性能多個角度進(jìn)行分析和討論.

    Table 4 Comparisons of Some Reviewed Works Which Applied Text-based Feature Representation for Vulnerability Mining表4 基于文本表征的漏洞挖掘模型部分工作對比

    討論4.相比于基于序列、基于AST以及基于圖3種表征方式的漏洞挖掘模型,基于文本表征的漏洞挖掘模型采用DNN直接將源代碼作為文本進(jìn)行輸入,能抽象出隱藏在代碼中的語法語義信息.從分析對象而言,基于文本表征的漏洞挖掘模型能夠采用不同類型的網(wǎng)絡(luò)結(jié)構(gòu)從各種輸入數(shù)據(jù)中提取抽象特征,從而挖掘易受攻擊的代碼片段的語義特征.在模型方面,FCN可以擬合高度非線性和抽象的模式,比傳統(tǒng)機(jī)器學(xué)習(xí)算法更有發(fā)展?jié)摿97].CNN模型可以用來學(xué)習(xí)結(jié)構(gòu)化的空間數(shù)據(jù),能夠輔助安全研究人員進(jìn)行漏洞挖掘的工作[99,103].RNN和它的變形模型能夠捕獲順序數(shù)據(jù)的長期依賴關(guān)系,對于理解多種類型漏洞的語義至關(guān)重要[100,102-103].最新的研究工作使用NMN用來存儲具有長期依賴關(guān)系的代碼文本,取得了不錯的效果[101].

    觀點4.從文獻(xiàn)數(shù)量上來看,將文本挖掘與深度學(xué)習(xí)技術(shù)結(jié)合的方法相對較少,針對不同的分析對象、如何構(gòu)建合適的深度網(wǎng)絡(luò)模型提取代碼的上下文依賴關(guān)系和設(shè)計統(tǒng)一公開的數(shù)據(jù)集等方面,基于文本特征表示的漏洞挖掘模型依然是一個值得研究的方向.

    2.5 基于混合表征的漏洞挖掘模型

    基于混合特征表示的漏洞挖掘模型[108-123]是指結(jié)合序列特征表示、抽象語法樹特征表示、圖特征表示和文本特征表示中至少2種特征表示方法,用于源代碼詞法和語義信息的有效提取.相比于單個特征表示的漏洞挖掘模型,基于混合特征表示的漏洞挖掘模型往往具有較高的性能.

    使用單表征方式在一定程度上能夠抽象出代碼的語法和語義信息,但由于易受攻擊的代碼模式多種多樣,且代碼片段之間的上下文依賴關(guān)系錯綜復(fù)雜,定義通用描述所有類型的特征集是幾乎不可能的一項工作.文獻(xiàn)[108-112]采取多個表征形式盡可能完整地提取代碼片段特征信息,來進(jìn)一步彌補(bǔ)語義之間的差距.

    早期的混合特征提取方法[50]需要安全研究人員手工進(jìn)行,無法自動化地進(jìn)行特征提取.文獻(xiàn)[108]面向Android二進(jìn)制文件提取符號特征序列信息和AST語義特征共同構(gòu)建缺陷特征,采用DNN來進(jìn)行缺陷預(yù)測,其受試者工作特征曲線(area under curve, AUC)在WPVP和CPVP中均取得了不錯的實驗性能.

    文獻(xiàn)[109-112]使用AST和圖表示方法共同提取漏洞特征,提高了模型對程序代碼的表示能力.文獻(xiàn)[109]從函數(shù)級數(shù)據(jù)出發(fā),采用一種復(fù)合流動挖掘模型,以AST為基礎(chǔ)骨架,增加CFG和DFG用于追蹤控制流和數(shù)據(jù)流的依賴關(guān)系.采用GNN對圖表征進(jìn)行建模,提升模型對程序代碼的理解能力.文獻(xiàn)[110]提出了基于語法、基于語義和向量表示的漏洞挖掘框架SySeVR,側(cè)重于抽象出與過程間與過程內(nèi)漏洞相關(guān)的語法和語義信息的程序表示,應(yīng)用于多種開源軟件產(chǎn)品,檢測到了15個在NVD中未報告的漏洞,進(jìn)一步證明了該工作的有效性.文獻(xiàn)[111]在文獻(xiàn)[110]基礎(chǔ)之上,引入LLVM定位漏洞具體的位置,對比了不同的深度學(xué)習(xí)模型,表明BGRU取得了最佳的檢測效果.

    一般從直觀上認(rèn)為,提取的特征越復(fù)雜,所得到的語法和語義信息越豐富,檢測效果會較優(yōu).但在文獻(xiàn)[112]中提出了一種基于簡化代碼屬性圖表征的漏洞挖掘模型,從函數(shù)級數(shù)據(jù)出發(fā),以較少的表征信息最大程度上保留了漏洞的特征信息,選取GNN和MLP自動學(xué)習(xí)表征,其實驗結(jié)果發(fā)現(xiàn)該方法用于漏洞挖掘時,具有良好的性能.

    基于混合表征的漏洞挖掘模型采取多種特征表示方法,用于提取源代碼詞法和語義信息.本文從現(xiàn)有的基于混合表征的漏洞挖掘研究工作中,選擇其中5項具有代表性的研究工作進(jìn)行了總結(jié)和對比,具體情況如表5所示.表5分別從分析對象、模型構(gòu)造、檢測細(xì)粒度、是否跨項目、漏洞類型以及性能多個角度進(jìn)行分析和討論.

    Table 5 Comparisons of Some Reviewed Work Which Applied Mixed-based Feature Representation for Vulnerability Mining表5 基于混合表征的漏洞挖掘模型部分工作對比

    討論5.本文從不同角度分析和歸納了基于混合表征方式的漏洞挖掘模型,從分析對象而言,目前大部分文獻(xiàn)主要集中于源代碼漏洞檢測[109-112],二進(jìn)制文件漏洞檢測[108]文獻(xiàn)相對較少.從模型構(gòu)造而言,BRNN[111]和BGRU[110]能夠取得比其他深度學(xué)習(xí)模型較優(yōu)的檢測性能.從檢測細(xì)粒度而言,文獻(xiàn)[110-111]面向過程內(nèi)和過程間進(jìn)行漏洞特征提取,能夠?qū)崿F(xiàn)比函數(shù)級別[109,112]和語句級別[108]更“細(xì)”的語法語義信息提取.文獻(xiàn)[108]雖能夠?qū)崿F(xiàn)跨項目漏洞挖掘,但僅限于二進(jìn)制文件.由于不同編程語言和應(yīng)用環(huán)境的差異性,基于混合特征表示的漏洞挖掘模型在跨項目漏洞挖掘這方面的研究仍然需要安全人員投入大量的時間進(jìn)行探索.

    觀點5.相比于前4種單特征表示方法,基于混合表征的漏洞挖掘模型能夠綜合考慮程序源代碼的詞法、語法和結(jié)構(gòu)、語義信息,同時兼顧函數(shù)組件與函數(shù)控制流之間的依賴關(guān)系,與漏洞的特征具有較強(qiáng)的關(guān)聯(lián)性,檢測能力也更強(qiáng).因此,如何融合多種特征實現(xiàn)自動化和細(xì)粒度漏洞挖掘,是一個值得探索的研究課題.

    2.6 小 結(jié)

    最大程度上完整保留程序數(shù)據(jù)的語法語義信息,抽象出代碼蘊(yùn)含的更深層信息,構(gòu)建合適的數(shù)據(jù)表征方式,將有助于深度神經(jīng)網(wǎng)絡(luò)在進(jìn)行漏洞挖掘時擁有更好的檢測性能.

    本節(jié)分別從序列表征、AST表征、圖表征、文本表征和混合表征等方面分析了現(xiàn)有一系列基于深度學(xué)習(xí)的漏洞挖掘模型研究成果,同時指出了現(xiàn)有代表性研究工作的優(yōu)缺點,并給出了一些研究思路.其工作發(fā)展歷程如圖7所示:

    Fig. 7 The development of software vulnerability mining based on deep learning圖7 基于深度學(xué)習(xí)的軟件漏洞挖掘發(fā)展歷程

    3 具體應(yīng)用場景的漏洞挖掘模型

    通過調(diào)研現(xiàn)有研究工作,本文發(fā)現(xiàn)在實際應(yīng)用場景中,基于深度學(xué)習(xí)的漏洞挖掘模型表現(xiàn)出來的差異有所不同.因此,本節(jié)從不同的的應(yīng)用場景出發(fā),給出基于深度學(xué)習(xí)的漏洞挖掘模型在物聯(lián)網(wǎng)、區(qū)塊鏈智能合約和其他領(lǐng)域(瀏覽器漏洞、文檔類型漏洞和操作系統(tǒng)安全漏洞)漏洞挖掘的研究進(jìn)展.

    本文選擇物聯(lián)網(wǎng)、區(qū)塊鏈智能合約這2個應(yīng)用領(lǐng)域進(jìn)行詳細(xì)分析和討論,有3個原因.1)通過梳理現(xiàn)有文獻(xiàn)發(fā)現(xiàn),現(xiàn)有結(jié)合深度學(xué)習(xí)進(jìn)行漏洞挖掘的研究成果數(shù)量主要集中于這2個領(lǐng)域,有必要分別進(jìn)行單獨調(diào)研和分析.2)物聯(lián)網(wǎng)設(shè)備底層的第三方庫/API源代碼往往存在大量的安全缺陷,一旦其漏洞被惡意的攻擊者進(jìn)行利用,會造成整個網(wǎng)絡(luò)空間安全的穩(wěn)定性.同時,區(qū)塊鏈應(yīng)用場景的多樣化加劇了智能合約的復(fù)雜性,智能合約作為區(qū)塊鏈的核心部分,往往都是以公開透明的方式存在于區(qū)塊鏈中,一旦出現(xiàn)安全漏洞,將會帶來不可估量的損失,危害系統(tǒng)的安全.3)將深度學(xué)習(xí)應(yīng)用于其他領(lǐng)域的研究成果在數(shù)量上相對較少,因此本文將其歸納到其他領(lǐng)域中進(jìn)行探討,以供讀者全方位了解深度學(xué)習(xí)在具體應(yīng)用場景的研究進(jìn)展.

    3.1 物聯(lián)網(wǎng)中基于深度學(xué)習(xí)的漏洞挖掘模型

    物聯(lián)網(wǎng)是近幾年互聯(lián)網(wǎng)時代研究的熱潮之一,大量智能產(chǎn)品給人們帶來便捷的同時,其安全事件也不斷攀升.因此,針對物聯(lián)網(wǎng)中智能產(chǎn)品中的安全漏洞問題,如何利用深度學(xué)習(xí)技術(shù)實現(xiàn)智能化和自動化漏洞挖掘迫在眉睫.

    需要注意的是,本文主要側(cè)重于物聯(lián)網(wǎng)中基于第三方庫/API中存在的安全漏洞,對采用相似度檢測方法或者二進(jìn)制關(guān)聯(lián)算法實現(xiàn)跨平臺二進(jìn)制代碼安全漏洞檢測[124-129]進(jìn)行對比和分析.

    文獻(xiàn)[124-126]以基本塊為檢測細(xì)粒度,對二進(jìn)制代碼構(gòu)建了不同的深度學(xué)習(xí)模型,用于漏洞檢測.文獻(xiàn)[124]發(fā)現(xiàn)采用圖表征提取漏洞特征時,采用圖嵌入神經(jīng)網(wǎng)絡(luò)(graph embedding neural network,GENN)增強(qiáng)了漏洞挖掘的效果.實驗結(jié)果表明:該方法能夠應(yīng)用于不同的應(yīng)用場景,但依賴于手工提取漏洞特征,檢測速度相對較慢且準(zhǔn)確率較低.文獻(xiàn)[124]是利用GENN對二進(jìn)制代碼相似性檢測的一次次有效嘗試.文獻(xiàn)[125-126]將CFG和DFG相結(jié)合,形成標(biāo)記語義流圖(labeled semantic flow graph, LSFG),并且采用深度學(xué)習(xí)算法實現(xiàn)跨平臺二進(jìn)制相似性漏洞搜索工具.通過與現(xiàn)有研究工作[124]比較,體現(xiàn)出較好的函數(shù)語義和搜索精度.然而文獻(xiàn)[124-126]僅僅粗淺以代碼塊為檢測細(xì)粒度,并沒有考慮函數(shù)之間的依賴關(guān)系,降低了模型的檢測性能.

    文獻(xiàn)[127]從函數(shù)級別出發(fā),兼顧函數(shù)之間的依賴關(guān)系,測試多種無監(jiān)督學(xué)習(xí)計算屬性控制流圖,自動化提取跨平臺特征,能夠提升檢測的AUC性能.文獻(xiàn)[128]認(rèn)為Gemini[124]手工提取和壓縮特征的過程會損失語義信息,發(fā)現(xiàn)在不同平臺編譯出的二進(jìn)制代碼的控制流圖節(jié)點順序非常相似,采用BERT和CNN提取語義信息,取得了較好的效果.然而由于在檢測細(xì)粒度上仍以基本塊和函數(shù)級別為主,不同文獻(xiàn)所構(gòu)建的深度學(xué)習(xí)模型的檢測性能無法進(jìn)一步改善性能.為了更加細(xì)粒度的挖掘語法語義信息,文獻(xiàn)[129]分別從函數(shù)過程內(nèi)和過程間進(jìn)行特征提取,提出了新的跨平臺二進(jìn)制代碼相似性檢測方案αDiff,采用CNN實現(xiàn)跨平臺的漏洞挖掘,取得了不錯的實驗結(jié)果.

    本文從現(xiàn)有的針對物聯(lián)網(wǎng)安全漏洞挖掘問題的研究工作中,選擇其中6項具有代表性的研究工作進(jìn)行了總結(jié)和對比,具體情況如表6所示:

    Table 6 Comparisons of Some Reviewed Works Based on Deep Learning for Vulnerability Mining in IoT表6 物聯(lián)網(wǎng)中基于深度學(xué)習(xí)的漏洞挖掘部分工作對比

    表6分別從表征方式、模型構(gòu)造、檢測細(xì)粒度、是否跨項目以及性能多個角度進(jìn)行分析和討論,并且從召回率、準(zhǔn)確率、AUC和效率等方面進(jìn)行了簡單的評估.

    討論6.本文發(fā)現(xiàn)物聯(lián)網(wǎng)中基于第三方庫/API中存在的安全漏洞檢測主要采用圖表征方式提取特征,采用GENN[124-127]和CNN[128-129]等主流深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,文獻(xiàn)[129]從函數(shù)過程內(nèi)和過程間出發(fā),實現(xiàn)比函數(shù)級別[127-128]和基本塊屬性[124-126]更豐富的漏洞特征信息提取,取得了更好的檢測效果.

    觀點6.目前,針對物聯(lián)網(wǎng)中第三方庫/API中存在的安全漏洞檢測,主要采用圖表征方式進(jìn)行漏洞特征表示,雖然能取得一定的檢測效果,但檢測效果提升不是很明顯.由此看來,改善現(xiàn)有圖表征方式,進(jìn)一步豐富漏洞特征信息或者構(gòu)建其他新的代碼表征方式,挖掘蘊(yùn)含在代碼中更深層面的信息,在未來的漏洞挖掘研究中值得探索.總體來說,利用深度學(xué)習(xí)進(jìn)行物聯(lián)網(wǎng)第三方庫/API中的安全漏洞檢測研究目前還在起步階段,是一個值得安全研究人員探討和實踐的方向.

    3.2 智能合約中基于深度學(xué)習(xí)的漏洞挖掘模型

    智能合約是區(qū)塊鏈上可執(zhí)行合約條款的計算機(jī)交易協(xié)議,區(qū)塊鏈通過智能合約向鏈上用戶提供復(fù)雜多樣的業(yè)務(wù)功能,但智能合約的復(fù)雜性會隨著應(yīng)用場景的多樣化不斷增加,勢必會造成大量安全漏洞存在,給整個計算機(jī)系統(tǒng)帶來巨大的威脅.

    智能合約安全漏洞檢測面臨一系列的安全挑戰(zhàn).一方面,由于區(qū)塊鏈中許多項目大都會公開智能合約代碼,這就使得在提升用戶對部署合約信任度的同時也降低了黑客攻擊的成本.另一方面,區(qū)塊鏈技術(shù)起步相對較晚,發(fā)展時間短,在其開發(fā)過程中自身存在嚴(yán)重的缺陷,嚴(yán)重阻礙了區(qū)塊鏈的技術(shù)進(jìn)步發(fā)展.因此,針對智能合約漏洞安全檢測問題,需要安全研究人員采用相應(yīng)的安全技術(shù)充分分析潛在的安全威脅,盡可能規(guī)避漏洞.

    為了解決以上問題,目前不少安全研究人員嘗試將深度學(xué)習(xí)引入到智能合約漏洞檢測領(lǐng)域[130-135].文獻(xiàn)[130-133]均從字節(jié)碼層面出發(fā),采用不同的深度學(xué)習(xí)算法進(jìn)行漏洞挖掘.文獻(xiàn)[130]利用深度學(xué)習(xí)輔助智能合約漏洞檢測,采用LSTM在字節(jié)碼層面分析智能合約的威脅,取得了不錯的效果.文獻(xiàn)[131]同樣從字節(jié)碼出發(fā),將智能合約的字節(jié)碼轉(zhuǎn)化為RGB顏色,再轉(zhuǎn)化為圖像輸入到CNN自動化提取豐富的特征信息,從而克服安全專家手動定義規(guī)則的主觀性.該方法將圖像相似性識別領(lǐng)域的相關(guān)方法應(yīng)用于智能合約安全漏洞檢測,給讀者提供了新的思考方向,具有一定的啟示作用.

    文獻(xiàn)[132]采用DNN對易受攻擊的以太坊虛擬機(jī)字節(jié)碼進(jìn)行分析,提出了靜態(tài)分析工具Eth2Vec用于提取集成代碼和AST特征信息,取得了不錯的實驗結(jié)果.然而,該研究只針對部分字節(jié)碼進(jìn)行分析,模型的可擴(kuò)展性不強(qiáng).考慮到文獻(xiàn)[132]在挖掘模型在可擴(kuò)展性上的不足,文獻(xiàn)[133]首先將遷移學(xué)習(xí)應(yīng)用于智能合約安全漏洞檢測,提出基于深度神經(jīng)網(wǎng)絡(luò)的以太坊智能合約安全漏洞檢測框架ESCORT,利用文本表征字節(jié)碼信息,采用RNN實現(xiàn)自動化特征提取,取得了不錯的檢測效果.

    除此之外,文獻(xiàn)[134-135]從函數(shù)層次出發(fā),利用GNN構(gòu)建漏洞挖掘模型,取得了不錯的檢測性能.文獻(xiàn)[134]構(gòu)造了智能合約函數(shù)的詞法和語義結(jié)構(gòu)圖,利用圖表征方式進(jìn)行漏洞檢測,取得了不錯的實驗性能.文獻(xiàn)[135]將深度學(xué)習(xí)與模糊測試技術(shù)結(jié)合,從而生成智能合約中更好的測試用例和交易調(diào)用序列.使用符號執(zhí)行引擎產(chǎn)生覆蓋率較高的調(diào)用序列,并采用深度神經(jīng)網(wǎng)絡(luò)對序列特征進(jìn)行學(xué)習(xí)得到訓(xùn)練模型,取得了較高的代碼覆蓋率.

    本文從現(xiàn)有針對智能合約安全漏洞挖掘問題的研究工作中,選擇了其中6項具有代表性的研究工作進(jìn)行總結(jié)和對比,并給出了智能合約安全漏洞挖掘領(lǐng)域的一些觀點.表7分別從表征方式、模型構(gòu)造、檢測細(xì)粒度、是否跨項目以及性能多個角度進(jìn)行討論.

    Table 7 Comparisons of Some Reviewed Works Based on Deep Learning for Vulnerability Mining in Smart Contract表7 智能合約中基于深度學(xué)習(xí)的漏洞挖掘部分工作對比

    討論7.從表征方式而言,將序列表征[130,135]、圖表征[134]、文本表征[133]或混合表征[132]等與深度學(xué)習(xí)技術(shù)結(jié)合,均取得了不錯的檢測性能.從檢測細(xì)粒度而言,文獻(xiàn)[130-133]從字節(jié)碼級數(shù)據(jù)出發(fā),能夠?qū)崿F(xiàn)比從函數(shù)級數(shù)據(jù)[134-235]出發(fā)更深層次的語法語義信息提取,取得了相對較優(yōu)的性能.從是否能夠?qū)崿F(xiàn)跨項目漏洞挖掘而言,文獻(xiàn)[133]將遷移學(xué)習(xí)應(yīng)用于智能合約跨項目安全漏洞檢測,取得了不錯的檢測性能.

    觀點7.將深度學(xué)習(xí)應(yīng)用于智能合約安全漏洞挖掘還處于研究初期,仍然還有很長的路要走.通過對現(xiàn)有研究工作的對比和分析,本文認(rèn)為:1)相比于單表征方式的漏洞挖掘模型,基于混合表征的漏洞挖掘模型應(yīng)用于智能合約安全漏洞挖掘,能夠進(jìn)一步豐富漏洞的特征信息,提升漏洞挖掘的能力,但這方面的研究從文獻(xiàn)數(shù)量上來看相對較少,未來這方面的工作依然值得探索;2)在跨項目智能合約安全漏洞檢測中,遷移學(xué)習(xí)的能力未有明確的上限,需要進(jìn)一步進(jìn)行考量.

    3.3 其他領(lǐng)域

    將深度學(xué)習(xí)應(yīng)用于除了3.1~3.2節(jié)物聯(lián)網(wǎng)以及智能合約安全漏洞挖掘領(lǐng)域之外,在瀏覽器安全漏洞、文檔類型漏洞和操作系統(tǒng)安全漏洞挖掘等方面也存在著相關(guān)的研究.本節(jié)進(jìn)行集中介紹,以便讀者了解在具體應(yīng)用場景中,應(yīng)用深度學(xué)習(xí)進(jìn)行漏洞挖掘的現(xiàn)有研究工作.

    為了緩解操作系統(tǒng)中x86程序出現(xiàn)的內(nèi)存崩潰漏洞,文獻(xiàn)[136]提出了一個輕量級的深度學(xué)習(xí)檢測系統(tǒng)VDiscover,具有良好的性能.文獻(xiàn)[137]提出了基于深度學(xué)習(xí)的通用模糊測試框架SmartSeed,用于生成有價值的文件作為模糊工具的測試用例,在檢測過程中發(fā)現(xiàn)了16個新的安全漏洞,表明該方法能夠有效提升模糊測試觸發(fā)漏洞的能力.此外,還有針對文檔類型漏洞的智能化漏洞挖掘方法,文獻(xiàn)[138]采用LSTM深度學(xué)習(xí)模型挖掘PDF文件對象的復(fù)雜結(jié)構(gòu),通過引入畸形數(shù)據(jù)對原樣本域進(jìn)行隨機(jī)擾動,從而執(zhí)行錯誤處理代碼.

    就目前而言,將深度學(xué)習(xí)應(yīng)用于瀏覽器安全漏洞、文檔類型漏洞和操作系統(tǒng)安全漏洞挖掘等方面的研究還在初期階段.針對具體的應(yīng)用場景設(shè)計針對性的漏洞挖掘模型,這方面的研究依然值得安全研究人員進(jìn)行探索.

    4 未來研究展望

    通過梳理和歸納現(xiàn)有基于深度學(xué)習(xí)的軟件漏洞挖掘的研究成果,一方面,本文以每種代碼表征方式為出發(fā)點,分別在2.1~2.5節(jié)分類闡述和對比現(xiàn)有具有代表性的研究工作,并給出了詳盡的討論和觀點(討論&觀點1~5).另一方面,本文從不同的的應(yīng)用場景出發(fā),給出基于深度學(xué)習(xí)的漏洞挖掘模型在物聯(lián)網(wǎng)、區(qū)塊鏈智能合約和其他領(lǐng)域漏洞挖掘的研究進(jìn)展,具體如3.1~3.3節(jié)表述,指出目前深度學(xué)習(xí)應(yīng)用于具體應(yīng)用領(lǐng)域的一些想法(討論&觀點6~7).由于漏洞種類繁多、漏洞產(chǎn)生原理復(fù)雜和現(xiàn)有漏洞挖掘技術(shù)發(fā)展不完備等原因,實現(xiàn)自動化和智能化漏洞挖掘仍然還有很長的路要走.將深度學(xué)習(xí)應(yīng)用于漏洞挖掘領(lǐng)域,雖已取得一定數(shù)量的代表性成果,但現(xiàn)階段的發(fā)展仍未成熟.

    本節(jié)基于2~3節(jié)對現(xiàn)有研究成果的一些討論和觀點(討論&觀點1~7),嘗試總結(jié)基于深度學(xué)習(xí)的漏洞挖掘領(lǐng)域現(xiàn)階段面臨的主要挑戰(zhàn),并在已有綜述文獻(xiàn)[139-147]之上,對未來的重點研究方向主要從5個方向進(jìn)行展望.深度學(xué)習(xí)應(yīng)用于漏洞挖掘領(lǐng)域研究的九大挑戰(zhàn)和機(jī)遇如表8所示:

    Table 8 Challenges and Opportunities in the Field of Vulnerability Mining based on Deep Learning表8 深度學(xué)習(xí)應(yīng)用于漏洞挖掘領(lǐng)域研究面臨的挑戰(zhàn)和機(jī)遇

    4.1 漏洞數(shù)據(jù)集

    將深度學(xué)習(xí)應(yīng)用于自動化、智能化漏洞挖掘,首先面臨的挑戰(zhàn)是數(shù)據(jù)集的獲取(挑戰(zhàn)①),通過對現(xiàn)階段該領(lǐng)域文獻(xiàn)調(diào)研,發(fā)現(xiàn)現(xiàn)有各項研究在性能評估階段都幾乎依賴于各自收集和建立的數(shù)據(jù)集,尚未形成一個統(tǒng)一規(guī)范的數(shù)據(jù)集.同時,在深度學(xué)習(xí)訓(xùn)練模型過程中,需要足夠準(zhǔn)確的標(biāo)記數(shù)據(jù)集,才能獲得高度有效的訓(xùn)練結(jié)果.因此,為了輔助深度學(xué)習(xí)訓(xùn)練模型,必須構(gòu)建一個公開規(guī)范且可以作為基準(zhǔn)的數(shù)據(jù)集.

    4.2 程序數(shù)據(jù)表征

    基于深度學(xué)習(xí)的漏洞挖掘模型,根據(jù)提取特征的方式,可以分為基于序列表征、基于抽象語法樹、基于圖表征、基于文本表征和基于混合表征的漏洞挖掘模型.最大程度上完整保留程序數(shù)據(jù)的語法語義信息,抽象出代碼蘊(yùn)含的更深層信息,構(gòu)建新的數(shù)據(jù)表征方式(挑戰(zhàn)②),將有助于構(gòu)建的神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型擁有更好的檢測性能.基于單特征表示的漏洞挖掘模型雖然在一定程度上能夠抽象出程序數(shù)據(jù)的相關(guān)信息,但基于混合表征的漏洞挖掘模型在實際應(yīng)用中具有更高的性能效果.因此,融合多種特征進(jìn)行漏洞挖掘似乎是漏洞自動化挖掘的有效方案.針對語義模型中的特征爆炸問題(挑戰(zhàn)③),可以采用特征降維方法提升模型的性能.同時,由于易受攻擊的代碼模式復(fù)雜,現(xiàn)有研究在特定類型的漏洞挖掘上取得了較好的性能,但實現(xiàn)多種漏洞挖掘(挑戰(zhàn)④)仍待安全研究人員進(jìn)一步進(jìn)行探索.

    4.3 深度學(xué)習(xí)模型

    將深度學(xué)習(xí)應(yīng)用于漏洞挖掘不需要安全專家手工定義漏洞特征,能夠?qū)崿F(xiàn)自動化和智能化漏洞特征提取.然而目前基于深度學(xué)習(xí)的漏洞挖掘面臨的問題是如何將抽象出的程序數(shù)據(jù)表征轉(zhuǎn)化為適合深度模型的向量表示形式.其次,程序數(shù)據(jù)具有豐富的層次結(jié)構(gòu)和語法語義信息,盡管現(xiàn)有研究已經(jīng)實現(xiàn)了從文件級別、函數(shù)級別到語句級別為粒度的漏洞檢測,但仍然未提供與漏洞相關(guān)更全面的位置信息(挑戰(zhàn)⑤).最后,不同的深度學(xué)習(xí)算法在同一數(shù)據(jù)集上會產(chǎn)生不同的性能效果,如何構(gòu)建合適的深度學(xué)習(xí)模型(挑戰(zhàn)⑥),挖掘更深層次的代碼特征,實現(xiàn)細(xì)粒度的可解釋漏洞挖掘模型,也需要進(jìn)一步加以研究.

    4.4 漏洞智能評估

    傳統(tǒng)的漏洞挖掘方法使用靜態(tài)分析、動態(tài)分析等程序分析技術(shù),雖取得一定的進(jìn)展,卻面臨嚴(yán)重的高誤報和高漏報等問題.同時,基于深度學(xué)習(xí)的漏洞挖掘模型在一定程度上能夠提升基于機(jī)器學(xué)習(xí)的漏洞挖掘的性能.因此,將深度學(xué)習(xí)與靜、動態(tài)分析技術(shù)相結(jié)合進(jìn)行漏洞挖掘能夠提升模型的準(zhǔn)確率,降低高誤報和高漏報等問題(挑戰(zhàn)⑦).面對復(fù)雜的深度學(xué)習(xí)模型以及多層次的代碼表征方式,實現(xiàn)高效率的漏洞挖掘也是一大難題(挑戰(zhàn)⑧).雖然現(xiàn)有的一部分工作采用LLVM等方法實現(xiàn)高效率的漏洞挖掘,但尚未找到有效的代碼表征方式進(jìn)行漏洞挖掘,該方面的研究也是未來的一個研究難點.

    4.5 跨項目漏洞挖掘

    跨項目安全漏洞挖掘(挑戰(zhàn)⑨)是對不同項目的漏洞進(jìn)行檢測,需要將一個項目上構(gòu)造的深度學(xué)習(xí)模型用于挖掘另外一個項目的漏洞.然而,由于不同項目的開發(fā)流程、應(yīng)用領(lǐng)域、編程語言和開發(fā)人員的經(jīng)驗等差異,使得跨項目漏洞檢測的難度加大.雖然有部分研究嘗試采用遷移學(xué)習(xí)實現(xiàn)跨項目漏洞檢測,但僅限于同種編程語言的不同項目之間,尚未實現(xiàn)跨語言的漏洞挖掘.由此看來,跨語言和跨項目的漏洞挖掘在未來依舊是一個值得探索的研究熱點.

    5 結(jié)束語

    隨著人工智能技術(shù)的不斷發(fā)展,將深度學(xué)習(xí)應(yīng)用于軟件漏洞檢測能夠?qū)崿F(xiàn)自動化和智能化漏洞挖掘,緩解了高誤報率和高漏報率等問題.本文通過梳理和總結(jié)現(xiàn)有基于深度學(xué)習(xí)的漏洞挖掘最新研究,歸納其整體工作流程和技術(shù)路線,并從其中核心的深度表征方式為切入點,對現(xiàn)有研究成果進(jìn)行分類闡述.同時也總結(jié)了不同應(yīng)用場景中基于深度學(xué)習(xí)的漏洞挖掘方法的研究進(jìn)展.最后,對該領(lǐng)域所面臨的挑戰(zhàn)和機(jī)遇進(jìn)行展望.

    通過總結(jié)現(xiàn)有研究工作,本文認(rèn)為在未來的研究工作中:最大程度上抽象出漏洞特征的更深層信息,構(gòu)建新的代碼表征方式將有助于提升現(xiàn)有漏洞挖掘模型的性能.同時,采用遷移學(xué)習(xí)和注意力機(jī)制等對跨項目檢測、漏洞位置定位等問題進(jìn)一步分析,克服現(xiàn)有研究方法的局限性,將有助于提升漏洞挖掘的能力.

    猜你喜歡
    深度特征檢測
    “不等式”檢測題
    “一元一次不等式”檢測題
    “一元一次不等式組”檢測題
    深度理解一元一次方程
    如何表達(dá)“特征”
    不忠誠的四個特征
    深度觀察
    深度觀察
    深度觀察
    抓住特征巧觀察
    久久毛片免费看一区二区三区| 黄片播放在线免费| 国产一区二区三区在线臀色熟女 | 久久国产精品人妻蜜桃| 搡老乐熟女国产| 咕卡用的链子| 久久久久网色| 男人舔女人的私密视频| 新久久久久国产一级毛片| 精品人妻在线不人妻| 天堂动漫精品| 满18在线观看网站| 汤姆久久久久久久影院中文字幕| 亚洲国产精品一区二区三区在线| 久久国产精品大桥未久av| 一二三四社区在线视频社区8| 亚洲成av片中文字幕在线观看| 大片免费播放器 马上看| 又黄又粗又硬又大视频| 99国产极品粉嫩在线观看| 亚洲熟妇熟女久久| 日本一区二区免费在线视频| 亚洲中文日韩欧美视频| 王馨瑶露胸无遮挡在线观看| 精品少妇一区二区三区视频日本电影| 欧美精品亚洲一区二区| 日韩免费av在线播放| videos熟女内射| 日韩成人在线观看一区二区三区| 欧美久久黑人一区二区| 国产成人精品久久二区二区91| 午夜福利免费观看在线| 91av网站免费观看| 狠狠狠狠99中文字幕| 国产黄色免费在线视频| 免费观看a级毛片全部| av福利片在线| 午夜91福利影院| 中文字幕制服av| 精品人妻熟女毛片av久久网站| 十八禁人妻一区二区| 国产亚洲午夜精品一区二区久久| 国产精品亚洲一级av第二区| 亚洲av美国av| 成人手机av| 最近最新中文字幕大全电影3 | 国产老妇伦熟女老妇高清| 丝袜喷水一区| 欧美在线一区亚洲| avwww免费| 成人亚洲精品一区在线观看| 国产色视频综合| 91大片在线观看| 精品少妇一区二区三区视频日本电影| 日本黄色日本黄色录像| 免费观看a级毛片全部| 欧美国产精品一级二级三级| 怎么达到女性高潮| 精品一区二区三卡| 亚洲中文av在线| 最近最新免费中文字幕在线| 久久免费观看电影| 亚洲国产av新网站| 国产精品电影一区二区三区 | 色尼玛亚洲综合影院| 欧美精品一区二区免费开放| 亚洲人成电影免费在线| 久久性视频一级片| 一进一出抽搐动态| 亚洲国产中文字幕在线视频| 亚洲国产欧美网| 手机成人av网站| 狠狠精品人妻久久久久久综合| 欧美精品高潮呻吟av久久| 免费少妇av软件| 免费观看人在逋| 色精品久久人妻99蜜桃| 亚洲免费av在线视频| av片东京热男人的天堂| 国产亚洲午夜精品一区二区久久| 无限看片的www在线观看| 变态另类成人亚洲欧美熟女 | 久久久精品区二区三区| 乱人伦中国视频| 日韩 欧美 亚洲 中文字幕| 精品少妇黑人巨大在线播放| 久久人妻熟女aⅴ| 久久精品91无色码中文字幕| 午夜福利免费观看在线| 久久国产精品人妻蜜桃| 久久精品国产综合久久久| 成人av一区二区三区在线看| 国产在线观看jvid| 十八禁网站网址无遮挡| 视频在线观看一区二区三区| svipshipincom国产片| 色综合婷婷激情| 999久久久精品免费观看国产| 考比视频在线观看| 大陆偷拍与自拍| 一区二区三区精品91| 纵有疾风起免费观看全集完整版| 日韩熟女老妇一区二区性免费视频| 国产午夜精品久久久久久| 久久久水蜜桃国产精品网| 亚洲av电影在线进入| 夜夜爽天天搞| 高清毛片免费观看视频网站 | 午夜福利在线免费观看网站| 高清av免费在线| 侵犯人妻中文字幕一二三四区| 蜜桃在线观看..| 青草久久国产| 久久国产亚洲av麻豆专区| 日韩制服丝袜自拍偷拍| 国内毛片毛片毛片毛片毛片| 亚洲精品乱久久久久久| 国产精品国产高清国产av | 丝袜在线中文字幕| 亚洲精品国产精品久久久不卡| 免费在线观看黄色视频的| 啦啦啦视频在线资源免费观看| 免费日韩欧美在线观看| 免费在线观看黄色视频的| 久久精品成人免费网站| 天堂中文最新版在线下载| 国产精品一区二区在线观看99| 美女高潮到喷水免费观看| 亚洲成人手机| 亚洲一区中文字幕在线| 好男人电影高清在线观看| 久久久久久人人人人人| 久久精品熟女亚洲av麻豆精品| 在线天堂中文资源库| 色精品久久人妻99蜜桃| 可以免费在线观看a视频的电影网站| 最新美女视频免费是黄的| 热re99久久精品国产66热6| 性高湖久久久久久久久免费观看| 色综合欧美亚洲国产小说| 五月天丁香电影| 国产主播在线观看一区二区| 久久午夜亚洲精品久久| 又黄又粗又硬又大视频| 十八禁网站网址无遮挡| 亚洲综合色网址| 麻豆成人av在线观看| 高清视频免费观看一区二区| 可以免费在线观看a视频的电影网站| 99久久精品国产亚洲精品| 精品一区二区三区av网在线观看 | 免费高清在线观看日韩| 亚洲欧洲精品一区二区精品久久久| 蜜桃国产av成人99| 黄频高清免费视频| 国产精品 欧美亚洲| 亚洲午夜理论影院| av欧美777| 亚洲一区二区三区欧美精品| 91精品国产国语对白视频| 777久久人妻少妇嫩草av网站| 在线观看一区二区三区激情| 亚洲黑人精品在线| 老司机午夜十八禁免费视频| 久久精品亚洲熟妇少妇任你| 欧美黑人欧美精品刺激| 精品久久蜜臀av无| 国产精品免费视频内射| 99精国产麻豆久久婷婷| 精品一区二区三区av网在线观看 | 男人操女人黄网站| 免费日韩欧美在线观看| 亚洲中文av在线| 老司机福利观看| 国产亚洲av高清不卡| 国产在线免费精品| 狂野欧美激情性xxxx| 又紧又爽又黄一区二区| 成人免费观看视频高清| 久久久精品94久久精品| 国产亚洲精品第一综合不卡| 电影成人av| 日日爽夜夜爽网站| 国产高清激情床上av| 亚洲色图 男人天堂 中文字幕| 亚洲国产欧美网| 人妻 亚洲 视频| 麻豆国产av国片精品| 免费在线观看视频国产中文字幕亚洲| 精品人妻熟女毛片av久久网站| 一本色道久久久久久精品综合| 亚洲欧美日韩另类电影网站| 亚洲九九香蕉| 黄色怎么调成土黄色| 欧美av亚洲av综合av国产av| 麻豆国产av国片精品| 欧美性长视频在线观看| 日韩三级视频一区二区三区| 免费久久久久久久精品成人欧美视频| www.自偷自拍.com| 女性生殖器流出的白浆| 菩萨蛮人人尽说江南好唐韦庄| 满18在线观看网站| 十八禁人妻一区二区| 亚洲情色 制服丝袜| 精品一区二区三区视频在线观看免费 | 国产高清videossex| 国产在线精品亚洲第一网站| 午夜91福利影院| 纯流量卡能插随身wifi吗| 国产精品二区激情视频| 视频在线观看一区二区三区| www.熟女人妻精品国产| 每晚都被弄得嗷嗷叫到高潮| 黄色视频不卡| 国产精品 国内视频| 亚洲av日韩精品久久久久久密| 亚洲人成电影观看| 啦啦啦中文免费视频观看日本| 国产成人欧美| 99精国产麻豆久久婷婷| 色综合欧美亚洲国产小说| 夜夜骑夜夜射夜夜干| 免费看a级黄色片| 99精国产麻豆久久婷婷| 精品久久蜜臀av无| 欧美成人午夜精品| 国产欧美亚洲国产| 国产成人av教育| 精品卡一卡二卡四卡免费| 少妇粗大呻吟视频| 国产精品国产av在线观看| 99国产精品一区二区蜜桃av | 777米奇影视久久| 精品国产亚洲在线| 最近最新中文字幕大全免费视频| 久久精品国产综合久久久| 亚洲成人国产一区在线观看| 午夜久久久在线观看| 91字幕亚洲| 1024视频免费在线观看| 成年人午夜在线观看视频| 亚洲熟妇熟女久久| 大片电影免费在线观看免费| 免费黄频网站在线观看国产| 女警被强在线播放| 另类精品久久| 最近最新中文字幕大全免费视频| 搡老熟女国产l中国老女人| 欧美黄色片欧美黄色片| 国产亚洲午夜精品一区二区久久| 天天影视国产精品| 亚洲伊人久久精品综合| 亚洲国产欧美日韩在线播放| 又大又爽又粗| 美女国产高潮福利片在线看| 久久久欧美国产精品| 国产精品自产拍在线观看55亚洲 | 久久精品国产综合久久久| 国产视频一区二区在线看| 精品国产一区二区三区四区第35| 男女之事视频高清在线观看| 日韩中文字幕视频在线看片| 9191精品国产免费久久| videos熟女内射| 露出奶头的视频| 最新美女视频免费是黄的| 天天影视国产精品| 日韩大片免费观看网站| 亚洲伊人色综图| 又大又爽又粗| 亚洲专区国产一区二区| 国产精品久久久久久人妻精品电影 | 搡老岳熟女国产| 国产精品美女特级片免费视频播放器 | 人人妻人人澡人人爽人人夜夜| av天堂久久9| 日韩视频在线欧美| 最新在线观看一区二区三区| 精品人妻1区二区| 久9热在线精品视频| 九色亚洲精品在线播放| 国产成人精品久久二区二区91| 99国产精品99久久久久| 国产一区二区三区综合在线观看| 国产色视频综合| 久久精品亚洲精品国产色婷小说| 黄色视频不卡| 脱女人内裤的视频| 中文字幕人妻丝袜一区二区| 精品第一国产精品| 亚洲,欧美精品.| 多毛熟女@视频| 国产精品麻豆人妻色哟哟久久| 日本av免费视频播放| 激情在线观看视频在线高清 | 十分钟在线观看高清视频www| 中文字幕制服av| 国产黄色免费在线视频| 成年人午夜在线观看视频| 俄罗斯特黄特色一大片| 大片免费播放器 马上看| 日本黄色日本黄色录像| 91老司机精品| 亚洲第一青青草原| 丰满人妻熟妇乱又伦精品不卡| 亚洲第一av免费看| 18禁裸乳无遮挡动漫免费视频| 在线亚洲精品国产二区图片欧美| 久久精品亚洲av国产电影网| 动漫黄色视频在线观看| 欧美精品一区二区免费开放| 国产视频一区二区在线看| 精品福利永久在线观看| 一边摸一边抽搐一进一出视频| 久久精品人人爽人人爽视色| 两个人看的免费小视频| 18禁国产床啪视频网站| 91大片在线观看| 丁香欧美五月| 免费不卡黄色视频| 国产男靠女视频免费网站| 精品熟女少妇八av免费久了| 天堂俺去俺来也www色官网| 国产精品久久久久久人妻精品电影 | 亚洲成av片中文字幕在线观看| 国产高清videossex| 午夜福利乱码中文字幕| 免费久久久久久久精品成人欧美视频| h视频一区二区三区| 国产成人欧美在线观看 | 黄色视频,在线免费观看| 久久国产亚洲av麻豆专区| 老汉色av国产亚洲站长工具| 窝窝影院91人妻| 一二三四社区在线视频社区8| 丰满人妻熟妇乱又伦精品不卡| av在线播放免费不卡| 精品欧美一区二区三区在线| 国产又色又爽无遮挡免费看| av网站在线播放免费| 丁香欧美五月| 国产男女内射视频| 一区福利在线观看| 欧美另类亚洲清纯唯美| 两个人免费观看高清视频| 女警被强在线播放| 色婷婷久久久亚洲欧美| kizo精华| 热99re8久久精品国产| 少妇 在线观看| 日韩人妻精品一区2区三区| 免费在线观看视频国产中文字幕亚洲| 91av网站免费观看| 欧美精品啪啪一区二区三区| av网站免费在线观看视频| 免费在线观看视频国产中文字幕亚洲| 亚洲av日韩在线播放| 在线观看免费高清a一片| 精品人妻熟女毛片av久久网站| 黄片播放在线免费| 99国产精品免费福利视频| 久久人妻av系列| 国产欧美日韩一区二区三| 2018国产大陆天天弄谢| h视频一区二区三区| 美女扒开内裤让男人捅视频| 少妇被粗大的猛进出69影院| 正在播放国产对白刺激| 男女床上黄色一级片免费看| 精品少妇久久久久久888优播| 国产伦理片在线播放av一区| 精品国产乱子伦一区二区三区| 一二三四社区在线视频社区8| 高潮久久久久久久久久久不卡| 亚洲久久久国产精品| 两个人看的免费小视频| 久久久水蜜桃国产精品网| 亚洲色图综合在线观看| 精品少妇黑人巨大在线播放| 亚洲 欧美一区二区三区| 精品人妻熟女毛片av久久网站| 一级毛片女人18水好多| 国产一区二区激情短视频| 国产1区2区3区精品| 国产午夜精品久久久久久| 99国产精品99久久久久| 香蕉丝袜av| 超碰成人久久| a级毛片在线看网站| 久久国产精品影院| 免费人妻精品一区二区三区视频| 精品国产亚洲在线| 国产极品粉嫩免费观看在线| 99国产极品粉嫩在线观看| 精品一区二区三区四区五区乱码| 天天躁狠狠躁夜夜躁狠狠躁| 国产男女内射视频| 18禁国产床啪视频网站| av国产精品久久久久影院| 99在线人妻在线中文字幕 | 欧美 日韩 精品 国产| 如日韩欧美国产精品一区二区三区| 欧美 亚洲 国产 日韩一| 色94色欧美一区二区| 亚洲国产欧美网| 国产精品自产拍在线观看55亚洲 | 国产xxxxx性猛交| 午夜久久久在线观看| 国产欧美日韩一区二区三| 黄片播放在线免费| 成人亚洲精品一区在线观看| 两性午夜刺激爽爽歪歪视频在线观看 | 在线观看免费视频网站a站| 亚洲国产中文字幕在线视频| 久久av网站| 午夜免费鲁丝| videosex国产| 夜夜骑夜夜射夜夜干| 99国产精品一区二区蜜桃av | 久久av网站| 亚洲色图综合在线观看| 国产精品.久久久| 伦理电影免费视频| 精品一区二区三卡| 久久这里只有精品19| 日韩免费高清中文字幕av| 十八禁网站网址无遮挡| svipshipincom国产片| 精品国产亚洲在线| 免费观看av网站的网址| 青青草视频在线视频观看| 国产精品麻豆人妻色哟哟久久| 国产成人av教育| 老司机靠b影院| 男女边摸边吃奶| 久久精品亚洲精品国产色婷小说| 女人久久www免费人成看片| 男女高潮啪啪啪动态图| 丁香六月天网| 别揉我奶头~嗯~啊~动态视频| 建设人人有责人人尽责人人享有的| 男女免费视频国产| 一本久久精品| 人人妻人人澡人人爽人人夜夜| 脱女人内裤的视频| 国产精品1区2区在线观看. | avwww免费| 欧美日韩视频精品一区| 国产男靠女视频免费网站| av网站在线播放免费| 两个人免费观看高清视频| 青青草视频在线视频观看| 成人免费观看视频高清| 色婷婷久久久亚洲欧美| 国产精品偷伦视频观看了| 久久久久久免费高清国产稀缺| 久久狼人影院| 久久国产精品人妻蜜桃| 国产精品一区二区在线观看99| 热99国产精品久久久久久7| 亚洲av欧美aⅴ国产| 日韩中文字幕欧美一区二区| 无人区码免费观看不卡 | 亚洲一卡2卡3卡4卡5卡精品中文| 成人国产一区最新在线观看| 亚洲综合色网址| kizo精华| 丝袜美足系列| av网站免费在线观看视频| 亚洲欧美激情在线| 色精品久久人妻99蜜桃| 国产精品98久久久久久宅男小说| 欧美精品一区二区免费开放| 亚洲少妇的诱惑av| 首页视频小说图片口味搜索| 免费黄频网站在线观看国产| 老司机午夜福利在线观看视频 | 老司机午夜福利在线观看视频 | 精品午夜福利视频在线观看一区 | 久久久久国产一级毛片高清牌| 日韩欧美一区视频在线观看| 黄色a级毛片大全视频| 日韩视频一区二区在线观看| 国产精品1区2区在线观看. | 777米奇影视久久| 亚洲成人国产一区在线观看| 亚洲av片天天在线观看| 亚洲国产精品一区二区三区在线| 精品国产超薄肉色丝袜足j| 久久久精品国产亚洲av高清涩受| 精品一品国产午夜福利视频| 国产成人av激情在线播放| 日韩视频一区二区在线观看| 一级a爱视频在线免费观看| 国产免费av片在线观看野外av| 精品国内亚洲2022精品成人 | 国产精品 国内视频| 亚洲国产欧美日韩在线播放| 久久久久久亚洲精品国产蜜桃av| 国产高清激情床上av| 国产99久久九九免费精品| 狠狠婷婷综合久久久久久88av| 午夜激情av网站| 欧美成狂野欧美在线观看| 老熟女久久久| www.精华液| 99国产精品免费福利视频| 一本综合久久免费| 亚洲av国产av综合av卡| 亚洲伊人色综图| 色尼玛亚洲综合影院| 美女高潮到喷水免费观看| 久久久久网色| 久久香蕉激情| 99re在线观看精品视频| 脱女人内裤的视频| 国产福利在线免费观看视频| 免费在线观看影片大全网站| 久久久久国产一级毛片高清牌| 美女高潮喷水抽搐中文字幕| 在线观看舔阴道视频| 久久久久国内视频| 成人国产一区最新在线观看| svipshipincom国产片| 女性生殖器流出的白浆| 97人妻天天添夜夜摸| 免费观看a级毛片全部| 在线观看一区二区三区激情| 亚洲欧美日韩高清在线视频 | 亚洲欧美日韩另类电影网站| 黄色片一级片一级黄色片| 午夜福利乱码中文字幕| 在线观看免费高清a一片| 人成视频在线观看免费观看| 黄色 视频免费看| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲精品美女久久久久99蜜臀| 国产精品久久久久成人av| 超色免费av| av天堂在线播放| 国产人伦9x9x在线观看| 俄罗斯特黄特色一大片| 日本黄色视频三级网站网址 | 欧美人与性动交α欧美精品济南到| 涩涩av久久男人的天堂| 中文字幕最新亚洲高清| 国产精品一区二区在线观看99| 在线观看66精品国产| 久久这里只有精品19| 热99久久久久精品小说推荐| 丝袜美足系列| 亚洲人成电影观看| 波多野结衣av一区二区av| 伦理电影免费视频| 国产av精品麻豆| 麻豆成人av在线观看| 操美女的视频在线观看| 国产不卡av网站在线观看| 香蕉久久夜色| 后天国语完整版免费观看| 欧美精品高潮呻吟av久久| 一级毛片女人18水好多| 国产精品久久久久久人妻精品电影 | 51午夜福利影视在线观看| 欧美亚洲日本最大视频资源| 欧美日韩亚洲国产一区二区在线观看 | 亚洲精品在线观看二区| 久久影院123| 亚洲九九香蕉| 动漫黄色视频在线观看| 欧美成人免费av一区二区三区 | 久久精品人人爽人人爽视色| 欧美日韩精品网址| 日韩一卡2卡3卡4卡2021年| 精品人妻在线不人妻| 精品国产国语对白av| 大香蕉久久成人网| 午夜免费成人在线视频| 久久热在线av| 国产福利在线免费观看视频| 自线自在国产av| 91大片在线观看| 精品免费久久久久久久清纯 | 国产精品九九99| a级毛片黄视频| 日本一区二区免费在线视频| 人妻 亚洲 视频| 国产亚洲精品一区二区www | 亚洲精品久久午夜乱码| 欧美精品人与动牲交sv欧美| 日本五十路高清| 国产日韩一区二区三区精品不卡| 18禁美女被吸乳视频| 免费在线观看影片大全网站| 国产精品 欧美亚洲| 亚洲九九香蕉| 女人被躁到高潮嗷嗷叫费观| 高清在线国产一区| 肉色欧美久久久久久久蜜桃| 美女视频免费永久观看网站| 国产精品欧美亚洲77777| 久久久国产精品麻豆| 国产亚洲一区二区精品| 老司机午夜福利在线观看视频 | e午夜精品久久久久久久| 在线观看免费视频网站a站| 精品第一国产精品| 在线天堂中文资源库| 精品国产国语对白av| 黑丝袜美女国产一区| 欧美激情久久久久久爽电影 | 精品国产亚洲在线| bbb黄色大片| 天天影视国产精品|