常 青 劉中金 王猛濤 陳 昱 石志強 孫利民
1(物聯(lián)網(wǎng)信息安全技術(shù)北京市重點實驗室(中國科學(xué)院信息工程研究所) 北京 100093)2(中國科學(xué)院信息工程研究所 北京 100093)3(中國科學(xué)院大學(xué) 北京 100049)4(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100029) (changqing@iie.ac.cn)
?
VDNS: 一種跨平臺的固件漏洞關(guān)聯(lián)算法
常 青1,2,3劉中金4王猛濤1,2,3陳 昱1,2,3石志強1,2,3孫利民1,2,3
1(物聯(lián)網(wǎng)信息安全技術(shù)北京市重點實驗室(中國科學(xué)院信息工程研究所) 北京 100093)2(中國科學(xué)院信息工程研究所 北京 100093)3(中國科學(xué)院大學(xué) 北京 100049)4(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100029) (changqing@iie.ac.cn)
當前,越來越多的物聯(lián)網(wǎng)廠商將第三方代碼庫編譯并部署在不同平臺上.現(xiàn)有研究主要集中在同平臺固件漏洞關(guān)聯(lián)場景,不能直接用于檢測其他平臺上的同源漏洞,而跨平臺場景的研究則剛剛起步.針對現(xiàn)有跨平臺方法準確率低的問題,提出基于神經(jīng)網(wǎng)絡(luò)和局部調(diào)用結(jié)構(gòu)匹配的2階段跨平臺固件漏洞關(guān)聯(lián)方法(vulnerability detection based on neural networks and structure matching, VDNS).以函數(shù)為最小關(guān)聯(lián)單元,對函數(shù)間調(diào)用圖、函數(shù)內(nèi)控制流圖、函數(shù)基本信息進行特征選擇和數(shù)值化處理,并采用神經(jīng)網(wǎng)絡(luò)計算待匹配函數(shù)對的相似程度,在此基礎(chǔ)上采用結(jié)構(gòu)化匹配方法進一步提高匹配精度.實驗結(jié)果表明:該方法在二進制文件OpenSSL上性能指標Top1從32.1%提高至76.49%;采用5個漏洞函數(shù)對OpenSSL進行關(guān)聯(lián)的Rank值均為1;采用4個常見的路由器漏洞函數(shù)在372個D-Link路由器固件上進行關(guān)聯(lián)獲得了良好的實驗效果.
跨平臺;漏洞關(guān)聯(lián);特征選擇;神經(jīng)網(wǎng)絡(luò);二分圖匹配
固件(firmware)是嵌入在硬件設(shè)備中的軟件,表現(xiàn)為存儲于非易失存儲器中的二進制程序,為上層軟件有效使用硬件設(shè)備提供調(diào)用接口,是電子系統(tǒng)的重要組成部分,計算機系統(tǒng)中的BIOS和擴展ROM中的程序,以及常見的網(wǎng)絡(luò)設(shè)備如路由器、交換機、網(wǎng)絡(luò)攝像頭的可執(zhí)行程序都是典型的固件.固件方便了用戶的使用,同時也為信息系統(tǒng)的安全留下隱患.開放式Web應(yīng)用程序安全項目(open Web application security project, OWASP)的調(diào)查結(jié)果顯示,2014年排名前10位的針對物聯(lián)網(wǎng)設(shè)備系統(tǒng)的漏洞威脅和攻擊中,對軟件和嵌入式設(shè)備固件的攻擊排名第9位[1].ZoomEye的統(tǒng)計報告指出,2013年10月發(fā)生的D-Link路由器后門事件中,受影響的路由器型號多達10多個,可在公網(wǎng)搜索訪問到的6萬多臺路由器中受影響的多達23%[2].愈來愈多因惡意固件導(dǎo)致的安全事件的發(fā)生,讓人們認識到固件安全防護的重要性.
固件漏洞關(guān)聯(lián)是指利用已知固件中存在的漏洞檢測出其他固件中存在的同源漏洞.由于固件源代碼難以獲取,一般采用二進制程序相似性檢測等技術(shù),從待檢測固件的二進制文件中搜索并定位包含已知漏洞的代碼片段.早期的應(yīng)用場景中,包含漏洞函數(shù)的二進制文件和待檢測的二進制文件是針對同平臺進行編譯的,具有相同的指令集.按分析對象的不同,漏洞關(guān)聯(lián)方法包括比特流比對[3-4]、指令序列比對[5-12]和動態(tài)插裝[13]等.比特流比對技術(shù)研究01序列的相似性,采用滑動窗口獲得的01序列作為特征計算相似度;指令序列比對技術(shù)研究匯編語句的相似程度;動態(tài)插裝技術(shù)則模擬程序的動態(tài)執(zhí)行過程,比較同環(huán)境下程序執(zhí)行帶來的“副作用”的相似程度.
當前,越來越多的物聯(lián)網(wǎng)廠商將第三方代碼庫編譯并部署在不同的CPU平臺上,如何利用1個平臺(如x86)上的漏洞函數(shù)去關(guān)聯(lián)其他平臺(如ARM,MIPS等)上的同源漏洞變得越來越重要.然而,現(xiàn)有的同平臺漏洞關(guān)聯(lián)方法并不能直接應(yīng)用到跨平臺場景中來:比特流比對技術(shù)分析的對象是比特流,它與平臺采用的編碼方式相關(guān);指令序列比對技術(shù)分析的對象是指令序列,它與平臺采用的指令集相關(guān);動態(tài)插裝技術(shù)分析的是動態(tài)分析過程的中間結(jié)果,受限于分析工具的平臺兼容性,例如動態(tài)插裝工具PIN僅支持x86平臺.2015年P(guān)ewny等人首次提出基于語義的跨平臺漏洞關(guān)聯(lián)方法[14],采用了提升中間語言表示、轉(zhuǎn)語義表達式、數(shù)值采樣和最小Hash加速等技術(shù),將二進制代碼相似性檢測問題轉(zhuǎn)化為基本塊的語義信息比較問題,使用該方法對心臟流血漏洞函數(shù)進行關(guān)聯(lián)獲得了不錯的效果.由于采用了基于可信基點的基本塊擴張算法,對平臺不同導(dǎo)致的函數(shù)內(nèi)部控制流圖細節(jié)異構(gòu)敏感,即在圖匹配的過程中不能跳過不匹配的代碼塊,重新找到比較的開始點,導(dǎo)致后面的匹配全不正確,在對二進制文件OpenSSL進行關(guān)聯(lián)時其性能指標Top1僅達到32.1%.
針對當前方法準確率不高的問題,本文提出一種基于神經(jīng)網(wǎng)絡(luò)和局部調(diào)用結(jié)構(gòu)匹配的2階段跨平臺固件漏洞關(guān)聯(lián)方法(vulnerability detection based on neural networks and structure matching, VDNS),該方法不依賴特定的指令集,可以跨平臺進行固件漏洞關(guān)聯(lián).實驗證明:該方法具有良好的關(guān)聯(lián)效果.
本文提出的固件漏洞關(guān)聯(lián)框架包括2個階段:1)基于神經(jīng)網(wǎng)絡(luò)的函數(shù)數(shù)值相似度的計算階段;2)基于局部調(diào)用結(jié)構(gòu)匹配的函數(shù)整體相似度計算階段.
1個固件下載解壓過濾后包含多個二進制文件,對固件進行漏洞關(guān)聯(lián)等同于對固件包含的二進制文件進行漏洞關(guān)聯(lián).二進制文件在逆向分析后被劃分為多個函數(shù).框架輸入為2個二進制文件F和G,假設(shè)F包含已知的漏洞函數(shù)f,需要對G中的所有函數(shù)進行漏洞關(guān)聯(lián),即目的是獲得漏洞函數(shù)f與G中所有待檢測函數(shù)g的相似程度,記f,g為待匹配函數(shù),(f,g)為待匹配函數(shù)對.圖1是VDNS整體框架.
Fig. 1 The framework of VDNS.圖1 VDNS整體框架
在函數(shù)數(shù)值相似度計算階段,對二進制文件中每個函數(shù)的函數(shù)間調(diào)用關(guān)系、函數(shù)內(nèi)控制流圖、函數(shù)基本信息進行數(shù)值化處理和特征提取,其中特征的表現(xiàn)形式有數(shù)量型、集合型和序列型.針對不同的表現(xiàn)形式,分別采用歐氏距離、Jaccard系數(shù)和最長公共子序列占比這3種度量方法計算待匹配函數(shù)對(f,g)各維特征的相似程度得到相似度向量.基于相似度向量采用ReliefF算法進行特征選擇.篩選后的相似度向量作為神經(jīng)網(wǎng)絡(luò)的輸入,將神經(jīng)網(wǎng)絡(luò)的輸出作為待匹配函數(shù)對(f,g)的數(shù)值相似度.在進行第2階段之前,可以根據(jù)數(shù)值相似度結(jié)果對規(guī)模較大的待檢測函數(shù)集進行初步篩選后再進行較為精確的結(jié)構(gòu)化匹配.
在函數(shù)整體相似度計算階段,分別在二進制文件F和G生成的函數(shù)調(diào)用圖中截取以待匹配函數(shù)f和g為中心的局部調(diào)用結(jié)構(gòu),轉(zhuǎn)化為分層賦權(quán)二分圖,將其最大權(quán)匹配作為最終的整體相似度得分.
在進行關(guān)聯(lián)結(jié)果分析時,可以根據(jù)數(shù)值相似度得分進行關(guān)聯(lián)分析,也可以根據(jù)整體相似度得分進行關(guān)聯(lián)分析.數(shù)值相似度計算是整體相似度計算過程的中間步驟,由于計算數(shù)值相似度不需要進行后期的子圖匹配,因此速度較整體相似度快.但整體相似度考慮了函數(shù)調(diào)用圖的結(jié)構(gòu)信息,準確率高.在實際應(yīng)用中,可以根據(jù)具體情況進行選擇.
由于該方法在第1階段較為全面地提取了函數(shù)在函數(shù)調(diào)用圖、函數(shù)基本屬性和函數(shù)控制流圖3方面信息,并進行了特征選擇,使得提取的特征具有一定的區(qū)分能力,同時,這些特征不依賴指令集,具有一定的跨平臺能力,可以對2個不同指令集的二進制代碼進行相似性度量.而在第2階段采用的局部調(diào)用結(jié)構(gòu)匹配算法結(jié)合了函數(shù)調(diào)用圖層面的局部結(jié)構(gòu)信息,考慮了與待匹配函數(shù)對存在調(diào)用關(guān)系的其他函數(shù)對的相似程度對待匹配函數(shù)對的影響,提高了關(guān)聯(lián)準確率.在第1階段計算出數(shù)值相似度的基礎(chǔ)上,可以對規(guī)模較大的待檢測函數(shù)集進行初步篩選,再進行較為精確的局部調(diào)用結(jié)構(gòu)匹配,提高整體性能.
2.1 提取函數(shù)數(shù)值特征
函數(shù)數(shù)值特征是指函數(shù)中可以進行數(shù)值化處理的特征,如指令個數(shù)、基本塊數(shù)、棧大小等.函數(shù)數(shù)值特征提取的難點和思路如下:
1) 提取的特征應(yīng)忽略平臺不同帶來的差異.既使是同一份源碼針對不同平臺編譯得到的二進制文件反匯編后呈現(xiàn)的匯編程序,其指令集、寄存器、尋址方式和函數(shù)內(nèi)控制流圖也存在很大差異.這就要求提取的特征能忽略平臺不同帶來的差異.而比特流、指令集或寄存器名稱等嚴重依賴平臺,因此選擇的特征不能基于這些對象.二進制文件進行反匯編和信息提取后,大部分信息表達為1個函數(shù)調(diào)用圖、一系列匯編形式的函數(shù)和一系列函數(shù)控制流圖.經(jīng)實驗觀察發(fā)現(xiàn),同一份源碼針對不同平臺編譯,函數(shù)間調(diào)用關(guān)系基本保持一致;函數(shù)的某些基本屬性,例如調(diào)用的字符串,也具有跨平臺特性;至于函數(shù)控制流圖,平臺不同可能導(dǎo)致圖的細節(jié)發(fā)生變化,但某些描述性特征,例如規(guī)模大小等不會發(fā)生巨大變化.因此,本文主要從函數(shù)調(diào)用關(guān)系、函數(shù)基本信息和函數(shù)控制流圖信息3個方面入手,提取平臺依賴較弱的特征.
2) 對匯編程序、圖的數(shù)值化處理.由于分析的對象是匯編程序和圖,無法直接輸入神經(jīng)網(wǎng)絡(luò),這就有必要對匯編程序和圖進行數(shù)值化處理.匯編程序和圖提供的數(shù)值特征眾多,各特征的跨平臺性及區(qū)分度也不盡相同.對匯編程序,可以對棧、字符串、特殊指令所占比例等方面提取;對于圖,可以從點邊信息、度信息和路徑信息進行分析.
具體的提取過程如下:
1) 函數(shù)調(diào)用圖
函數(shù)調(diào)用圖是1個有向圖,節(jié)點表示函數(shù),有向邊表示函數(shù)間調(diào)用關(guān)系.對函數(shù)調(diào)用圖進行分析,提取該函數(shù)被其他函數(shù)調(diào)用的次數(shù)callt和該函數(shù)調(diào)用其他函數(shù)的次數(shù)callf,以及去重后次數(shù)callt2和callf2,構(gòu)成調(diào)用關(guān)系特征.
2) 函數(shù)基本屬性
分析函數(shù)基本信息,計算??臻gstack、代碼量code、調(diào)用字符串個數(shù)str和調(diào)用的字符串集合strSet.對函數(shù)進行指令分析,統(tǒng)計指令個數(shù)inst、跳轉(zhuǎn)指令個數(shù)jump、跳轉(zhuǎn)指令占比jumpp,結(jié)合式(1)計算指令熵instEpt和跳轉(zhuǎn)指令熵jumpEpt,Pk表示(跳轉(zhuǎn))指令k的占比,以上特征構(gòu)成函數(shù)基本特征.
(1)
3) 函數(shù)控制流圖
1個函數(shù)對應(yīng)1個函數(shù)控制流圖(control flow graph, CFG),圖中每個節(jié)點對應(yīng)函數(shù)中的1個基本塊,節(jié)點間的有向邊對應(yīng)基本塊間的跳轉(zhuǎn)關(guān)系.從點邊、度和路徑3個方面對函數(shù)控制流圖進行分析.
對函數(shù)控制流圖進行點邊分析.計算節(jié)點數(shù)node和邊數(shù)edge;按式(2)計算圖密度density,以上構(gòu)成CFG圖點邊屬性特征.
(2)
對函數(shù)控制流圖進行路徑分析,采用Floyd或Dijkstra算法計算入口基本塊到任意基本塊的最小距離,構(gòu)造升序距離序列pathList,計算圖的平均路徑長度avePath、圖直徑(即最長路徑)diameter,按式(3)計算圖鏈路效率effect,以上構(gòu)成CFG圖路徑特征.
(3)
對函數(shù)控制流圖進行度分析,統(tǒng)計每個節(jié)點的出度、入度,將CFG圖轉(zhuǎn)化為無向圖,計算無向CFG圖的每個節(jié)點的度,構(gòu)成入度升序序列iList、出度升序序列oList、無向度升序序列uList.由3種度序列,分別計算3種最大度imax,omax,umax和3種平均度ieva,oeva,ueva;由式(1)計算無向圖度的熵uEpt.按式(4)(5)計算圖的聚類系數(shù)cluster[15],其中,c表示節(jié)點k的所有鄰居節(jié)點構(gòu)成的無向CFG圖的子圖邊數(shù),dk表示節(jié)點k的度,以上構(gòu)成CFG圖度特征.
(4)
(5)
以上共計31維特征作為1個函數(shù)的數(shù)值特征.
2.2 計算待匹配函數(shù)對的相似度向量
由于本文待解決的是每個待比較的函數(shù)對(f,g)的相似性度量問題,不是分類問題,因此神經(jīng)網(wǎng)絡(luò)的輸入不是1個函數(shù)的31維特征,而是待比較函數(shù)對(f,g)的每維特征的相似度構(gòu)成的相似度向量.以上提取的31維特征有3種表現(xiàn)形式:數(shù)量型、序列型和集合型,本文采用不同的相似度度量方法:
1) 針對序列型特征:pathList,iList,oList,uList.采用式(6)計算待比較函數(shù)f和g的序列型特征L1和L2的最長公共子序列(LCS)占比作為相似度[16]:
(6)
其中,c0為0,1之間的1個常量.
2) 針對集合型特征:strSet.計算待比較函數(shù)f和g的strSet特征sf和sg的Jaccard系數(shù)[17]作為相似度:
(7)
其中,c1為0,1之間的1個常量.
3) 針對26維特征數(shù)量型特征.采用式(8)對待比較函數(shù)f和g的數(shù)量型特征Ff和Fg進行相似度計算:
(8)
其中,c2為0,1之間的1個常量.
這樣便得到了31維特征的相似程度,取值范圍是[0,1],構(gòu)成了每個待比較的函數(shù)對(f,g)的相似度特征向量.待比較的函數(shù)對(f,g)相似程度越高,按以上方法計算得到的特征相似度越高.
2.3 特征選擇
特征選擇是從原始特征中選擇出一些最有效的特征以降低數(shù)據(jù)集維度的過程,是提高學(xué)習(xí)算法性能的重要手段.以上31維特征是根據(jù)經(jīng)驗進行選取的,在對未知樣本進行預(yù)測之前,應(yīng)決定哪些特征應(yīng)該采用、哪些特征應(yīng)該忽略.本文采用ReliefF算法[18-19]進行特征選擇,同時采用直觀的統(tǒng)計方法輔證特征選擇的合理性.由于神經(jīng)網(wǎng)絡(luò)輸入是相似度向量,因此以相似度向量為分析對象進行特征選擇.
ReliefF算法是一種特征選擇算法,基于特征對近距離樣本的區(qū)分能力賦予特征不同的權(quán)重.權(quán)重越大,表示該特征的分類能力越強,權(quán)重小于某個閾值的特征應(yīng)被移除.本文采用ReliefF算法計算各個特征相似度的重要程度,實驗數(shù)據(jù)集采用ARM×MIPS的OpenSSL.31個特征的類型和采用ReliefF算法計算31個特征的權(quán)重結(jié)果如表1和圖2所示.如圖2所示,“·”表示每次迭代對應(yīng)編號的特征權(quán)重,“*”表示20次迭代的平均權(quán)重.權(quán)重低于0.015的特征,包括指令熵instEpt、跳轉(zhuǎn)指令熵jumpEpt、度熵uEpt、平均入度ieva、平均出度oeva、最大出度omax、聚類系數(shù)cluster、鏈路效率effect,這8個特征對近距離樣本的區(qū)分能力不高,將其移除.其中指令熵和跳轉(zhuǎn)指令熵代表了函數(shù)的指令分布情況,這2個特征顯著性不高說明不同函數(shù)的指令分布差異性不大.而聚類系數(shù)則代表了函數(shù)控制流圖中三角結(jié)構(gòu)的密度,這與函數(shù)循環(huán)結(jié)構(gòu)密度和形狀有關(guān),該特征顯著性不高說明不同函數(shù)的分支結(jié)構(gòu)差異性不大.
Table 1 The Table of Weight of Features Based on ReliefF
Fig. 3 Separating capacity of code and omax.圖3 代碼量code和最大出度omax的區(qū)分能力示意圖
采用直觀的統(tǒng)計結(jié)果輔證特征選擇的合理性.相似度向量的每個元素取值區(qū)間是[0,1],值越大,代表2個待比較函數(shù)在該特征上相似程度越高.如果大量正樣本特征取值很高,則認為這一特征是好的特征.本文將0~1區(qū)間均分為10個小區(qū)間,統(tǒng)計每個小區(qū)間正樣本的比例.落入各取值區(qū)間的正樣本比例應(yīng)隨著取值區(qū)間的變大而越大.以代碼量特征code和最大出度特征omax為例,考察特征在不同取值區(qū)間包含的正樣本比例.如圖3所示,菱形折線表示代碼量code的區(qū)分能力.隨著代碼量相似度取值區(qū)間的增大,落入對應(yīng)區(qū)間的正樣本比例呈遞增趨勢,說明該特征有較好的區(qū)分能力;倒三角折線表示最大出度omax的區(qū)分能力,其正樣本比例與特征相似度的取值區(qū)間的遞增沒有正相關(guān)性,因此不具有良好的區(qū)分能力,這與ReliefF算法的結(jié)果相對應(yīng).
2.4 神經(jīng)網(wǎng)絡(luò)預(yù)測
Fig. 5 The local calling structure matching.圖5 局部調(diào)用結(jié)構(gòu)匹配示意圖
神經(jīng)網(wǎng)絡(luò)采用反向傳播(back propagation, BP)神經(jīng)網(wǎng)絡(luò)[20],可以實現(xiàn)輸入和輸出間的任意非線性映射,網(wǎng)絡(luò)由輸入層、隱層和輸出層的節(jié)點構(gòu)成,如圖4所示.將篩選得到的23維特征的相似度向量作為神經(jīng)網(wǎng)絡(luò)的輸入,每維特征相似度都從不同方面反映了函數(shù)之間的相似性.通過神經(jīng)網(wǎng)絡(luò)整合這些相似度獲得1個值,作為待比較函數(shù)對(f,g)的數(shù)值相似度.
Fig. 4 The structure of BP neural network.圖4 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
經(jīng)實驗觀察發(fā)現(xiàn),相比函數(shù)內(nèi)部控制流圖,函數(shù)調(diào)用圖對平臺和優(yōu)化選項更具魯棒性.文獻[14]在函數(shù)控制流圖層面上采用了基于可信基點的基本塊擴張算法,對函數(shù)控制流圖異構(gòu)現(xiàn)象敏感,關(guān)聯(lián)效果并不理想.這是由于在圖匹配的過程中,算法不能跳過一小段不匹配的代碼塊,重新找到比較的開始點.這就意味著,一旦有局部異構(gòu),其后面的匹配結(jié)果全不正確.因此,本文在對平臺和優(yōu)化選項魯棒性較好的函數(shù)調(diào)用圖層級上進行結(jié)構(gòu)匹配.
局部調(diào)用結(jié)構(gòu)是指在函數(shù)調(diào)用圖中以待匹配函數(shù)為中心,與其有調(diào)用關(guān)系的函數(shù)構(gòu)成的子圖,按調(diào)用關(guān)系的跳數(shù)可分為1級調(diào)用(直接調(diào)用)、2級調(diào)用等.基于局部調(diào)用結(jié)構(gòu)匹配計算整體相似度是指以函數(shù)數(shù)值相似度為基礎(chǔ),計算待比較函數(shù)對的局部調(diào)用子圖的相似程度.本文假設(shè)距離待匹配函數(shù)越近的函數(shù)對匹配的貢獻越大,采用分層構(gòu)造賦權(quán)二分圖求最大權(quán)匹配的方法,具體流程如下:
1) 從函數(shù)調(diào)用圖中截取待比較函數(shù)的局部結(jié)構(gòu)信息構(gòu)成2個結(jié)構(gòu)子圖.
2) 將截取的結(jié)構(gòu)子圖按離待比較函數(shù)的跳數(shù)分為+1層、+2層等和-1層、-2層等,并按距離跳數(shù)賦權(quán)重ω+1,ω+2等和ω-1,ω-2等.其中待匹配節(jié)點對為0層,權(quán)重為ω0.
3) 逆調(diào)用方向,從距離待匹配節(jié)點對最近+1層開始,將2個節(jié)點集抽象為賦權(quán)完全二分圖,其中邊權(quán)為數(shù)值相似度.采用Kuhn-Munkres算法[21]計算該賦權(quán)完全二分圖的最大權(quán)匹配作為該圖的相似度,并基于節(jié)點匹配結(jié)果對+2層的節(jié)點集構(gòu)造賦權(quán)二分圖,計算最大權(quán)匹配,直至到達距離中心節(jié)點最遠的一層為止.
4) 順調(diào)用方向,具體步驟同3).
5) 計算所有匹配節(jié)點的相似度加權(quán)均值作為待比較函數(shù)的整體相似度.
如圖5所示,計算函數(shù)a0和b0的整體相似度.從+1層開始,將由函數(shù)a11,a12,a13構(gòu)成的節(jié)點集和由函數(shù)b11,b12,b13,b14構(gòu)成的節(jié)點集轉(zhuǎn)化為賦權(quán)二分圖,計算最大權(quán)匹配.假設(shè)函數(shù)a11與函數(shù)b11匹配,那么下一步將計算調(diào)用函數(shù)a11的函數(shù)a21,a22構(gòu)成的節(jié)點集和調(diào)用函數(shù)b11的函數(shù)b21構(gòu)成的節(jié)點集的最大權(quán)匹配.
理論上局部調(diào)用結(jié)構(gòu)的階數(shù)越多,附加信息越多,匹配結(jié)果應(yīng)越精確.但事實上,隨著階數(shù)的增加,前一層二分圖匹配的誤差會傳遞到后一層,這將導(dǎo)致關(guān)聯(lián)結(jié)果變差,并且階數(shù)的增加意味著時間成本的增加.分析局部調(diào)用結(jié)構(gòu)的階數(shù)對算法時間復(fù)雜度的影響,計算第n-1層節(jié)點向第n層擴張的時間復(fù)雜度.設(shè)每層節(jié)點向外平均擴張m個節(jié)點,第n層共有mn個節(jié)點,需要進行mn-1次二分圖匹配,每次匹配的時間復(fù)雜度是O(m3),總共的時間復(fù)雜度是O(mn+2),隨階數(shù)指數(shù)級增長.因此,在進行局部調(diào)用結(jié)構(gòu)匹配時應(yīng)同時考慮關(guān)聯(lián)精度和時間成本.實驗表明,2階能夠取得良好的關(guān)聯(lián)效果.
實驗主要驗證VDNS的漏洞關(guān)聯(lián)性能,所涉及的平臺包括x86,ARM和MIPS.
4.1 實驗設(shè)置
1) 實驗設(shè)備和實現(xiàn)
實驗所用臺式機配置是Intel?CoreTMi7-4790 CPU @3.60 GHz 3.5 GHz,8 GB內(nèi)存.在64位Window平臺上采用python語言實現(xiàn)了VDNS.利用反匯編軟件IDA Pro 6.6對二進制文件進行逆向分析,編寫IDA插件進行特征提?。簧窠?jīng)網(wǎng)絡(luò)采用Matlab R2014b提供的神經(jīng)網(wǎng)絡(luò)工具箱完成.
2) 關(guān)聯(lián)模式的定義
引入1個概念:關(guān)聯(lián)模式,它描述了待匹配函數(shù)f和g所在的二進制文件F和G的平臺和優(yōu)化選項等信息.例如,采用針對x86平臺編譯的二進制文件F與針對MIPS平臺編譯的二進制文件G相關(guān)聯(lián)構(gòu)成的訓(xùn)練集訓(xùn)練神經(jīng)網(wǎng)絡(luò),記“x86×MIPS”為訓(xùn)練集的關(guān)聯(lián)模式.如果應(yīng)用場景是將x86平臺的二進制文件F中函數(shù)f作為漏洞函數(shù),對MIPS平臺的二進制文件G的函數(shù)g作漏洞關(guān)聯(lián),記“x86×MIPS”為測試集的關(guān)聯(lián)模式.本文的實驗數(shù)據(jù)建立在已知測試集的關(guān)聯(lián)模式的假設(shè)之上,采用同關(guān)聯(lián)模式的神經(jīng)網(wǎng)絡(luò)進行計算.本文將在4.6節(jié)驗證即使訓(xùn)練集和測試集的關(guān)聯(lián)模式不同,其關(guān)聯(lián)結(jié)果仍可滿足實際需求.
3) 訓(xùn)練集的構(gòu)造
本文實驗所用的訓(xùn)練集采用BusyBox v1.21.1.以x86×MIPS關(guān)聯(lián)模式的訓(xùn)練集為例,給出具體的構(gòu)造過程.將BusyBox v1.21.1源碼針對x86平臺和MIPS平臺進行編譯得到二進制文件F和G.對于F中每一函數(shù)f,其在G中同名函數(shù)f′即為f真正匹配的函數(shù).取(f,f′)的特征相似度向量為正樣本,標簽為1;在G中隨機取10個函數(shù)gi≠f′,i=1,2,…,10,這10個函數(shù)對(f,g)的特征相似度向量作為負樣本,標簽為0.正負樣本比例為1∶10.
4) 神經(jīng)網(wǎng)絡(luò)的參數(shù)設(shè)置
神經(jīng)網(wǎng)絡(luò)的輸入層和輸出層分別含有23個節(jié)點和1個節(jié)點.隱含層50個節(jié)點為經(jīng)驗值,與實驗的樣本有關(guān),可根據(jù)具體情況調(diào)節(jié)隱含層的節(jié)點數(shù).
5) 動態(tài)鏈接的函數(shù)處理
函數(shù)調(diào)用圖中某些節(jié)點是動態(tài)鏈接的函數(shù),二進制文件中不包含其函數(shù)體,不能直接對其特征提取.本文實驗中設(shè)定涉及動態(tài)鏈接函數(shù)的函數(shù)對的相似度為1個常量.
4.2 評價指標
為了和文獻[14]的結(jié)果對比,我們采用文獻[14]所用的評價指標:Rank和Top,定義如下:
設(shè)漏洞函數(shù)集合為F,待檢測函數(shù)集合為G,對F中的某個漏洞函數(shù)f,計算f與G中所有函數(shù)的相似度.記與漏洞函數(shù)f真正匹配的G中函數(shù)f′的相似度排名為漏洞函數(shù)f的Rank值,Rank值越小表示關(guān)聯(lián)效果越好,Rank值為1表示關(guān)聯(lián)效果最好.
統(tǒng)計F中所有漏洞函數(shù)的Rank值,如果F中有y%的漏洞函數(shù)的Rank值不大于x,記F的Topx值為y%.y%取值范圍為0~1,y%越大表示關(guān)聯(lián)效果越好.通常用Top1,Top10和Top100描述漏洞函數(shù)集合F的整體關(guān)聯(lián)情況.
4.3 時間復(fù)雜度分析
由于本文在計算數(shù)值和整體相似度時是將函數(shù)兩兩進行比較,時間復(fù)雜度是O(nm),其中n是漏洞函數(shù)的個數(shù),m是待檢測的固件函數(shù)的個數(shù),這與文獻[14]相同.由于實際應(yīng)用中漏洞函數(shù)個數(shù)較少,所以本文方法可以應(yīng)用于大規(guī)模固件函數(shù)漏洞檢測.
4.4 跨平臺漏洞關(guān)聯(lián)實驗
實驗主要驗證該方法能夠在跨平臺場景下有效地漏洞關(guān)聯(lián),分為2個部分:二進制文件OpenSSL的函數(shù)關(guān)聯(lián)實驗和真實漏洞函數(shù)的關(guān)聯(lián)實驗.
1) 二進制文件OpenSSL的函數(shù)關(guān)聯(lián)實驗
實驗思路是采用同一份源碼針對不同平臺進行編譯得到2個二進制文件F和G,則與F中函數(shù)f真正匹配的函數(shù)是G中f的同名函數(shù)f′.匹配F的所有函數(shù)與G的所有函數(shù),計算F的Top1,Top10和Top100描述整體關(guān)聯(lián)情況.為了與文獻[14]進行結(jié)果對比,測試采用的二進制文件為OpenSSL,版本是v1.0.1f.
圖6展示了關(guān)聯(lián)模式為ARM×MIPS的Rank值的累計分布函數(shù)圖,橫軸表示x,縱軸表示Topx的值.文獻[14]中的實驗結(jié)果是Top1=32.1%,Top10=56.1%,Top100=80.0%.從圖6中可見,在相同配置下,該方法計算得到的數(shù)值相似度是Top1=39.26%,Top10=69.11%,Top100=83.70%;該方法計算得到的整體相似度是Top1=76.49%,Top10=85.07%,Top100=88.10%.在ARM×MIPS關(guān)聯(lián)模式下,無論是數(shù)值相似度還是整體相似度,本文的實驗結(jié)果都優(yōu)于文獻[14].由于文獻[14]沒有給出OpenSSL在其他關(guān)聯(lián)模式下的實驗結(jié)果,我們僅給出本文方法的實驗結(jié)果,如表2所示,可見關(guān)聯(lián)效果良好.
Fig. 6 Cumulative distribution function of ARM×MIPS.圖6 ARM×MIPS關(guān)聯(lián)模式下的累計分布圖
PatternSimilarityTypeTop1Top10Top100ARM×MIPSResultsin[14]32.1056.1080.00ARM×MIPSNumericalSimilarity39.2669.1183.70ARM×MIPSOverallSimilarity76.4985.0788.10MIPS×x86NumericalSimilarity38.3365.2580.85MIPS×x86OverallSimilarity71.6181.4386.39x86×ARMNumericalSimilarity32.2662.8480.42x86×ARMOverallSimilarity78.9687.3291.97ARM×x86NumericalSimilarity32.9261.1676.68ARM×x86OverallSimilarity76.1485.4489.82MIPS×ARMNumericalSimilarity36.1565.1484.80MIPS×ARMOverallSimilarity75.5483.1289.12x86×MIPSNumericalSimilarity33.6863.4582.18x86×MIPSOverallSimilarity74.2383.9187.90
2) 真實漏洞函數(shù)的關(guān)聯(lián)實驗
為了說明該方法對真實漏洞函數(shù)的關(guān)聯(lián)能力,本文收集了二進制文件OpenSSL中5個漏洞函數(shù),具體信息如表3所示.對二進制文件OpenSSL進行關(guān)聯(lián),計算不同跨平臺關(guān)聯(lián)模式下5個漏洞函數(shù)的Rank值;實驗表明,除了漏洞函數(shù)X509_verify之外,其他4個漏洞函數(shù)的數(shù)值相似度Rank值保持在10以內(nèi),整體相似度的Rank值為1,關(guān)聯(lián)效果良好,具體如表4所示.
Table 3 Five Vulnerability Functions in OpenSSL
Table 4 Search Results of Five Vulnerability Functions in OpenSSL
表4 OpenSSL的5個漏洞函數(shù)的Rank值列表
4.5 在真實固件中關(guān)聯(lián)真實漏洞的關(guān)聯(lián)實驗
實驗主要驗證該方法在真實情況下,即采用真實漏洞函數(shù)在真實固件中進行關(guān)聯(lián),具有良好的關(guān)聯(lián)效果.實驗過程如下:
1) 選擇D-Link路由器固件中常見的4個漏洞函數(shù),如表5所示:
Table 5 Four Vulnerability Functions in D-Link Router Firmware
表5 D-Link路由器固件中4個漏洞函數(shù)列表
2) 從D-Link路由器固件中隨機抽選372個MIPS平臺的固件,篩選條件為文件名包含“cgi”和“web”子串的ELF文件,共計得到305個二進制文件共74 006個函數(shù),其中漏洞函數(shù)同名函數(shù)個數(shù)n分別為29,28,51,58;
Fig. 7 Searching results of four vulnerability functions in routers.圖7 4個漏洞函數(shù)在路由器固件中的關(guān)聯(lián)結(jié)果
3) 分別計算1)中每個漏洞函數(shù)與這74 006個函數(shù)的數(shù)值相似度并進行排序.
設(shè)74 006個函數(shù)中與漏洞函數(shù)同名的函數(shù)個數(shù)為n,將得分最高的前n個函數(shù)中同名函數(shù)的個數(shù)m作為實驗結(jié)果的評價指標.理想情況下,得分最高的前n個函數(shù)中同名函數(shù)的個數(shù)應(yīng)該為n,即這n個同名函數(shù)的數(shù)值相似度在74 006個函數(shù)中排在了前n位.m取值在0~n之間,m越接近n說明關(guān)聯(lián)效果越好.實驗表明,得分最高的前n個函數(shù)中同名函數(shù)個數(shù)為29,22,37,49,如圖7所示.以漏洞函數(shù)alpha_auth_check為例,其同名函數(shù)個數(shù)為29,在進行漏洞關(guān)聯(lián)過程中,所有同名函數(shù)在74 006個函數(shù)中排到了前29,表明關(guān)聯(lián)效果良好.
4.6 已知關(guān)聯(lián)模式對關(guān)聯(lián)結(jié)果的影響
4.5節(jié)的實驗結(jié)果建立在已知關(guān)聯(lián)模式的條件下,但在實際應(yīng)用中存在未知關(guān)聯(lián)模式的情況.本實驗將驗證訓(xùn)練集和測試集關(guān)聯(lián)模式不同時,包括平臺(ARM,MIPS,x86)不同和優(yōu)化選項(-O0,-O1,-O2,-O3)不同,該方法仍能保持良好的關(guān)聯(lián)效果.測試集的關(guān)聯(lián)模式是ARM-O0×MIPS-O2,實驗將采用不同關(guān)聯(lián)模式的訓(xùn)練集訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)計算表3中5個漏洞函數(shù)的數(shù)值相似度的Rank值.
表6表示優(yōu)化選項的關(guān)聯(lián)模式為-O0×-O2時,改變平臺的關(guān)聯(lián)模式的實驗結(jié)果.第1列表示漏洞函數(shù)的平臺,項目欄表示待關(guān)聯(lián)函數(shù)的平臺,表格數(shù)據(jù)表示表3中5個漏洞函數(shù)的數(shù)值相似度的Rank值.例如行1、列4的表格內(nèi)容是1,1,1,1,2,這表示訓(xùn)練集的關(guān)聯(lián)模式為ARM-O0×x86-O2,所在的二進制文件平臺是ARM、優(yōu)化選項是-O0的5個漏洞函數(shù),在平臺是MIPS、優(yōu)化選項為-O2的二進制文件OpenSSL中的關(guān)聯(lián)結(jié)果分別是1,1,1,1,2.黑體結(jié)果表示訓(xùn)練集與測試集關(guān)聯(lián)模式相同的關(guān)聯(lián)結(jié)果.
Table 6 Search Results for Different Platforms
通過觀察表6可以發(fā)現(xiàn),即使訓(xùn)練集與測試集關(guān)聯(lián)模式不同,關(guān)聯(lián)結(jié)果并沒有發(fā)生很大變化,Rank值依然保持在21以內(nèi).這就表明即使平臺關(guān)聯(lián)模式未知,本文提出的算法仍能獲得良好的關(guān)聯(lián)效果.
表7表示平臺的關(guān)聯(lián)模式為-O0×-O2時改變優(yōu)化選項的關(guān)聯(lián)模式的實驗結(jié)果.其中,第1列表示漏洞函數(shù)的優(yōu)化選項,項目欄表示待關(guān)聯(lián)函數(shù)的優(yōu)化選項,表中數(shù)據(jù)表示表3中5個漏洞函數(shù)的數(shù)值相似度的Rank值.結(jié)果表明,即使訓(xùn)練集與測試集優(yōu)化選項不同,關(guān)聯(lián)結(jié)果并沒有發(fā)生很大變化,Rank值依然保持在20以內(nèi).這就表明即使優(yōu)化選項關(guān)聯(lián)模式未知,本文提出的算法仍能獲得良好的關(guān)聯(lián)效果.
Table 7 Searching Results for Different Optimization Options
以編號為4的漏洞函數(shù)為例,相比黑體結(jié)果,采用與測試集不同關(guān)聯(lián)模式的訓(xùn)練集訓(xùn)練的神經(jīng)網(wǎng)絡(luò)計算的排名略有下降.這就表明在進行關(guān)聯(lián)前,如果能夠識別二進制文件的平臺和優(yōu)化選項,將一定程度提高關(guān)聯(lián)的準確率.
本文提出一種基于神經(jīng)網(wǎng)絡(luò)和局部調(diào)用結(jié)構(gòu)匹配的固件漏洞關(guān)聯(lián)方法,該方法以函數(shù)為最小關(guān)聯(lián)單元,較為全面地提取了函數(shù)在函數(shù)調(diào)用圖、函數(shù)基本屬性和函數(shù)控制流圖3方面信息,同時,這些特征的提取不依賴指令集,具有一定的跨平臺能力,可以對2個不同指令集的二進制代碼進行相似程度度量.局部調(diào)用結(jié)構(gòu)匹配考慮了與待匹配函數(shù)有調(diào)用關(guān)系的其他函數(shù)相似程度的影響,提高了準確率.
本文在二進制文件OpenSSL上進行跨平臺漏洞關(guān)聯(lián)實驗,相比已有方法,該方法在同一固件上性能指標Top1從32.1%提高至76.49%;采用5個真實漏洞函數(shù)對二進制文件OpenSSL進行關(guān)聯(lián)時,整體相似度的Rank值均為1.最后,采用4個真實的漏洞函數(shù)在372個D-Link路由器固件上進行關(guān)聯(lián)實驗,結(jié)果表明該方法具有良好的關(guān)聯(lián)效果.下一步工作主要集中于5個方面:
1) 將其他諸如SVM、決策樹等機器學(xué)習(xí)算法應(yīng)用于代碼相似性檢測,并分析其優(yōu)缺點.
2) 識別二進制文件的平臺和編譯優(yōu)化選項,在進行漏洞關(guān)聯(lián)前確定關(guān)聯(lián)模式,提高關(guān)聯(lián)準確率.
3) 實際應(yīng)用中,判定閾值往往根據(jù)特定的實驗數(shù)據(jù)經(jīng)驗獲取.不同關(guān)聯(lián)模式下其相似度的數(shù)值分布不同,經(jīng)驗選取的閾值不能靈活地適應(yīng)不同關(guān)聯(lián)模式的需求.下一步將研究閾值的確定方法.
4) 在對動態(tài)鏈接庫的處理上,本文在實驗中設(shè)定動態(tài)鏈接的函數(shù)的相似度為1個常量.下一步的工作可以通過分析其函數(shù)體所在的動態(tài)鏈接庫文件進行函數(shù)特征提取,提高關(guān)聯(lián)準確率.
5) 本文方法可以應(yīng)用于大規(guī)模固件函數(shù)同源性檢測,時間復(fù)雜度是O(n2).為了減少時間成本,可以采用時間復(fù)雜度為O(n)的聚類算法進行提速,如LSH.
[1]Open Web Application Security Project. OWASP Internet of Things Project (Top 10 IoT Vulnerabilities (2014) Project)[EB/OL]. (2016-02-05)[2016-03-10]. https://www.owasp.org/ index.php/OWASP_Internet_of_Things_Top_Ten_Project#tab=Top_10_IoT_Vulnerabilities__282014_29
[2]Knownsec. A statistical analysis report about the back door of D-Link by ZoomEye.org[EB/OL]. (2013-10-28)[2016-09-05]. http://blog.knownsec.com/2013/10/zoomeye-org關(guān)于d-link后門的統(tǒng)計分析報告(知道創(chuàng)宇. ZoomEye.org關(guān)于D-Link后門的統(tǒng)計分析報告[EB/OL]. (2013-10-28)[2016-09-05]. http://blog.knownsec.com/2013/10/zoomeye-org關(guān)于d-link后門的統(tǒng)計分析報告)
[3]Myles G, Collberg C. K-gram based software birthmarks[C] //Proc of the 20th ACM Symp on Applied Computing. New York: ACM, 2005: 314-318
[4]Kolter J Z, Maloof M A. Learning to detect malicious executables in the wild[C] //Proc of the 10th ACM SIGKDD Int Conf on Knowledge Discovery and Data Mining. New York: ACM, 2004: 470-478
[5]Jin W, Chaki S, Cohen C, et al. Binary function clustering using semantic hashes[C] //Proc of Int Conf on Machine Learning & Applications. Piscataway, NJ: IEEE, 2012: 386-391
[6]David Y, Yahav E. Tracelet-based code search in executables[J]. ACM Sigplan Notices, 2014, 49(6): 349-360
[7]Gao D, Reiter M K, Song D. BinHunt: Automatically finding semantic differences in binary programs[C] //Proc of the 10th Int Conf on Information and Communications Security. Berlin: Springer, 2008: 238-255
[8]Lakhotia A, Preda M D, Giacobazzi R. Fast location of similar code fragments using semantic “juice”[C] //Proc of ACM Sigplan Program Protection and Reverse Engineering Workshop. New York: ACM, 2013: 1-6
[9]Ming J, Pan M, Gao D. iBinHunt: Binary hunting with inter-procedural control flow[C] //Proc of the 15th Information Security and Cryptology. Berlin: Springer, 2012: 92-109
[10]Ng B H, Prakash A. Expose: Discovering potential binary code re-use[C] //Proc of the 37th Annual Computer Software and Applications Conf (COMPSAC’13). Piscataway, NJ: IEEE, 2013: 492-501
[11]Xie Yuqiang, Zeng Ying, Shu Hui. Improved graph-based executable file comparison algorithm[J]. Computer Engineering and Design, 2007, 28(2): 257-260(謝余強, 曾穎, 舒輝. 改進的基于圖的可執(zhí)行文件比較算法[J]. 計算機工程與設(shè)計, 2007, 28(2): 257-260)
[12]Zeng Ming, Zhao Rongcai, Wang Xiaoqin, et al. A binary patch analysis technique based on the disassembly technology[J]. Computer Science, 2006, 33(10): 283-287(曾鳴, 趙榮彩, 王小芹, 等. 一種基于反匯編技術(shù)的二進制補丁分析方法[J]. 計算機科學(xué), 2006, 33(10): 283-287)
[13]Egele M, Woo M, Chapman P, et al. Blanket execution: Dynamic similarity testing for program binaries and components[C] //Proc of the 23rd USENIX Conf on Security Symposium. Berkeley, CA: USENIX Association, 2014: 303-317
[14]Pewny J, Garmany B, Gawlik R, et al. Cross-architecture bug search in binary executables[C] //Proc of IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2015: 709-724
[15]Watts D J, Strogatz S H. Collective dynamics of “small-world” networks[J]. Nature, 1998, 393(6684): 440-442
[16]Bergroth L, Hakonen H, Raita T. A survey of longest common subsequence algorithms[C] //Proc of the 5th Int Symp on String Processing and Information Retrieval. Berlin: Springer, 2000: 39-48
[17]Hamers L, Hemeryck Y, Herweyers G, et al. Similarity measures in scientometric research: The Jaccard index versus Salton’s cosine formula[J]. Information Processing & Management, 1989, 25(3): 315-318
[18]Kononenko I. Estimating attributes: Analysis and extensions of RELIEF[C] //Proc of the 5th European Conf on Machine Learning. Berlin: Springer, 1994: 171-182
[19]Robnik-Sikonja M, Kononenko I. Theoretical and empirical analysis of ReliefF and RReliefF[J]. Machine Learning, 2003, 53(1/2): 23-69
[20]Hecht-Nielsen R. Theory of the back propagation neural network[J]. Neural Networks, 1989, 1(1): 593-605
[21]Bourgeois F, Lassalle J C. An extension of the Munkres algorithm for the assignment problem to rectangular matrices[J]. Communications of the ACM, 1971, 14(12): 802-804
Chang Qing, born in 1991. Master candidate. Received her BSc degree from University of Electronic and Technology of China in 2014. Her main research interests include IOT security, industrial control system security.
Liu Zhongjin, born in 1988. Received his PhD degree from Tsinghua University in 2014. Researcher in the National Computer Network Emergency Response Technical TeamCoordination Center of China. His main research interests include computer and network security, network virtualization, future Internet architecture.
Wang Mengtao, born in 1989. Master candidate. Received his BSc degree from Hainan University in 2014. His main research interests include IOT security.
Chen Yu, born in 1988. PhD candidate. Received his MSc degree from Beihang University in 2014. His main research interests include industrial control system security.
Shi Zhiqiang, born in 1970. Received his PhD degree from the Institute of Software, Chinese Academy of Sciences in 2001. Senior engineer in the Institute of Information Engineering, Chinese Academy of Sciences. His main research interests include industrial control system security, cyber security, etc.
Sun Limin, born in 1966. Received his BSc, MSc, and PhD degrees from National University of Defense Technology in 1988, 1995, and 1998 respectively. Associate professor in the Institute of Information Engineering, Chinese Academy of Sciences. His main research interests include IOT security.
VDNS: An Algorithm for Cross-Platform Vulnerability Searching in Binary Firmware
Chang Qing1,2,3, Liu Zhongjin4, Wang Mengtao1,2,3, Chen Yu1,2,3, Shi Zhiqiang1,2,3, and Sun Limin1,2,3
1(BeijingKeyLaboratoryofIOTInformationSecurity,InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093)2(InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093)3(UniversityofChineseAcademyofSciences,Beijing100049)4(NationalComputerNetworkEmergencyResponseTechnicalTeamCoordinationCenterofChina,Beijing100029)
Nowadays, most IOT vendors use the similar code to compile firmware for devices based on various CPU architectures. However, the prior vulnerability searching methods are limited to the same platform, which can’t be directly extended to the cross-platform case, and the cross-platform studies have just started. In this paper, we propose an algorithm to search vulnerabilities of firmware in a cross-platform model based on neural network and local calling structure matching. Firstly we extract the selected compared features from the call graphs, the basic attributes and the control flow graphs of the two compared functions as the input of the neural network, and gain the calculated results. Then we match the call sub-graphs of the compared functions with the results of the previous step as weight to improve the accuracy. The experimental results on the open source code OpenSSL demonstrate our method has better performance than the prior cross-platform vulnerability searching method with theTop1 increasing from 32.1% to 76.49% in the searching pattern from ARM to MIPS. The searching ranks of the common five vulnerabilities in OpenSSL are all No.1 rank. Moreover, we search the common four vulnerabilities in the firmware of the 372 types of D-Link routers and the results show good performance too.
cross-platform; vulnerability search; feature selection; neural network; bipartite matching
2016-06-16;
2016-08-11
中國科學(xué)院戰(zhàn)略性先導(dǎo)科技專項課題(XDA06040101);國家重點研發(fā)計劃(2016YFB0800202);國家自然科學(xué)基金項目(U1536107)
石志強(shizhiqiang@iie.ac.cn)
TP309.1
Chen Zhifeng, born in 1986. PhD. His main research interests include information security and trust computing.
This work was supported by the State Priority Research Program of the Chinese Academy of Sciences (XDA06040101), the National Key Technology Research and Development Program of China (2016YFB0800202), and the National Natural Science Foundation of China (U1536107).