国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于結(jié)構(gòu)特征的二進(jìn)制代碼安全缺陷分析模型

2017-11-10 08:02:44許團(tuán)屈蕾蕾石文昌
關(guān)鍵詞:分析模型二進(jìn)制語句

許團(tuán),屈蕾蕾,石文昌

?

基于結(jié)構(gòu)特征的二進(jìn)制代碼安全缺陷分析模型

許團(tuán),屈蕾蕾,石文昌

(中國(guó)人民大學(xué)信息學(xué)院,北京 100872)

針對(duì)現(xiàn)有方法檢測(cè)復(fù)雜結(jié)構(gòu)二進(jìn)制代碼安全缺陷的不足,提出新的分析模型,并給出其應(yīng)用方法。首先以缺陷的源代碼元素集合生成特征元素集合,抽取代碼結(jié)構(gòu)信息,構(gòu)建分析模型。然后依據(jù)各類中間表示(IR, intermediate representation)語句的統(tǒng)計(jì)概率計(jì)算分析模型,查找滿足特征模型的IR代碼組,通過IR代碼與二進(jìn)制代碼的轉(zhuǎn)換關(guān)系,實(shí)現(xiàn)對(duì)二進(jìn)制程序中代碼安全缺陷的有效檢測(cè)。分析模型可應(yīng)用于二進(jìn)制單線程程序和并行程序。實(shí)驗(yàn)結(jié)果表明,相對(duì)于現(xiàn)有方法,應(yīng)用該分析模型能夠更全面深入地檢測(cè)出各類結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷,且準(zhǔn)確率更高。

二進(jìn)制分析;分析模型;軟件安全缺陷檢測(cè);缺陷代碼識(shí)別

1 引言

二進(jìn)制程序中的安全缺陷是危害軟件系統(tǒng)的安全性和可靠性的重要原因,目前二進(jìn)制程序的安全性檢測(cè)成為研究熱點(diǎn)。根據(jù)有代表性的研究成果[1~3]可知,多數(shù)類型的軟件安全缺陷是在程序代碼的實(shí)現(xiàn)過程中產(chǎn)生。本文把程序代碼實(shí)現(xiàn)過程中產(chǎn)生的各種類型軟件安全缺陷稱為代碼安全缺陷,并把二進(jìn)制程序中代碼安全缺陷稱為二進(jìn)制代碼安全缺陷。

近年來,各種結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷日益繁多。例如,后門、競(jìng)爭(zhēng)條件及鑒權(quán)繞過等邏輯錯(cuò)誤類型的代碼安全缺陷。它們不僅存在于二進(jìn)制單線程程序,而且分布于各種二進(jìn)制并行程序。而符號(hào)執(zhí)行[4,5]、污點(diǎn)分析[6,7]及模糊測(cè)試[8,9]等現(xiàn)有方法難以發(fā)現(xiàn)結(jié)構(gòu)復(fù)雜的代碼安全缺陷,也不能有效地應(yīng)用于二進(jìn)制并行程序,使軟件系統(tǒng)面臨安全性風(fēng)險(xiǎn)。分析現(xiàn)有方法的檢測(cè)過程可知,這些方法均未深入解析二進(jìn)制代碼安全缺陷代碼結(jié)構(gòu),不能有效地識(shí)別其結(jié)構(gòu)特征,從而產(chǎn)生上述不足。

本文提出對(duì)二進(jìn)制代碼安全缺陷的分析模型。應(yīng)用該模型,可以有效地解決現(xiàn)有方法的不足。本文創(chuàng)新點(diǎn)如下。

1) 給出對(duì)二進(jìn)制代碼安全缺陷的分析原理,基于該分析原理提出二進(jìn)制代碼安全缺陷分析模型的構(gòu)建方法。該方法首先基于代碼安全缺陷的源代碼元素集合構(gòu)建中間表示代碼元素集合,以校驗(yàn)樣本測(cè)試IR代碼元素集合,獲取缺陷IR代碼的關(guān)鍵特征,建立特征元素集合。然后以IR語句的執(zhí)行關(guān)系劃分特征元素集合,并提取特征元素包含的結(jié)構(gòu)信息生成分析模型。分析模型完整包含了代碼安全缺陷的結(jié)構(gòu)特征信息,能夠?yàn)闇?zhǔn)確檢測(cè)二進(jìn)制程序中各類代碼安全缺陷提供充分的支持及有效的判定標(biāo)準(zhǔn)。

2) 給出對(duì)二進(jìn)制代碼安全缺陷分析模型的應(yīng)用原理,基于該應(yīng)用原理提出分析模型的應(yīng)用方法,依據(jù)分析模型中結(jié)構(gòu)特征信息實(shí)施對(duì)二進(jìn)制程序中代碼安全缺陷的有效檢測(cè)。首先基于IR語句的統(tǒng)計(jì)概率計(jì)算分析模型中各路徑單元的權(quán)重,利用工具VTS獲取二進(jìn)制程序的IR執(zhí)行路徑集合。然后在IR執(zhí)行路徑中檢測(cè)滿足分析模型的IR代碼組,并通過IR語句與機(jī)器指令之間的對(duì)應(yīng)信息,檢測(cè)出被測(cè)試二進(jìn)制程序中代碼安全缺陷。該方法既能夠準(zhǔn)確地查找出現(xiàn)有方法難以發(fā)現(xiàn)的各類結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷,也可以有效地應(yīng)用于現(xiàn)有方法難以檢測(cè)的二進(jìn)制并行程序,并且其檢測(cè)過程無需觸發(fā)代碼安全缺陷,能夠有效地避免檢測(cè)結(jié)果的誤報(bào)和漏報(bào)。

2 模型構(gòu)建

為了闡述二進(jìn)制代碼安全缺陷分析模型的構(gòu)建方法,有必要給出以下若干定義。

定義1(程序執(zhí)行路徑)在二進(jìn)制程序B的一次執(zhí)行過程中,每一個(gè)線程執(zhí)行的機(jī)器指令序列都稱為一條指令序列。對(duì)B執(zhí)行過程產(chǎn)生的任意一條指令序列,若移除其中不包含于B的機(jī)器指令,則得到的機(jī)器指令序列稱為B的一條指令執(zhí)行路徑。若程序分析工具把B的一條指令執(zhí)行路徑轉(zhuǎn)換為一條IR語句序列,則該IR語句序列稱為B的一條IR執(zhí)行路徑。IR執(zhí)行路徑與指令執(zhí)行路徑統(tǒng)稱為程序執(zhí)行路徑。

定義2(代碼組)任意一個(gè)源程序P中語義相關(guān)的(≥1)個(gè)代碼段構(gòu)成一個(gè)源代碼組。在P編譯為二進(jìn)制程序B的過程中,若P中一個(gè)源代碼組編譯生成(≥1)個(gè)機(jī)器指令段,則該個(gè)機(jī)器指令段構(gòu)成一個(gè)二進(jìn)制代碼組,稱為的機(jī)器碼,稱為的源碼。當(dāng)程序分析工具把B的指令執(zhí)行路徑轉(zhuǎn)換為IR執(zhí)行路徑時(shí),若包含的機(jī)器指令被轉(zhuǎn)換為個(gè)IR語句段,則該個(gè)IR語句段構(gòu)成一個(gè)IR代碼組,稱為和的IR碼,稱為的源碼,稱為的機(jī)器碼。源代碼組、二進(jìn)制代碼組及IR代碼組統(tǒng)稱為代碼組。

定義3(缺陷IR代碼)若類型軟件安全的缺陷是在程序代碼的實(shí)現(xiàn)過程中產(chǎn)生,則稱其為類型代碼安全缺陷。若源程序中一個(gè)類型代碼安全缺陷包含(≥1)個(gè)代碼段,則該個(gè)代碼段構(gòu)成的一個(gè)源代碼組,稱為類型缺陷源代碼,并稱的機(jī)器碼及IR碼分別為類型缺陷二進(jìn)制代碼及類型缺陷IR代碼。

定義4(IR語句的匹配)設(shè)為一條程序語句,對(duì)中任意一項(xiàng)數(shù)據(jù),稱為的數(shù)據(jù),記為∈。設(shè)u、u為兩條IR語句,若它們之間滿足以下條件:①uu的語句類型相同;②對(duì)任意數(shù)據(jù)du,存在數(shù)據(jù)du,ud的位置與ud的位置相同,且dd具有相同的類型。則稱uu匹配,記為u?u。

基于上述概念可知,缺陷源代碼、缺陷二進(jìn)制代碼及缺陷IR代碼都是代碼安全缺陷的具體存在形式,它們之間可以相互轉(zhuǎn)換,對(duì)它們的代碼結(jié)構(gòu)進(jìn)行有效的分析,是檢測(cè)代碼安全缺陷的基礎(chǔ)和前提。本文對(duì)二進(jìn)制代碼安全缺陷的分析原理如圖1所示。

首先把缺陷源代碼轉(zhuǎn)換為缺陷IR代碼,基于校驗(yàn)樣本提取出其代碼特征。其次利用程序語句之間的執(zhí)行關(guān)系,劃分代碼特征的組成部分。然后對(duì)各組成部分進(jìn)行形式化抽象,獲取其中代碼結(jié)構(gòu)的完整信息。由于IR語句與機(jī)器指令之間一一對(duì)應(yīng),且語義相同,所以上述過程獲取的結(jié)構(gòu)特征信息準(zhǔn)確地描述了二進(jìn)制代碼安全缺陷的具體存在形式,能夠作為檢測(cè)二進(jìn)制程序中代碼安全缺陷的有效依據(jù)。

根據(jù)上述原理,給出構(gòu)建任意類型二進(jìn)制代碼安全缺陷的分析模型的6個(gè)主要步驟。

步驟2 把源程序P編譯為二進(jìn)制程序B,應(yīng)用工具VTS獲取B的IR執(zhí)行路徑。VTS是基于開源軟件Valgrind[10,11]和Taintgrind[12]實(shí)現(xiàn)的程序分析工具,能夠監(jiān)控B的動(dòng)態(tài)執(zhí)行過程。當(dāng)B的動(dòng)態(tài)執(zhí)行過程結(jié)束,VTS不僅輸出B的IR執(zhí)行路徑,而且輸出IR語句、機(jī)器指令及源程序語句之間的對(duì)應(yīng)信息,據(jù)此能夠定位每一條源程序語句所對(duì)應(yīng)的機(jī)器指令組和IR語句組。圖2中示例為L(zhǎng)inux C語句“if()”對(duì)應(yīng)的機(jī)器指令組和IR語句組。

圖1 二進(jìn)制代碼安全缺陷分析原理

圖2 if(t)對(duì)應(yīng)的機(jī)器指令組及IR語句組

步驟4 構(gòu)建校驗(yàn)樣本集合。首先收集候選校驗(yàn)樣本,建立候選校驗(yàn)樣本集合。對(duì)任意一個(gè)IR代碼組,若其滿足如下條件:①不是缺陷IR代碼;②中IR語句與中IR語句一一對(duì)應(yīng),且每一對(duì)對(duì)應(yīng)的IR語句之間都具有匹配關(guān)系。則選擇作為候選校驗(yàn)樣本,把放入候選校驗(yàn)樣本集合。然后選擇的一個(gè)子集,使以下條件成立:①對(duì)任意IR代碼組λ,λ∈,λλ不匹配;②對(duì)任意IR代碼組λ∈,存在IR代碼組λ∈,滿足:λ?λ。稱為校驗(yàn)樣本集合,其中IR代碼組稱為校驗(yàn)樣本。

步驟5 構(gòu)建特征元素集合。以IR代碼元素集合和校驗(yàn)樣本集合為輸入,執(zhí)行特征元素集合生成算法,得到集合,其中元素描述了缺陷IR代碼的關(guān)鍵特征,稱為特征元素。

算法1 特征元素集合生成算法Characterisic- ElementSetGenerate

輸入 IR代碼元素集合,校驗(yàn)樣本集合

輸出 特征元素集合

1)←

2) for each (u,,u)∈do

3) if PreOpt ((u,,u),,)==False then

4) RelationVectorOpt ((u,,u),,)

5) for each (u,,u)∈do

6) if FurOpt ((u,,u),,)==False then

7) RelationVectorOpt ((u,,u),,)

8) foreach (u,,u)∈do

9) if ER ((u,,u),,)==False then

10) RelationVectorOpt ((u,,u),,)

11) return

算法1中各函數(shù)分別執(zhí)行不同的檢測(cè)過程,下面分別闡述。

1) 函數(shù)PreOpt((u,,u),,)檢測(cè)向量中語句關(guān)系。若包含數(shù)據(jù)共享關(guān)系,則返回True。否則,返回函數(shù)ElementRedundancy ((u,,u),,)。

2) 函數(shù)FurOpt ((u,,u),,)在向量中查找數(shù)據(jù)依賴關(guān)系。若中包含數(shù)據(jù)依賴關(guān)系,則返回True。否則,返回函數(shù)ER ((u,,u),,)。

3) 函數(shù)ER((u,,u),,)去除中(u,,u),并調(diào)用SampleMatching(,),若其返回True,則把(u,,u)加入集合,返回False。否則,返回True。

4) 函數(shù)RelationVectorOpt((u,,u),,)檢測(cè)向量中冗余的語句關(guān)系,過程如下。

①查找中未檢測(cè)的語句關(guān)系。若中不存在未檢測(cè)的語句關(guān)系,則檢測(cè)過程結(jié)束。否則,從中去除任意一項(xiàng)未檢測(cè)的語句關(guān)系,設(shè)其為r。然后調(diào)用函數(shù)SampleMatching(,)。

②若函數(shù)SampleMatching返回True,則把r加入,并標(biāo)記其為已檢測(cè)。執(zhí)行步驟①。

5) 函數(shù)SampleMatching(,)基于中校驗(yàn)樣本檢測(cè)集合。若存在校驗(yàn)樣本∈,的語句與的語句之間具有一種一一對(duì)應(yīng)關(guān)系,成立如下條件。

②對(duì)任意IR代碼元素(u,,u)∈,若其中uu分別與的語句u、u對(duì)應(yīng),則uu之間具有向量中全部關(guān)系。

則函數(shù)返回True。否則,函數(shù)返回False。

步驟6 生成二進(jìn)制代碼安全缺陷的分析模型。首先劃分集合中元素,主要過程為:①把集合中不包含于任意一條IR執(zhí)行路徑的元素放入集合1;②把集合中不包含于1的元素分別放入集合1~L,使L(1≤≤)中元素包含于同一條IR執(zhí)行路徑;③把集合1~L分別作為元素加入集合2,得到2={1,…,L}。1~L及1稱為的路徑子集。

然后以集合序偶<1,2>為輸入,執(zhí)行分析模型生成算法,得到分析模型<1,2>,1中元素D(1≤≤)稱為路徑單元,2稱為組合單元,2和D中元素稱為模型元素。

算法2 分析模型生成算法AnalysisModel- Generate

輸入 集合序偶<1,2>

輸出 分析模型<1,2>

2) foreachL∈2do

4) foreach ((u,,u)∈Ldo

7)1←1∪{D}

8) foreach (u,,u)∈1do

11) return <1,2>

算法2中,函數(shù)Transform(u,,u)以字符串標(biāo)記IR語句uu的關(guān)鍵信息,并把各字符串分別組成向量η=(o,a1,···,a)、η=(o,a1,···,a)。η、η稱為語句項(xiàng),其中字符串o、o分別標(biāo)記了u、u的語句類型,稱為語句類型字符串,字符串a(1≤≤)、a(1≤≤)分別標(biāo)記了uu中單項(xiàng)數(shù)據(jù)的類型及位置等數(shù)據(jù)信息,稱為數(shù)據(jù)字符串。該函數(shù)返回以語句項(xiàng)η、η及關(guān)系向量構(gòu)成的模型元素(η,,η)。

若類型二進(jìn)制代碼安全缺陷具有多種分析模型,則每一種分析模型的構(gòu)建過程都需要經(jīng)過上述步驟。上述建模過程在兩個(gè)層次上對(duì)二進(jìn)制代碼安全缺陷的結(jié)構(gòu)進(jìn)行分析:不僅在程序語句的層次把其結(jié)構(gòu)分解為模型元素集合,而且在程序執(zhí)行路徑的層次把其結(jié)構(gòu)分解為路徑單元和組合單元。這使分析模型完整包含了二進(jìn)制代碼安全缺陷的結(jié)構(gòu)特征信息,不僅其包含的(≥1)個(gè)路徑單元可以準(zhǔn)確地描述二進(jìn)制代碼安全缺陷的個(gè)不同組成部分,并且其包含的組合單元給出了該個(gè)組成部分應(yīng)滿足的必要條件。因此,分析模型能夠?yàn)闇?zhǔn)確地檢測(cè)二進(jìn)制程序中代碼安全缺陷提供充分支持及有效的判定標(biāo)準(zhǔn)。

3 模型應(yīng)用

應(yīng)用分析模型可以實(shí)現(xiàn)對(duì)二進(jìn)制代碼安全缺陷的有效檢測(cè),分析模型的應(yīng)用原理如下。

1) 依據(jù)分析模型中信息建立二進(jìn)制代碼安全缺陷的判定標(biāo)準(zhǔn)。以分析模型包含的(≥1)個(gè)路徑單元分別作為二進(jìn)制代碼安全缺陷中個(gè)不同組成部分的識(shí)別標(biāo)準(zhǔn),并把分析模型中組合單元作為該個(gè)組成部分之間的匹配標(biāo)準(zhǔn),由項(xiàng)識(shí)別標(biāo)準(zhǔn)與1項(xiàng)匹配標(biāo)準(zhǔn)共同構(gòu)成二進(jìn)制代碼安全缺陷的判定標(biāo)準(zhǔn)。

2) 基于判定標(biāo)準(zhǔn)把檢測(cè)內(nèi)容劃分為項(xiàng)查找任務(wù)和1項(xiàng)組合任務(wù)。其中項(xiàng)查找任務(wù)分別在被測(cè)試程序代碼中查找滿足不同識(shí)別標(biāo)準(zhǔn)的代碼組,組合任務(wù)是在查找得到的代碼組中選出滿足匹配標(biāo)準(zhǔn)的×(≥1)個(gè)代碼組,并把它們組成個(gè)二進(jìn)制代碼安全缺陷。

3) 依據(jù)各路徑單元分別描述的結(jié)構(gòu)特征確定檢測(cè)過程中各項(xiàng)任務(wù)的執(zhí)行次序,從而使檢測(cè)過程具有最高的效率。

依據(jù)上述原理把分析模型應(yīng)用于二進(jìn)制代碼安全缺陷的檢測(cè)過程,得到分析模型的應(yīng)用方法,其簡(jiǎn)稱為模型應(yīng)用方法。該方法依據(jù)分析模型中結(jié)構(gòu)特征信息實(shí)施對(duì)二進(jìn)制代碼安全缺陷的有效檢測(cè)。下面給出該方法的主要內(nèi)容。基于分析模型,定義以下若干關(guān)系。

定義6 (語句項(xiàng)與IR語句的匹配)設(shè)η、u分別為語句項(xiàng)及IR語句。對(duì)η中任意字符串a,記為aη。若u中數(shù)據(jù)的信息與字符串a標(biāo)記的數(shù)據(jù)信息相一致,則稱符合a。若ηu之間成立以下條件:①η中字符串標(biāo)記的語句類型和u的語句類型相同;②對(duì)于任意數(shù)據(jù)字符串aη,存在數(shù)據(jù)∈u,符合a。則稱uη的像,并稱ηu匹配,記為ηu

定義8(路徑單元相關(guān))設(shè)<1,2>是代碼安全缺陷特征模型,DD是1中2個(gè)路徑單元。若成立如下任意一項(xiàng)條件:

則稱路徑單元DD相關(guān),記為DD。若條件①成立,則語句項(xiàng)η稱為DD的相關(guān)語句項(xiàng)。若條件②成立,則模型元素(η,,η)稱為DD的相關(guān)元素。

定義9(路徑單元與IR代碼組的相關(guān)匹配)設(shè)DD,DλDλ,λλ為不同的IR代碼組。若成立以下條件:

①若DD具有相關(guān)語句項(xiàng)η,則存在λλ的共同語句u,滿足:η?u

則稱路徑單元D、D與IR代碼組λλ相關(guān)匹配。

基于上述關(guān)系,下面給出對(duì)任意類型二進(jìn)制代碼安全缺陷的5個(gè)主要檢測(cè)步驟。

步驟1 建立分析模型。全面選擇各種不同結(jié)構(gòu)的類型缺陷源代碼,然后應(yīng)用它們分別建立分析模型。設(shè)共得到(≥1)種類型二進(jìn)制代碼安全缺陷的分析模型。

步驟2 建立分析模型的權(quán)重集合。主要過程如下。

①度量各種類型IR語句的相對(duì)比率。首先,隨機(jī)選擇個(gè)具有類型代碼安全缺陷的有代表性的二進(jìn)制程序,應(yīng)用VTS獲取它們各自次不同執(zhí)行過程產(chǎn)生的IR執(zhí)行路徑:1,···,q。然后,分別統(tǒng)計(jì)1~q中不同類型IR語句所占的比率。該步驟中和的取值與特征模型的復(fù)雜度成正相關(guān)。

步驟3 獲取被測(cè)試二進(jìn)制程序的IR執(zhí)行路徑集合。首先根據(jù)被測(cè)試程序的類型和功能,生成測(cè)試數(shù)據(jù)集作為程序輸入。然后應(yīng)用VTS監(jiān)控該二進(jìn)制程序的不同動(dòng)態(tài)執(zhí)行過程,獲得IR執(zhí)行路徑集合。

步驟4 缺陷IR代碼檢測(cè)。分別輸入種分析模型,應(yīng)用缺陷IR代碼檢測(cè)算法,在集合包含的IR執(zhí)行路徑中檢測(cè)類型缺陷IR代碼,如算法3所示。

算法3 缺陷IR代碼檢測(cè)算法FlawIRCode- Detection

輸入 分析模型<1,2>及其權(quán)重集合,IR執(zhí)行路徑集合

輸出 缺陷IR代碼集合

4)2

5) for eachD∈1do

9) return

10)22∪{D}

11)12-{D}

12)12

13) else

15) return

16) for each (η,,η)∈2do

18) return

算法3中應(yīng)用了多個(gè)函數(shù),分別闡述各函數(shù)的功能如下。

1) 函數(shù)CorrelationUnit(D,1,2)在集合1中查找與D相關(guān)的路徑單元,依據(jù)查找結(jié)果生成識(shí)別條件。該函數(shù)返回識(shí)別條件集合。

2) 函數(shù)SI(,D,,,)遍歷集合中執(zhí)行路徑查找路徑單元D的像,以中識(shí)別條件對(duì)D的像進(jìn)行有效性驗(yàn)證,并根據(jù)有效的驗(yàn)證結(jié)果更新集合和。對(duì)于查找得到的任意一個(gè)D的像λ,若λ滿足中所有識(shí)別條件,則把λ放入D的像集G∈,并把驗(yàn)證過程得到的各條相關(guān)匹配信息加入集合。該函數(shù)最后返回G。

3) 函數(shù)MW(,1,,1,,)首先基于集合中權(quán)重信息選擇1中權(quán)重最大的路徑單元。設(shè)得到1中權(quán)重最大的路徑單元D。然后遍歷中IR執(zhí)行路徑查找D的像,把查找得到的各IR代碼組放入D的像集G。若檢測(cè)結(jié)束后G不為空集,則把D、G分別放入集合1、,并從1中去除D。該函數(shù)最后返回集合G。

5) 函數(shù)GenerateInstance(,)基于集合中的信息,把中各集合包含的IR代碼組組合為缺陷IR代碼。若中集合不包含缺陷IR代碼,則該函數(shù)返回空集。否則,該函數(shù)返回集合={1,···,ξ},其中ξ(1≤≤)為檢測(cè)得到的一個(gè)類型缺陷IR代碼。

步驟5 獲取類型缺陷二進(jìn)制代碼?;诩现腥毕軮R代碼,應(yīng)用VTS輸出的IR語句與機(jī)器指令之間的對(duì)應(yīng)信息,查找出被測(cè)試二進(jìn)制程序中個(gè)類型缺陷二進(jìn)制代碼,它們構(gòu)成了該程序中個(gè)類型代碼安全缺陷。

基于以上檢測(cè)過程可知,上述模型應(yīng)用方法具有如下功能和優(yōu)點(diǎn):①對(duì)任意類型代碼安全缺陷的檢測(cè)功能;②對(duì)結(jié)構(gòu)復(fù)雜的代碼安全缺陷的檢測(cè)功能;③能夠準(zhǔn)確地識(shí)別代碼安全缺陷,從而有效地避免檢測(cè)結(jié)果的誤報(bào)和漏報(bào);④檢測(cè)過程無需觸發(fā)二進(jìn)制代碼安全缺陷。

4 實(shí)驗(yàn)驗(yàn)證

實(shí)驗(yàn)?zāi)康臑轵?yàn)證二進(jìn)制代碼安全缺陷分析模型的實(shí)用性和有效性。為此,實(shí)驗(yàn)中對(duì)模型應(yīng)用方法進(jìn)行驗(yàn)證,實(shí)驗(yàn)內(nèi)容包括:①方法的功能和優(yōu)點(diǎn)驗(yàn)證;②方法的有效性驗(yàn)證。根據(jù)該方法實(shí)施的檢測(cè)過程可知,上述實(shí)驗(yàn)內(nèi)容能夠準(zhǔn)確地驗(yàn)證分析模型的實(shí)用性和有效性。

實(shí)驗(yàn)中被測(cè)試代碼安全缺陷的選擇標(biāo)準(zhǔn)如下:①其類型具有代表性,該類型的代碼安全缺陷廣泛存在于各類軟件系統(tǒng)及二進(jìn)制程序,且目前對(duì)其尚無有效的檢測(cè)方法;②具有復(fù)雜的結(jié)構(gòu);③具有較大的識(shí)別難度;④具有較大的檢測(cè)難度;⑤包含于結(jié)構(gòu)較復(fù)雜的二進(jìn)制程序。

基于以上選擇標(biāo)準(zhǔn),實(shí)驗(yàn)中選擇二進(jìn)制多線程程序中競(jìng)爭(zhēng)條件(race condition)類型代碼安全缺陷作為檢測(cè)對(duì)象?;鶞?zhǔn)測(cè)試程序如表1所示,B1~B3分別以算法1~3作為線程同步算法,其中算法1、2能夠產(chǎn)生競(jìng)爭(zhēng)條件。算法1~3是語義較復(fù)雜、有代表性的同步算法。Holzmann在其被引用4 680多次的論文“The Model Checker SPIN”[13]中給出算法1、2,其中算法2是對(duì)算法1的修正算法。Bang等在論文“Comments on ‘The Model Checker SPIN’”[14]中以實(shí)時(shí)進(jìn)程代數(shù)ACSR[15]檢測(cè)出算法2并未消除競(jìng)爭(zhēng)條件,于是給出算法1的正確修正算法——算法3。

表1 基準(zhǔn)測(cè)試程序

通過對(duì)B1~B3的測(cè)試,不僅可以有效地驗(yàn)證模型應(yīng)用方法的功能和優(yōu)點(diǎn),而且能夠準(zhǔn)確地驗(yàn)證該方法的有效性,依據(jù)如下:①算法1~3是語義較復(fù)雜的同步算法,使B1~B3的二進(jìn)制代碼結(jié)構(gòu)較復(fù)雜,具有較大的檢測(cè)難度;②B1、B2中競(jìng)爭(zhēng)條件類型代碼安全缺陷包含復(fù)雜的代碼結(jié)構(gòu),使它們具有較大的識(shí)別難度和檢測(cè)難度;③B1~B3的代碼結(jié)構(gòu)相似,使B3中存在多個(gè)二進(jìn)制代碼組與B1、B2中缺陷二進(jìn)制代碼具有相似的代碼結(jié)構(gòu),所以B3中這些代碼組能夠有效地檢驗(yàn)?zāi)P蛻?yīng)用方法對(duì)代碼安全缺陷識(shí)別能力,從而驗(yàn)證該方法是否能夠有效地避免檢測(cè)結(jié)果的誤報(bào)和漏報(bào);④B1~B3的動(dòng)態(tài)執(zhí)行過程被實(shí)時(shí)監(jiān)控,若產(chǎn)生競(jìng)爭(zhēng)條件可以被及時(shí)發(fā)現(xiàn)和記錄。

實(shí)驗(yàn)中,計(jì)算機(jī)硬件配置為Intel Core 2 Duo (CPU 2.4 GHz)、2 GB內(nèi)存及4 MB二級(jí)緩存,操作系統(tǒng)為Ubuntu Linux 14.04 (4.4 HWE kernel),處理器架構(gòu)為 X86/Linux。程序分析工具VTS中Valgrind版本為3.12.0。Linux C源代碼應(yīng)用GCC 5.3編譯為二進(jìn)制程序。

4.1 方法功能和優(yōu)點(diǎn)驗(yàn)證

首先以模型應(yīng)用方法測(cè)試B1~B3中競(jìng)爭(zhēng)條件類型代碼安全缺陷。測(cè)試結(jié)果如下:B1和B2中分別存在競(jìng)爭(zhēng)條件類型代碼安全缺陷1、2,如表2、表3所示。根據(jù)B1~B3的動(dòng)態(tài)執(zhí)行過程可知,該測(cè)試過程沒有使B1~B3中線程之間產(chǎn)生競(jìng)爭(zhēng)條件。

表2 χ1中機(jī)器指令

表3 χ2中機(jī)器指令

然后以文獻(xiàn)[13,14]中的正確結(jié)論與上述測(cè)試結(jié)果進(jìn)行對(duì)比分析,得到模型應(yīng)用方法的測(cè)試結(jié)果完全正確,不存在誤報(bào)和漏報(bào)。因此,該方法的功能和優(yōu)點(diǎn)得到全面驗(yàn)證。

4.2 方法有效性驗(yàn)證

Helgrind[16]和DRD[17]是兩款檢測(cè)線程同步錯(cuò)誤的成熟工具,能夠有效地檢測(cè)出多種類型的線程同步錯(cuò)誤。由于Helgrind和DRD分別應(yīng)用了國(guó)際上現(xiàn)有的多種實(shí)用檢測(cè)方法,所以根據(jù)它們對(duì)B1~B3的檢測(cè)結(jié)果可以準(zhǔn)確地評(píng)估模型應(yīng)用方法的有效性。

實(shí)驗(yàn)中以2017年6月最新發(fā)布的Helgrind和DRD對(duì)B1~B3檢測(cè),它們?cè)谕瓿蓹z測(cè)后分別給出對(duì)多個(gè)數(shù)據(jù)變量的警告。其中Helgrind對(duì)B1中r_want的警告如圖3所示,DRD對(duì)B3中state(0x0804a048)的警告如圖4所示。經(jīng)過檢驗(yàn),Helgrind和DRD的檢測(cè)結(jié)果均漏報(bào)了B1和B2中競(jìng)爭(zhēng)條件類型代碼安全缺陷,且它們給出的各條警告均為誤報(bào)。根據(jù)Helgrind和DRD的檢測(cè)結(jié)果可以得到評(píng)估結(jié)論:相比較國(guó)際上現(xiàn)有檢測(cè)方法,模型應(yīng)用方法可以有效地應(yīng)用于二進(jìn)制并行程序,能夠檢測(cè)出現(xiàn)有方法難以發(fā)現(xiàn)的結(jié)構(gòu)復(fù)雜的代碼安全缺陷,具有更加全面和深入的檢測(cè)能力,并且其檢測(cè)結(jié)果具有更高的準(zhǔn)確率。由此模型應(yīng)用方法的有效性得到驗(yàn)證。

圖3 Helgrind對(duì)B1中“r_want”的警告

圖4 DRD對(duì)B3中“state”的警告

基于以上兩項(xiàng)實(shí)驗(yàn)內(nèi)容的結(jié)論可知,分析模型可以應(yīng)用于任意類型二進(jìn)制程序的代碼安全缺陷檢測(cè)過程,其包含的信息可以為識(shí)別與檢測(cè)二進(jìn)制代碼安全缺陷提供充分的支持及有效的判定標(biāo)準(zhǔn),使任意類型結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷能夠被準(zhǔn)確和高效地檢測(cè)出來。所以二進(jìn)制代碼安全缺陷分析模型的實(shí)用性和有效性得到驗(yàn)證。

5 結(jié)束語

為實(shí)現(xiàn)對(duì)結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷的有效檢測(cè),本文給出對(duì)二進(jìn)制代碼安全缺陷的分析原理,提出二進(jìn)制代碼安全缺陷的分析模型,并依據(jù)分析模型的應(yīng)用原理,給出分析模型的應(yīng)用方法。首先提取缺陷IR代碼的關(guān)鍵特征,抽象其中結(jié)構(gòu)信息,生成二進(jìn)制代碼安全缺陷的分析模型。然后用工具VTS獲取二進(jìn)制程序的IR執(zhí)行路徑集合,基于各類語句的統(tǒng)計(jì)概率計(jì)算路徑單元的權(quán)重,依據(jù)缺陷IR代碼檢測(cè)算法遍歷IR執(zhí)行路徑,查找滿足特征模型的IR代碼組,并通過IR代碼與二進(jìn)制代碼的轉(zhuǎn)換信息,檢測(cè)出二進(jìn)制程序中代碼安全缺陷。

實(shí)驗(yàn)結(jié)果表明,分析模型兼具實(shí)用性和有效性,應(yīng)用分析模型可以檢測(cè)出現(xiàn)有方法難以發(fā)現(xiàn)的各類結(jié)構(gòu)復(fù)雜的二進(jìn)制代碼安全缺陷,分析模型的應(yīng)用方法無需源代碼,能夠直接檢測(cè)二進(jìn)制應(yīng)用程序,極大提高了檢測(cè)結(jié)果準(zhǔn)確率,具有簡(jiǎn)單、方便的優(yōu)點(diǎn)。分析模型可以應(yīng)用于軟件開發(fā)維護(hù)、漏洞挖掘與利用及程序分析與測(cè)試等多種領(lǐng)域。同時(shí),分析模型能夠有效地應(yīng)用于現(xiàn)有方法難以檢測(cè)的二進(jìn)制并行程序,所以隨著網(wǎng)絡(luò)和并行系統(tǒng)的發(fā)展,其具有廣泛的應(yīng)用前景。

[1] LANDWEHR C E, BULL A R, MCDERMOTT J P, et al. A taxonomy of computer program security flaws[J]. Computing Surveys , 1994, 26(3): 211-254.

[2] WEBER S, KARGER P A, PARADKAR A. A software flaw taxonomy: aiming tools at security[C]//The Workshop on Software Engineering for Secure Systems—Building Trustworthy Applications. 2005: 1-7.

[3] HUI Z, HUANG S, REN Z, et al. Review of software security defects taxonomy[C]//The 5th International Conference on Rough Set and Knowledge Technology, Lecture Notes in Computer Science. 2010: 310-321.

[4] ZHANG B, FENG C, WU B, et al. Detecting integer overflow in windows binary executables based on symbolic execution[C]//The 17th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing. 2016:385-390.

[5] SIDIROGLOU-DOUSKOS S, LAHTINEN ERIC, RITTENHOUSE N, et al. Targeted automatic integer overflow discovery using goal-directed conditional branch enforcement[C]//The Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems.2015: 473-486.

[6] YADEGARI B, STEPHENS J, DEBRAY S. Analysis of exception-based control transfers[C]//The Seventh ACM on Conference on Data and Application Security and Privacy.2017: 205-216.

[7] MING J, WU D, WANG J, et al. StraightTaint: decoupled offline symbolic taint analysis[C]//The 31st IEEE/ACM International Conference on Automated Software Engineering.2016: 308-319.

[8] CHA S K, WOO M, BRUMLEY D. Program-adaptive mutational fuzzing[C]//The IEEE Symposium on Security and Privacy.2015: 725-741.

[9] PHAM V, B?HME M, ROYCHOUDHURY A. Model-based whitebox fuzzing for program binaries[C]//The 31st IEEE/ACM International Conference on Automated Software Engineering. 2016: 543-553.

[10] The valgrind developers[EB/OL]. http://valgrind.org.

[11] NETHERCOTE N, SEWARD J. Valgrind: a framework for heavyweight dynamic binary instrumentation[J]. ACM SIGPLAN Notices, 2007, 42(6):89-100.

[12] [EB/OL]. https://github.com/wmkhoo/taintgrind.

[13] HOLZMANN G J. The model checker SPIN[J]. IEEE Transactions on Software Engineering, 1997, 23(5): 279-295.

[14] BANG K, CHOI J, YOO C. Comments on “the model checker SPIN”[J]. IEEE Transactions on Software Engineering, 2001,27(6): 573-576.

[15] BRéMOND-GRéGOIRE P, CHOI J, LEE I. A complete axiomatization of finite-state ACSR processes[J]. Information and Computation, 1997,138 (2): 124-159.

[16] The valgrind developers.[EB/OL]. http://valgrind.org/docs/manual/ hg-manual.html.

[17] The valgrind developers[EB/OL]. http://valgrind.org/docs/manual/ drd-manual.html.

Analysis model of binary code security flaws based on structure characteristics

XU Tuan, QU Lei-lei, SHI Wen-chang

(School of Information, Renmin University of China, Beijing 100872, China)

Aiming at the shortcomings of the existing methods to detect the security flaws that have complex structures, a new analysis model and its application method was proposed. First, analysis models based on key information of code structures extracted from path subsets of characteristic element sets that are generated by source code element sets of code security flaws were constructed. Then the analysis model according to the statistical probability of each kind of IR statement was calculated, and the IR code group which matched the feature model was found. Finally, through the translating relation between binary codes and IR codes, various code security flaws of binary program were found out. The analysis models can be applied to both common single-process binary programs and binary parallel programs. Experimental results show that compared with the existing methods, the application of the analysis model can be more comprehensive and in-depth in detecting various types of complex binary code security flaws with higher accuracy.

binary analysis, analysis model, software security detection, flaw code recognition

TP309.5

A

10.11959/j.issn.2096-109x.2017.00200

2017-07-24;

2017-08-13。

屈蕾蕾,daisyqvruc@163.com

國(guó)家自然科學(xué)基金資助項(xiàng)目(No.61472429);北京市自然科學(xué)基金資助項(xiàng)目(No.4122041)

The National Natural Science Foundation of China (No.61472429), The Natural Science Foundation of Beijing (No.4122041)

許團(tuán)(1973-),男,黑龍江鶴崗人,中國(guó)人民大學(xué)博士生,主要研究方向?yàn)樾畔踩?/p>

屈蕾蕾(1995-),女,新疆烏魯木齊人,中國(guó)人民大學(xué)博士生,主要研究方向?yàn)榭尚庞?jì)算、云安全。

石文昌(1964-),男,廣西浦北人,中國(guó)人民大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)橄到y(tǒng)安全、可信計(jì)算與數(shù)字取證。

猜你喜歡
分析模型二進(jìn)制語句
基于BERT-VGG16的多模態(tài)情感分析模型
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
重點(diǎn):語句銜接
有趣的進(jìn)度
二進(jìn)制在競(jìng)賽題中的應(yīng)用
精彩語句
層次分析模型在結(jié)核疾病預(yù)防控制系統(tǒng)中的應(yīng)用
全啟發(fā)式語言分析模型
如何搞定語句銜接題
IFC4結(jié)構(gòu)分析模型應(yīng)用技術(shù)
紫阳县| 博湖县| 友谊县| 通许县| 广饶县| 启东市| 吕梁市| 剑河县| 长宁区| 葵青区| 津南区| 湘潭县| 马尔康县| 阿拉善右旗| 山阴县| 浠水县| 宜良县| 内丘县| 台南县| 密云县| 怀柔区| 沧源| 合江县| 洪江市| 郧西县| 分宜县| 图们市| 临江市| 巨鹿县| 平远县| 莱芜市| 清原| 高密市| 普洱| 海丰县| 微博| 临沂市| 合水县| 兴国县| 花垣县| 项城市|