• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于補(bǔ)丁特性的漏洞掃描研究

      2021-07-24 09:30:12劉思琦王一鳴
      關(guān)鍵詞:源代碼二進(jìn)制補(bǔ)丁

      劉思琦,王一鳴

      (北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,北京100044)

      0 引言

      在時(shí)間維度上,漏洞都會(huì)經(jīng)歷產(chǎn)生、發(fā)現(xiàn)、公開和消亡等過(guò)程,不同的時(shí)間段,漏洞有不同的名稱和表現(xiàn)形式。1day漏洞是指在廠商發(fā)布安全補(bǔ)丁之后,大部分用戶還未打補(bǔ)丁的漏洞,此類漏洞依然具有可利用性。在各類型軟件中,許多漏洞的壽命超過(guò)12個(gè)月,針對(duì)此類漏洞的通用應(yīng)用修復(fù)辦法是使用代碼匹配[1],但是往往通過(guò)補(bǔ)丁做出的修補(bǔ)都是一些細(xì)微的變化,這會(huì)導(dǎo)致許多代碼匹配的方法不精確且不通用,造成結(jié)果高誤報(bào)。

      基于以上問(wèn)題和背景,本文設(shè)計(jì)了一種由源代碼到二進(jìn)制的基于補(bǔ)丁特性的漏洞掃描模型Bin-Scan;基于現(xiàn)存算法設(shè)計(jì)了一種源代碼漏洞檢測(cè)算法,構(gòu)建了基于公開網(wǎng)站的漏洞信息數(shù)據(jù)庫(kù),并得到了基于補(bǔ)丁源代碼檢測(cè)漏洞情況的初步結(jié)果;提出了一種利用補(bǔ)丁前后文件形成漏洞庫(kù),基于CFG和代碼相似性的二進(jìn)制漏洞檢測(cè)算法;實(shí)現(xiàn)了通過(guò)識(shí)別二進(jìn)制文件補(bǔ)丁是否存在以檢測(cè)漏洞。

      1 相關(guān)工作

      1.1 研究背景

      漏洞掃描包括靜態(tài)漏洞掃描和動(dòng)態(tài)漏洞掃描,靜態(tài)漏洞掃描主要包括已知漏洞掃描和未知漏洞掃描,已知漏洞掃描又根據(jù)研究對(duì)象不同分為源代碼掃描和二進(jìn)制代碼掃描。為提高漏洞檢測(cè)的準(zhǔn)確率并降低誤檢率,確保檢全率與正確率的平衡,源代碼漏洞掃描檢測(cè)代碼復(fù)用,主要使用方法有利用正則化窗口匹配的Redebug[2],利用簽名匹配的VUDDY[3]、VulPecker[4]以及基于深度學(xué)習(xí)的漏洞檢測(cè)系統(tǒng)VulDeePecker[5]等。關(guān)于二進(jìn)制代碼的漏洞掃描方法包括bug簽名、樹編輯距離、控制流圖和過(guò)程間控制流分析等。2016年CCS發(fā)布Genius[6],它將CFG轉(zhuǎn)換為數(shù)字特征向量用哈希技術(shù)實(shí)現(xiàn)搜索,可針對(duì)不同平臺(tái)的二進(jìn)制代碼檢測(cè),但檢測(cè)精度卻只有28%;2017年CCS發(fā)布Gemini[7],其在Genius的基礎(chǔ)上進(jìn)行改進(jìn),使用神經(jīng)網(wǎng)絡(luò)嵌入算法大大減少嵌入生成時(shí)間和培訓(xùn)時(shí)間;2016年NDSS發(fā)布discovRE[8],使用控制流圖計(jì)算相似度,識(shí)別其他架構(gòu)的類似函數(shù),可跨架構(gòu)進(jìn)行二進(jìn)制代碼的漏洞檢索;2019年S&P提出Asm2Vec[9],可通過(guò)提取出函數(shù)特征之間的關(guān)系設(shè)計(jì)針對(duì)匯編代碼語(yǔ)法以及控制流圖的表示學(xué)習(xí)模型。

      漏洞掃描中,一方面,設(shè)計(jì)的漏洞檢測(cè)方法需要無(wú)視與漏洞無(wú)關(guān)的代碼更改部分,如函數(shù)升級(jí)和編譯器優(yōu)化的情況;另一方面,檢測(cè)方法也需要足夠的檢測(cè)精度才能過(guò)濾掉那些已經(jīng)進(jìn)行過(guò)補(bǔ)丁修復(fù)而不存在漏洞的函數(shù)?;谏鲜銮闆r,這就需要利用補(bǔ)丁特征檢測(cè)代碼中存在的已知漏洞。將源代碼漏洞檢測(cè)與二進(jìn)制掃描結(jié)合在一起,可以將源代碼級(jí)的漏洞檢查能力應(yīng)用到二進(jìn)制代碼中。2014年USENIX發(fā)布BLEX[10],這是最先利用基于補(bǔ)丁的漏洞產(chǎn)生工具。2018年USENIX發(fā)布FIBER[11],其從補(bǔ)丁生成二進(jìn)制簽名,盡可能保留源碼補(bǔ)丁信息查找二進(jìn)制漏洞。

      1.2 相關(guān)理論

      1.2.1 例子

      在之前的實(shí)驗(yàn)中筆者發(fā)現(xiàn)源代碼檢測(cè)經(jīng)常會(huì)出現(xiàn)諸如模糊匹配及單純結(jié)構(gòu)匹配不精確的問(wèn)題,如圖1的CVE-2013-2852,它的目的是解決Linux內(nèi)核中利用格式字符串說(shuō)明符獲取用戶訪問(wèn)權(quán)限的漏洞,在文件中體現(xiàn)為main.c文件的b43_request_firmware函數(shù)存在格式字符串漏洞,補(bǔ)丁文件在代碼層面只是增加了參數(shù)的類型,改動(dòng)非常細(xì)微,若單純結(jié)構(gòu)匹配發(fā)現(xiàn)不了此漏洞。

      圖1 CVE-2013-2852的補(bǔ)丁

      1.2.2 代碼重用

      代碼重用在軟件中非常普遍,所以對(duì)代碼進(jìn)行檢測(cè)其實(shí)很多情況下都是對(duì)重用的代碼進(jìn)行漏洞的檢測(cè)。

      如圖2所示,如果S1部分包含漏洞,S部分是S1的代碼重用,那么代碼文件P1包含漏洞,P也包含漏洞。

      圖2 檢測(cè)代碼重用漏洞的定義

      二進(jìn)制檢測(cè)時(shí)無(wú)法使用類似源代碼的補(bǔ)丁文本匹配,二進(jìn)制差異性分析可以找到待檢測(cè)二進(jìn)制文件P與P1、P2哪個(gè)更相似,來(lái)判斷是否有漏洞。

      2 基于補(bǔ)丁特性的漏洞掃描模型構(gòu)建

      圖3為BinScan方法概述,以源代碼、CVE漏洞的補(bǔ)丁diff文件、二進(jìn)制待檢測(cè)代碼為輸入,輸出為二進(jìn)制代碼是否含有CVE。此方法的核心有三部分:基于補(bǔ)丁的源代碼漏洞掃描方法、基于CFG的漏洞特征庫(kù)生成方法和基于代碼相似性匹配的二進(jìn)制漏洞掃描方法。

      圖3 BinScan方法概述

      由于NVD等漏洞信息存在不一致的問(wèn)題[12-13],并不確定源代碼是否已經(jīng)進(jìn)行了補(bǔ)丁修補(bǔ)。因此采用源代碼漏洞掃描方法對(duì)給定版本的代碼進(jìn)行掃描,以確定給定版本的源代碼存在哪些漏洞,排除那些源代碼中不存在的漏洞,縮小對(duì)二級(jí)制代碼漏洞的檢測(cè)范圍,提高檢測(cè)效率。

      基于補(bǔ)丁的源代碼漏洞掃描方法:BinScan在輸入待測(cè)Linux Kernel源代碼后,首先利用漏洞信息庫(kù)使用檢測(cè)算法進(jìn)行細(xì)粒度匹配,其次利用影響版本號(hào)庫(kù)進(jìn)行粗粒度篩選,最后生成源代碼所存CVE漏洞結(jié)果。

      基于CFG的漏洞特征庫(kù)生成方法:利用源代碼檢測(cè)CVE結(jié)果生成補(bǔ)丁前后二進(jìn)制文件,提取結(jié)構(gòu)信息形成特征。

      基于相似性匹配的二進(jìn)制漏洞掃描方法:計(jì)算待測(cè)二進(jìn)制文件與漏洞補(bǔ)丁前后二進(jìn)制文件相似度,檢測(cè)補(bǔ)丁是否存在。

      2.1 源代碼漏洞掃描方法

      系統(tǒng)中找到所有含有漏洞、未修補(bǔ)的重用代碼是很困難的,這需要綜合考慮很多問(wèn)題。比如語(yǔ)句的順序是否會(huì)改變匹配的精確度、算法設(shè)計(jì)考慮語(yǔ)義還是語(yǔ)法等。

      針對(duì)以上問(wèn)題,結(jié)合對(duì)現(xiàn)存的源代碼漏洞掃描方法的研究,本文提出的BinScan漏洞檢測(cè)工具應(yīng)滿足以下幾點(diǎn)需求:(1)本文雖主要針對(duì)Linux Kernel的源代碼及漏洞信息進(jìn)行實(shí)驗(yàn),但BinScan也應(yīng)具備一定范圍的通用性。其他應(yīng)用工具代碼按所述步驟操作后也能適用本節(jié)設(shè)計(jì)的算法,其中MySQL、OpenSSL、Firefox等工具已經(jīng)通過(guò)實(shí)驗(yàn)驗(yàn)證;(2)要最大限度地減少誤報(bào)率和漏報(bào)率;(3)盡可能集成化,簡(jiǎn)化使用者的操作步驟,減少參數(shù)配置,生成清晰簡(jiǎn)潔的檢測(cè)報(bào)告;(4)可遷移性強(qiáng),適應(yīng)多種環(huán)境配置。

      本文采用的源代碼漏洞掃描方法基于補(bǔ)丁代碼的函數(shù)定位與漏洞匹配,具體步驟如下:

      首先數(shù)據(jù)預(yù)處理標(biāo)準(zhǔn)化每個(gè)文件,包括刪除語(yǔ)言注釋和所有與代碼邏輯無(wú)關(guān)的語(yǔ)句,尋找漏洞影響路徑,根據(jù)函數(shù)進(jìn)行定位,將待檢測(cè)原始代碼的片段與補(bǔ)丁代碼的片段相互匹配。根據(jù)diff文件特性,可利用更改函數(shù)中的改變位置前三句和后三句共六句定位語(yǔ)句進(jìn)行精確定位。

      根據(jù)補(bǔ)丁文件的“+”“-”前綴語(yǔ)句,可以判斷一個(gè)文件是否含有此CVE漏洞。通過(guò)代碼定位可找到目標(biāo)更改函數(shù),查看函數(shù)中的補(bǔ)丁定位語(yǔ)句前三句,針對(duì)每一句修改語(yǔ)句進(jìn)行源代碼檢索,匹配源代碼中此條語(yǔ)句查看是否已經(jīng)進(jìn)行修改,若整個(gè)文件“+”語(yǔ)句并未添加,“-”語(yǔ)句沒(méi)有刪除,也就說(shuō)明此版本還存在這個(gè)漏洞未修復(fù)。以此類推,逐行檢測(cè),將搜索到函數(shù)后三句定位語(yǔ)句作為結(jié)束的標(biāo)志。

      最后利用漏洞影響版本庫(kù)中最大的漏洞影響版本號(hào)與待測(cè)文件版本進(jìn)行比較,加入版本限制。

      2.2 基于CFG的漏洞特征生成方法

      基于2.1節(jié)所述源代碼已知漏洞掃描方法,既能夠構(gòu)建完整的源代碼漏洞檢測(cè)系統(tǒng),獲取源代碼漏洞檢測(cè)結(jié)果;也能夠?qū)⒃创a漏洞檢測(cè)結(jié)果作為標(biāo)準(zhǔn)值,進(jìn)一步用于二進(jìn)制漏洞檢測(cè)方法中。

      在源代碼補(bǔ)丁前后分別進(jìn)行make編譯,之所以不用gcc操作是因?yàn)長(zhǎng)inux Kernel引用的頭文件太多,在gcc的過(guò)程中很可能出現(xiàn)各種故障,使二進(jìn)制文件的bin文件不可讀。使用xxd語(yǔ)句形成hex文件,用UltraEdit查看、用diff語(yǔ)句得到差值并用compare初步分析可發(fā)現(xiàn)補(bǔ)丁修復(fù)變化過(guò)于復(fù)雜,于是用objdump-d語(yǔ)句將二進(jìn)制文件轉(zhuǎn)換為可讀的反匯編文本文件。

      由于編譯的復(fù)雜性及地址的隨機(jī)性,二進(jìn)制代碼檢測(cè)無(wú)法使用類似2.1節(jié)所述源代碼的補(bǔ)丁文本檢測(cè)方法。如圖4所示,file.c文件函數(shù)中加入語(yǔ)句inode_dio_wait(inode),即使只更改函數(shù)中的一條語(yǔ)句,二進(jìn)制文件中都會(huì)有很大的改動(dòng)。在這種情況下,利用CFG和操作碼可以解決這個(gè)問(wèn)題。

      利用IDA Pro處理待測(cè)二進(jìn)制文件及補(bǔ)丁前后二進(jìn)制代碼,生成包含上下文信息的控制流圖(Control-Flow Graph,CFG)和基本塊的特征向量,每個(gè)基本塊特征信息包括兩部分,分別是生成標(biāo)記嵌入和生成特征向量。生成標(biāo)記嵌入時(shí)曾嘗試使用ACFG(Attributed Control Flow Graph)方法,它是一種基于神經(jīng)網(wǎng)絡(luò)的嵌入,但是本文主要針對(duì)的還是補(bǔ)丁變化,將圖表示作為整體進(jìn)行評(píng)估會(huì)忽略細(xì)節(jié)。本文在實(shí)現(xiàn)時(shí)首先對(duì)二進(jìn)制文件執(zhí)行預(yù)處理,然后應(yīng)用DeepBindiff[14]算法,該方法運(yùn)用了Word2Vec算法[15]生成詞向量的思想以及deepwalk隨機(jī)游走技術(shù)生成了網(wǎng)絡(luò)節(jié)點(diǎn)的表示。通過(guò)在圖上隨機(jī)游走生成文章,每個(gè)游走序列都會(huì)包含一些基本塊。然后,通過(guò)標(biāo)準(zhǔn)化和模型訓(xùn)練得到標(biāo)記嵌入模型并生成標(biāo)記嵌入,這里的標(biāo)記指的是操作碼或者操作數(shù)。由圖4可知每個(gè)基本塊都包含了多行指令,每個(gè)指令都包含了多個(gè)操作數(shù)及MOV、CMP等操作碼,操作碼與操作數(shù)是一對(duì)多的關(guān)系,于是指令的嵌入就可以用操作碼的嵌入與操作數(shù)的平均嵌入值來(lái)連接獲得。式(1)[14]具體解釋了區(qū)塊特征向量的計(jì)算方法。其中,b表示一個(gè)塊,p是操作碼,embedpi是操作碼嵌入,weightpi是上述模型中的TF-IDF權(quán)重,setti是操作數(shù),embedtin是操作數(shù)嵌入的平均值。

      圖4 更改函數(shù)語(yǔ)句所做改變

      特征生成結(jié)果如圖5所示,將源碼的一個(gè)版本整體編譯成功后,再進(jìn)行補(bǔ)丁操作,使用補(bǔ)丁前后編譯形成的二進(jìn)制文件,通過(guò)建立包含漏洞的文件數(shù)據(jù)庫(kù)和修補(bǔ)過(guò)的文件數(shù)據(jù)庫(kù)形成二進(jìn)制漏洞數(shù)據(jù)庫(kù),進(jìn)一步區(qū)分修補(bǔ)過(guò)和未修補(bǔ)的函數(shù)。將漏洞數(shù)據(jù)庫(kù)和待測(cè)文件輸入算法即可得到特征信息。

      圖5 生成特征

      2.3 基于相似度匹配的二進(jìn)制漏洞掃描

      相對(duì)于直接從源代碼補(bǔ)丁形成漏洞簽名,利用源代碼漏洞結(jié)果信息標(biāo)定初步漏洞范圍,再將待測(cè)文件與二進(jìn)制文件打補(bǔ)丁前后文件進(jìn)行相似性檢測(cè)得到塊匹配結(jié)果可以更好地獲取與使用在二進(jìn)制代碼層面的漏洞信息。當(dāng)一個(gè)新的Linux Kernel二進(jìn)制文件需要檢測(cè)是否存在漏洞時(shí),需要利用文件特征向量,用TADW算法和k跳貪婪匹配將兩文件結(jié)合,進(jìn)行塊嵌入生成和塊匹配操作,得到補(bǔ)丁前后兩次二進(jìn)制文件所有塊的匹配結(jié)果。根據(jù)匹配結(jié)果,即可判斷待測(cè)文件與補(bǔ)丁前還是補(bǔ)丁后的二進(jìn)制文件更為相似。若目標(biāo)二進(jìn)制文件與補(bǔ)丁前的文件匹配對(duì)更多,則此文件未打補(bǔ)丁,存在該檢測(cè)漏洞;若目標(biāo)二進(jìn)制文件與補(bǔ)丁后的文件匹配對(duì)更多,則此文件已打補(bǔ)丁,不存在該漏洞。

      3 實(shí)現(xiàn)與分析

      3.1 環(huán)境及數(shù)據(jù)庫(kù)搭建

      本文使用Python3.6在Linux平臺(tái)和Windows平臺(tái)上實(shí)現(xiàn)BinScan工具。為了構(gòu)建較全的已知漏洞補(bǔ)丁庫(kù),首先分析了各大漏洞披露網(wǎng)站的信息,最后選取NVD網(wǎng)站作為數(shù)據(jù)來(lái)源。本文定義了20個(gè)關(guān)鍵詞用于漏洞補(bǔ)丁信息的爬取,如Python、Linux Kernel、Wget等,以這些關(guān)鍵詞為檢索詞條獲取相關(guān)漏洞披露網(wǎng)站的URL。抓取的軟件信息OSS表字段包括軟件名稱(Name)、關(guān)鍵詞(Key Word)、軟件描述(Description)以及NVD記錄信息的總數(shù)量(NVD Records Count)。根據(jù)表中信息,可利用Python的bs4庫(kù)定制爬蟲,從NVD網(wǎng)站上批量爬取每條軟件數(shù)據(jù)的詳細(xì)漏洞補(bǔ)丁信息,比如軟件的CVE Number、Vulnerability Type、Base Score(包括V3與V2)等信息,以供后續(xù)步驟分析和使用;通過(guò)CVE參考鏈接統(tǒng)計(jì)工具,將參考鏈接的網(wǎng)站主站點(diǎn)URL進(jìn)行計(jì)數(shù),并逐一驗(yàn)證是否可以查閱到補(bǔ)丁代碼,根據(jù)這些信息將Hyperlink信息提取進(jìn)行排序可以得到前三位有用且占比最大的網(wǎng)站,它們的數(shù)量及占比如表1所示。分別編寫這三個(gè)網(wǎng)站的爬蟲,爬取網(wǎng)站結(jié)果形成Linux Kernel文件夾,并獲取補(bǔ)丁前代碼(bm)、補(bǔ)丁后代碼(am)、補(bǔ)丁diff文件、危險(xiǎn)等級(jí)信息(score.txt)以及來(lái)源網(wǎng)站(source.txt),這里結(jié)果數(shù)據(jù)庫(kù)的網(wǎng)站占比如表2所示。最后篩選后Linux Kernel數(shù)據(jù)庫(kù)中有2 700條漏洞數(shù)據(jù),15 496個(gè)patch文件。在此步驟中,本文也使用了其他工具,如OpenSSL、OpenSSH、Firefox、Python等,每換一個(gè)工具都需要利用漏洞Hyperlink信息排序,重新編寫適合爬取這個(gè)工具補(bǔ)丁的網(wǎng)站爬蟲。

      表1 網(wǎng)站篩選

      表2 結(jié)果數(shù)據(jù)庫(kù)網(wǎng)站占比

      3.2 程序運(yùn)行

      3.2.1 源代碼漏洞檢測(cè)

      源代碼漏洞掃描方法實(shí)現(xiàn)流程如圖6所示,循環(huán)查看補(bǔ)丁文件是單文件還是多文件以及patch文件中存在@@定位語(yǔ)句的數(shù)目,以Linux Kernel3.10版本為例在算法未優(yōu)化時(shí)運(yùn)行結(jié)果共存在CVE 290條,優(yōu)化后運(yùn)行結(jié)果共存在CVE 261條。圖7為算法粗粒度篩選前后的檢測(cè)結(jié)果對(duì)比圖,其中第一列CVE_number深色指的是代碼不包含但在檢測(cè)中卻檢測(cè)出的及優(yōu)化后漏報(bào)的漏洞,第二列patch_file深色指在算法優(yōu)化后去除的錯(cuò)報(bào)和存疑漏洞。為呈現(xiàn)清晰,本圖忽略了project_file和level內(nèi)容。經(jīng)驗(yàn)證,優(yōu)化后算法準(zhǔn)確率明顯提高,目前此算法的準(zhǔn)確率為93%。

      圖6 2.1節(jié)算法實(shí)現(xiàn)流程

      圖7 2.1節(jié)算法約束前后實(shí)現(xiàn)結(jié)果對(duì)比

      3.2.2 二進(jìn)制代碼漏洞檢測(cè)

      由于整個(gè)Linux內(nèi)核數(shù)據(jù)量巨大,下文主要以Linux Kernel 4.2為例,在已經(jīng)進(jìn)行版本4.2的源代碼漏洞檢測(cè)基礎(chǔ)上,對(duì)二進(jìn)制代碼漏洞檢測(cè)流程進(jìn)行說(shuō)明。首先此版本源代碼檢測(cè)出漏洞CVE-2015-8785,存在文件路徑為fsfusefile.c,于是在Linux環(huán)境中make編譯4.2版本的Linux Kernel代碼,用此漏洞的diff文件對(duì)目標(biāo)路徑文件進(jìn)行補(bǔ)丁操作,然后進(jìn)行第二次make編譯,將編譯前后的obj文件分別存放到補(bǔ)丁前文件夾“before”和補(bǔ)丁后文件夾“after”中,最后將補(bǔ)丁前后文件與待測(cè)文件作為input1和input2,共得到3 373節(jié)點(diǎn)數(shù)及3 307個(gè)公共節(jié)點(diǎn)數(shù),整個(gè)數(shù)據(jù)大小為26 456,將結(jié)果存儲(chǔ)到結(jié)果特征中并可得到基本塊索引。因?yàn)榇寺┒碙inux Kernel最后一個(gè)影響版本號(hào)是4.3.3,于是再編譯4.3版本進(jìn)行匹配檢驗(yàn),得到此版本的塊匹配結(jié)果,發(fā)現(xiàn)亦存在此漏洞,驗(yàn)證了方法的準(zhǔn)確性。

      以Linux Kernel的4.19版本為例進(jìn)行方法驗(yàn)證,將Linux Kernel的vmlinux文件以section形式分開,分開檢測(cè)代碼函數(shù)相似度,最后檢測(cè)結(jié)果如表3所示。

      表3 驗(yàn)證檢測(cè)部分結(jié)果

      3.3 分析及評(píng)價(jià)

      為檢驗(yàn)算法的有效性,將BinScan與Redebug等現(xiàn)有源代碼檢測(cè)算法對(duì)比,結(jié)果表明BinScan可有效提升漏洞檢測(cè)準(zhǔn)確率。使用Redebug工具對(duì)源代碼進(jìn)行漏洞檢測(cè)時(shí)會(huì)產(chǎn)生誤報(bào)現(xiàn)象,如檢測(cè)Linux Kernel4.13版本時(shí),會(huì)檢測(cè)出漏洞CVE-2011-2497,但是實(shí)際上這個(gè)漏洞并不存在,本文提出的方法可解決此誤報(bào)問(wèn)題。除此之外,本文算法還能系統(tǒng)化地生成整個(gè)待測(cè)源代碼包含的所有漏洞信息,而不是針對(duì)一個(gè)漏洞的一條CVE進(jìn)行檢測(cè)。

      與利用補(bǔ)丁代碼信息形成補(bǔ)丁簽名Fiber相比,BinScan還使用了漏洞信息對(duì)源代碼進(jìn)行補(bǔ)丁操作,生成補(bǔ)丁前后編譯的文件,此工具在對(duì)補(bǔ)丁代碼本身分析的基礎(chǔ)上,聯(lián)結(jié)了上下文信息,增加了比較準(zhǔn)確率。本文提出的基于補(bǔ)丁的漏洞檢測(cè)算法既可以解決二進(jìn)制代碼沒(méi)有源代碼支撐做漏洞檢測(cè)的問(wèn)題,也可以利用補(bǔ)丁的精確特性降低漏洞檢測(cè)誤報(bào)率。結(jié)合上述實(shí)驗(yàn),不僅證明了BinScan工具對(duì)Linux Kernel的可用性,而且驗(yàn)證了其他軟件工具的可用性,因此可以將本方法遷移到Linux系統(tǒng)的應(yīng)用工具中,如OpenSSL、OpenSSH等。

      4 結(jié)論

      本文提出了一種針對(duì)代碼重用的利用源代碼檢測(cè)結(jié)果和二進(jìn)制代碼補(bǔ)丁前后的二進(jìn)制文件進(jìn)行漏洞檢測(cè)的方法,設(shè)計(jì)并實(shí)現(xiàn)了由源代碼到二進(jìn)制的漏洞檢測(cè)模型BinScan工具。它可以實(shí)現(xiàn)源代碼檢測(cè)并且將其結(jié)果運(yùn)用到二進(jìn)制代碼的檢測(cè)中,以及將源代碼級(jí)的漏洞檢測(cè)應(yīng)用于二進(jìn)制級(jí)相似性檢測(cè)來(lái)檢測(cè)補(bǔ)丁存在性。本文對(duì)Linux Kernel的漏洞檢測(cè)進(jìn)行評(píng)估,結(jié)果表明,本文提出的檢測(cè)算法在一定程度上克服了二進(jìn)制代碼檢測(cè)不精確且不通用的問(wèn)題;對(duì)于未得到漏洞特征標(biāo)記的二進(jìn)制文件,利用源代碼檢測(cè)信息比傳統(tǒng)方法更有優(yōu)勢(shì)。

      猜你喜歡
      源代碼二進(jìn)制補(bǔ)丁
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      基于TXL的源代碼插樁技術(shù)研究
      有趣的進(jìn)度
      二進(jìn)制在競(jìng)賽題中的應(yīng)用
      健胃補(bǔ)丁
      學(xué)與玩(2018年5期)2019-01-21 02:13:06
      繡朵花兒當(dāng)補(bǔ)丁
      文苑(2018年18期)2018-11-08 11:12:30
      軟件源代碼非公知性司法鑒定方法探析
      補(bǔ)丁奶奶
      幼兒畫刊(2018年7期)2018-07-24 08:25:56
      揭秘龍湖產(chǎn)品“源代碼”
      茌平县| 尼木县| 班戈县| 信宜市| 互助| 鹤岗市| 林口县| 子洲县| 平度市| 云林县| 郯城县| 上林县| 蓝山县| 博客| 中超| 磐安县| 东莞市| 浠水县| 玉山县| 平江县| 临夏县| 顺平县| 陇西县| 白河县| 行唐县| 息烽县| 酉阳| 惠州市| 忻城县| 会昌县| 德保县| 广饶县| 靖西县| 常州市| 和龙市| 阳原县| 宣恩县| 南雄市| 新泰市| 台南市| 固安县|