許團,屈蕾蕾,石文昌
?
基于結構特征的二進制代碼安全缺陷分析模型
許團,屈蕾蕾,石文昌
(中國人民大學信息學院,北京 100872)
針對現有方法檢測復雜結構二進制代碼安全缺陷的不足,提出新的分析模型,并給出其應用方法。首先以缺陷的源代碼元素集合生成特征元素集合,抽取代碼結構信息,構建分析模型。然后依據各類中間表示(IR, intermediate representation)語句的統計概率計算分析模型,查找滿足特征模型的IR代碼組,通過IR代碼與二進制代碼的轉換關系,實現對二進制程序中代碼安全缺陷的有效檢測。分析模型可應用于二進制單線程程序和并行程序。實驗結果表明,相對于現有方法,應用該分析模型能夠更全面深入地檢測出各類結構復雜的二進制代碼安全缺陷,且準確率更高。
二進制分析;分析模型;軟件安全缺陷檢測;缺陷代碼識別
二進制程序中的安全缺陷是危害軟件系統的安全性和可靠性的重要原因,目前二進制程序的安全性檢測成為研究熱點。根據有代表性的研究成果[1~3]可知,多數類型的軟件安全缺陷是在程序代碼的實現過程中產生。本文把程序代碼實現過程中產生的各種類型軟件安全缺陷稱為代碼安全缺陷,并把二進制程序中代碼安全缺陷稱為二進制代碼安全缺陷。
近年來,各種結構復雜的二進制代碼安全缺陷日益繁多。例如,后門、競爭條件及鑒權繞過等邏輯錯誤類型的代碼安全缺陷。它們不僅存在于二進制單線程程序,而且分布于各種二進制并行程序。而符號執行[4,5]、污點分析[6,7]及模糊測試[8,9]等現有方法難以發現結構復雜的代碼安全缺陷,也不能有效地應用于二進制并行程序,使軟件系統面臨安全性風險。分析現有方法的檢測過程可知,這些方法均未深入解析二進制代碼安全缺陷代碼結構,不能有效地識別其結構特征,從而產生上述不足。
本文提出對二進制代碼安全缺陷的分析模型。應用該模型,可以有效地解決現有方法的不足。本文創新點如下。
1) 給出對二進制代碼安全缺陷的分析原理,基于該分析原理提出二進制代碼安全缺陷分析模型的構建方法。該方法首先基于代碼安全缺陷的源代碼元素集合構建中間表示代碼元素集合,以校驗樣本測試IR代碼元素集合,獲取缺陷IR代碼的關鍵特征,建立特征元素集合。然后以IR語句的執行關系劃分特征元素集合,并提取特征元素包含的結構信息生成分析模型。分析模型完整包含了代碼安全缺陷的結構特征信息,能夠為準確檢測二進制程序中各類代碼安全缺陷提供充分的支持及有效的判定標準。
2) 給出對二進制代碼安全缺陷分析模型的應用原理,基于該應用原理提出分析模型的應用方法,依據分析模型中結構特征信息實施對二進制程序中代碼安全缺陷的有效檢測。首先基于IR語句的統計概率計算分析模型中各路徑單元的權重,利用工具VTS獲取二進制程序的IR執行路徑集合。然后在IR執行路徑中檢測滿足分析模型的IR代碼組,并通過IR語句與機器指令之間的對應信息,檢測出被測試二進制程序中代碼安全缺陷。該方法既能夠準確地查找出現有方法難以發現的各類結構復雜的二進制代碼安全缺陷,也可以有效地應用于現有方法難以檢測的二進制并行程序,并且其檢測過程無需觸發代碼安全缺陷,能夠有效地避免檢測結果的誤報和漏報。
為了闡述二進制代碼安全缺陷分析模型的構建方法,有必要給出以下若干定義。
定義1(程序執行路徑)在二進制程序B的一次執行過程中,每一個線程執行的機器指令序列都稱為一條指令序列。對B執行過程產生的任意一條指令序列,若移除其中不包含于B的機器指令,則得到的機器指令序列稱為B的一條指令執行路徑。若程序分析工具把B的一條指令執行路徑轉換為一條IR語句序列,則該IR語句序列稱為B的一條IR執行路徑。IR執行路徑與指令執行路徑統稱為程序執行路徑。
定義2(代碼組)任意一個源程序P中語義相關的(≥1)個代碼段構成一個源代碼組。在P編譯為二進制程序B的過程中,若P中一個源代碼組編譯生成(≥1)個機器指令段,則該個機器指令段構成一個二進制代碼組,稱為的機器碼,稱為的源碼。當程序分析工具把B的指令執行路徑轉換為IR執行路徑時,若包含的機器指令被轉換為個IR語句段,則該個IR語句段構成一個IR代碼組,稱為和的IR碼,稱為的源碼,稱為的機器碼。源代碼組、二進制代碼組及IR代碼組統稱為代碼組。
定義3(缺陷IR代碼)若類型軟件安全的缺陷是在程序代碼的實現過程中產生,則稱其為類型代碼安全缺陷。若源程序中一個類型代碼安全缺陷包含(≥1)個代碼段,則該個代碼段構成的一個源代碼組,稱為類型缺陷源代碼,并稱的機器碼及IR碼分別為類型缺陷二進制代碼及類型缺陷IR代碼。
定義4(IR語句的匹配)設為一條程序語句,對中任意一項數據,稱為的數據,記為∈。設u、u為兩條IR語句,若它們之間滿足以下條件:①u和u的語句類型相同;②對任意數據d∈u,存在數據d∈u,u中d的位置與u中d的位置相同,且d與d具有相同的類型。則稱u與u匹配,記為u?u。

基于上述概念可知,缺陷源代碼、缺陷二進制代碼及缺陷IR代碼都是代碼安全缺陷的具體存在形式,它們之間可以相互轉換,對它們的代碼結構進行有效的分析,是檢測代碼安全缺陷的基礎和前提。本文對二進制代碼安全缺陷的分析原理如圖1所示。
首先把缺陷源代碼轉換為缺陷IR代碼,基于校驗樣本提取出其代碼特征。其次利用程序語句之間的執行關系,劃分代碼特征的組成部分。然后對各組成部分進行形式化抽象,獲取其中代碼結構的完整信息。由于IR語句與機器指令之間一一對應,且語義相同,所以上述過程獲取的結構特征信息準確地描述了二進制代碼安全缺陷的具體存在形式,能夠作為檢測二進制程序中代碼安全缺陷的有效依據。
根據上述原理,給出構建任意類型二進制代碼安全缺陷的分析模型的6個主要步驟。

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

圖1 二進制代碼安全缺陷分析原理

圖2 if(t)對應的機器指令組及IR語句組

步驟4 構建校驗樣本集合。首先收集候選校驗樣本,建立候選校驗樣本集合。對任意一個IR代碼組,若其滿足如下條件:①不是缺陷IR代碼;②中IR語句與中IR語句一一對應,且每一對對應的IR語句之間都具有匹配關系。則選擇作為候選校驗樣本,把放入候選校驗樣本集合。然后選擇的一個子集,使以下條件成立:①對任意IR代碼組λ,λ∈,λ與λ不匹配;②對任意IR代碼組λ∈,存在IR代碼組λ∈,滿足:λ?λ。稱為校驗樣本集合,其中IR代碼組稱為校驗樣本。
步驟5 構建特征元素集合。以IR代碼元素集合和校驗樣本集合為輸入,執行特征元素集合生成算法,得到集合,其中元素描述了缺陷IR代碼的關鍵特征,稱為特征元素。
算法1 特征元素集合生成算法Characterisic- ElementSetGenerate
輸入 IR代碼元素集合,校驗樣本集合
輸出 特征元素集合
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中各函數分別執行不同的檢測過程,下面分別闡述。
1) 函數PreOpt((u,,u),,)檢測向量中語句關系。若包含數據共享關系,則返回True。否則,返回函數ElementRedundancy ((u,,u),,)。
2) 函數FurOpt ((u,,u),,)在向量中查找數據依賴關系。若中包含數據依賴關系,則返回True。否則,返回函數ER ((u,,u),,)。
3) 函數ER((u,,u),,)去除中(u,,u),并調用SampleMatching(,),若其返回True,則把(u,,u)加入集合,返回False。否則,返回True。
4) 函數RelationVectorOpt((u,,u),,)檢測向量中冗余的語句關系,過程如下。
①查找中未檢測的語句關系。若中不存在未檢測的語句關系,則檢測過程結束。否則,從中去除任意一項未檢測的語句關系,設其為r。然后調用函數SampleMatching(,)。
②若函數SampleMatching返回True,則把r加入,并標記其為已檢測。執行步驟①。
5) 函數SampleMatching(,)基于中校驗樣本檢測集合。若存在校驗樣本∈,的語句與的語句之間具有一種一一對應關系,成立如下條件。

②對任意IR代碼元素(u,,u)∈,若其中uu分別與的語句u、u對應,則u與u之間具有向量中全部關系。
則函數返回True。否則,函數返回False。
步驟6 生成二進制代碼安全缺陷的分析模型。首先劃分集合中元素,主要過程為:①把集合中不包含于任意一條IR執行路徑的元素放入集合1;②把集合中不包含于1的元素分別放入集合1~L,使L(1≤≤)中元素包含于同一條IR執行路徑;③把集合1~L分別作為元素加入集合2,得到2={1,…,L}。1~L及1稱為的路徑子集。
然后以集合序偶<1,2>為輸入,執行分析模型生成算法,得到分析模型<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中,函數Transform(u,,u)以字符串標記IR語句u、u的關鍵信息,并把各字符串分別組成向量η=(o,a1,···,a)、η=(o,a1,···,a)。η、η稱為語句項,其中字符串o、o分別標記了u、u的語句類型,稱為語句類型字符串,字符串a(1≤≤)、a(1≤≤)分別標記了u、u中單項數據的類型及位置等數據信息,稱為數據字符串。該函數返回以語句項η、η及關系向量構成的模型元素(η,,η)。
若類型二進制代碼安全缺陷具有多種分析模型,則每一種分析模型的構建過程都需要經過上述步驟。上述建模過程在兩個層次上對二進制代碼安全缺陷的結構進行分析:不僅在程序語句的層次把其結構分解為模型元素集合,而且在程序執行路徑的層次把其結構分解為路徑單元和組合單元。這使分析模型完整包含了二進制代碼安全缺陷的結構特征信息,不僅其包含的(≥1)個路徑單元可以準確地描述二進制代碼安全缺陷的個不同組成部分,并且其包含的組合單元給出了該個組成部分應滿足的必要條件。因此,分析模型能夠為準確地檢測二進制程序中代碼安全缺陷提供充分支持及有效的判定標準。
應用分析模型可以實現對二進制代碼安全缺陷的有效檢測,分析模型的應用原理如下。
1) 依據分析模型中信息建立二進制代碼安全缺陷的判定標準。以分析模型包含的(≥1)個路徑單元分別作為二進制代碼安全缺陷中個不同組成部分的識別標準,并把分析模型中組合單元作為該個組成部分之間的匹配標準,由項識別標準與1項匹配標準共同構成二進制代碼安全缺陷的判定標準。
2) 基于判定標準把檢測內容劃分為項查找任務和1項組合任務。其中項查找任務分別在被測試程序代碼中查找滿足不同識別標準的代碼組,組合任務是在查找得到的代碼組中選出滿足匹配標準的×(≥1)個代碼組,并把它們組成個二進制代碼安全缺陷。
3) 依據各路徑單元分別描述的結構特征確定檢測過程中各項任務的執行次序,從而使檢測過程具有最高的效率。
依據上述原理把分析模型應用于二進制代碼安全缺陷的檢測過程,得到分析模型的應用方法,其簡稱為模型應用方法。該方法依據分析模型中結構特征信息實施對二進制代碼安全缺陷的有效檢測。下面給出該方法的主要內容。基于分析模型,定義以下若干關系。
定義6 (語句項與IR語句的匹配)設η、u分別為語句項及IR語句。對η中任意字符串a,記為a∈η。若u中數據的信息與字符串a標記的數據信息相一致,則稱符合a。若η與u之間成立以下條件:①η中字符串標記的語句類型和u的語句類型相同;②對于任意數據字符串a∈η,存在數據∈u,符合a。則稱u為η的像,并稱η與u匹配,記為ηu。

定義8(路徑單元相關)設<1,2>是代碼安全缺陷特征模型,D、D是1中2個路徑單元。若成立如下任意一項條件:


則稱路徑單元D與D相關,記為D∩D。若條件①成立,則語句項η稱為D與D的相關語句項。若條件②成立,則模型元素(η,,η)稱為D與D的相關元素。
定義9(路徑單元與IR代碼組的相關匹配)設D∩D,Dλ,Dλ,λ與λ為不同的IR代碼組。若成立以下條件:
①若D與D具有相關語句項η,則存在λ和λ的共同語句u,滿足:η?u;

則稱路徑單元D、D與IR代碼組λ、λ相關匹配。
基于上述關系,下面給出對任意類型二進制代碼安全缺陷的5個主要檢測步驟。
步驟1 建立分析模型。全面選擇各種不同結構的類型缺陷源代碼,然后應用它們分別建立分析模型。設共得到(≥1)種類型二進制代碼安全缺陷的分析模型。
步驟2 建立分析模型的權重集合。主要過程如下。
①度量各種類型IR語句的相對比率。首先,隨機選擇個具有類型代碼安全缺陷的有代表性的二進制程序,應用VTS獲取它們各自次不同執行過程產生的IR執行路徑:1,···,q。然后,分別統計1~q中不同類型IR語句所占的比率。該步驟中和的取值與特征模型的復雜度成正相關。

步驟3 獲取被測試二進制程序的IR執行路徑集合。首先根據被測試程序的類型和功能,生成測試數據集作為程序輸入。然后應用VTS監控該二進制程序的不同動態執行過程,獲得IR執行路徑集合。
步驟4 缺陷IR代碼檢測。分別輸入種分析模型,應用缺陷IR代碼檢測算法,在集合包含的IR執行路徑中檢測類型缺陷IR代碼,如算法3所示。
算法3 缺陷IR代碼檢測算法FlawIRCode- Detection
輸入 分析模型<1,2>及其權重集合,IR執行路徑集合
輸出 缺陷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中應用了多個函數,分別闡述各函數的功能如下。
1) 函數CorrelationUnit(D,1,2)在集合1中查找與D相關的路徑單元,依據查找結果生成識別條件。該函數返回識別條件集合。
2) 函數SI(,D,,,)遍歷集合中執行路徑查找路徑單元D的像,以中識別條件對D的像進行有效性驗證,并根據有效的驗證結果更新集合和。對于查找得到的任意一個D的像λ,若λ滿足中所有識別條件,則把λ放入D的像集G∈,并把驗證過程得到的各條相關匹配信息加入集合。該函數最后返回G。
3) 函數MW(,1,,1,,)首先基于集合中權重信息選擇1中權重最大的路徑單元。設得到1中權重最大的路徑單元D。然后遍歷中IR執行路徑查找D的像,把查找得到的各IR代碼組放入D的像集G。若檢測結束后G不為空集,則把D、G分別放入集合1、,并從1中去除D。該函數最后返回集合G。

5) 函數GenerateInstance(,)基于集合中的信息,把中各集合包含的IR代碼組組合為缺陷IR代碼。若中集合不包含缺陷IR代碼,則該函數返回空集。否則,該函數返回集合={1,···,ξ},其中ξ(1≤≤)為檢測得到的一個類型缺陷IR代碼。
步驟5 獲取類型缺陷二進制代碼。基于集合中缺陷IR代碼,應用VTS輸出的IR語句與機器指令之間的對應信息,查找出被測試二進制程序中個類型缺陷二進制代碼,它們構成了該程序中個類型代碼安全缺陷。
基于以上檢測過程可知,上述模型應用方法具有如下功能和優點:①對任意類型代碼安全缺陷的檢測功能;②對結構復雜的代碼安全缺陷的檢測功能;③能夠準確地識別代碼安全缺陷,從而有效地避免檢測結果的誤報和漏報;④檢測過程無需觸發二進制代碼安全缺陷。
實驗目的為驗證二進制代碼安全缺陷分析模型的實用性和有效性。為此,實驗中對模型應用方法進行驗證,實驗內容包括:①方法的功能和優點驗證;②方法的有效性驗證。根據該方法實施的檢測過程可知,上述實驗內容能夠準確地驗證分析模型的實用性和有效性。
實驗中被測試代碼安全缺陷的選擇標準如下:①其類型具有代表性,該類型的代碼安全缺陷廣泛存在于各類軟件系統及二進制程序,且目前對其尚無有效的檢測方法;②具有復雜的結構;③具有較大的識別難度;④具有較大的檢測難度;⑤包含于結構較復雜的二進制程序。
基于以上選擇標準,實驗中選擇二進制多線程程序中競爭條件(race condition)類型代碼安全缺陷作為檢測對象。基準測試程序如表1所示,B1~B3分別以算法1~3作為線程同步算法,其中算法1、2能夠產生競爭條件。算法1~3是語義較復雜、有代表性的同步算法。Holzmann在其被引用4 680多次的論文“The Model Checker SPIN”[13]中給出算法1、2,其中算法2是對算法1的修正算法。Bang等在論文“Comments on ‘The Model Checker SPIN’”[14]中以實時進程代數ACSR[15]檢測出算法2并未消除競爭條件,于是給出算法1的正確修正算法——算法3。

表1 基準測試程序
通過對B1~B3的測試,不僅可以有效地驗證模型應用方法的功能和優點,而且能夠準確地驗證該方法的有效性,依據如下:①算法1~3是語義較復雜的同步算法,使B1~B3的二進制代碼結構較復雜,具有較大的檢測難度;②B1、B2中競爭條件類型代碼安全缺陷包含復雜的代碼結構,使它們具有較大的識別難度和檢測難度;③B1~B3的代碼結構相似,使B3中存在多個二進制代碼組與B1、B2中缺陷二進制代碼具有相似的代碼結構,所以B3中這些代碼組能夠有效地檢驗模型應用方法對代碼安全缺陷識別能力,從而驗證該方法是否能夠有效地避免檢測結果的誤報和漏報;④B1~B3的動態執行過程被實時監控,若產生競爭條件可以被及時發現和記錄。
實驗中,計算機硬件配置為Intel Core 2 Duo (CPU 2.4 GHz)、2 GB內存及4 MB二級緩存,操作系統為Ubuntu Linux 14.04 (4.4 HWE kernel),處理器架構為 X86/Linux。程序分析工具VTS中Valgrind版本為3.12.0。Linux C源代碼應用GCC 5.3編譯為二進制程序。
首先以模型應用方法測試B1~B3中競爭條件類型代碼安全缺陷。測試結果如下:B1和B2中分別存在競爭條件類型代碼安全缺陷1、2,如表2、表3所示。根據B1~B3的動態執行過程可知,該測試過程沒有使B1~B3中線程之間產生競爭條件。

表2 χ1中機器指令

表3 χ2中機器指令
然后以文獻[13,14]中的正確結論與上述測試結果進行對比分析,得到模型應用方法的測試結果完全正確,不存在誤報和漏報。因此,該方法的功能和優點得到全面驗證。
Helgrind[16]和DRD[17]是兩款檢測線程同步錯誤的成熟工具,能夠有效地檢測出多種類型的線程同步錯誤。由于Helgrind和DRD分別應用了國際上現有的多種實用檢測方法,所以根據它們對B1~B3的檢測結果可以準確地評估模型應用方法的有效性。
實驗中以2017年6月最新發布的Helgrind和DRD對B1~B3檢測,它們在完成檢測后分別給出對多個數據變量的警告。其中Helgrind對B1中r_want的警告如圖3所示,DRD對B3中state(0x0804a048)的警告如圖4所示。經過檢驗,Helgrind和DRD的檢測結果均漏報了B1和B2中競爭條件類型代碼安全缺陷,且它們給出的各條警告均為誤報。根據Helgrind和DRD的檢測結果可以得到評估結論:相比較國際上現有檢測方法,模型應用方法可以有效地應用于二進制并行程序,能夠檢測出現有方法難以發現的結構復雜的代碼安全缺陷,具有更加全面和深入的檢測能力,并且其檢測結果具有更高的準確率。由此模型應用方法的有效性得到驗證。

圖3 Helgrind對B1中“r_want”的警告

圖4 DRD對B3中“state”的警告
基于以上兩項實驗內容的結論可知,分析模型可以應用于任意類型二進制程序的代碼安全缺陷檢測過程,其包含的信息可以為識別與檢測二進制代碼安全缺陷提供充分的支持及有效的判定標準,使任意類型結構復雜的二進制代碼安全缺陷能夠被準確和高效地檢測出來。所以二進制代碼安全缺陷分析模型的實用性和有效性得到驗證。
為實現對結構復雜的二進制代碼安全缺陷的有效檢測,本文給出對二進制代碼安全缺陷的分析原理,提出二進制代碼安全缺陷的分析模型,并依據分析模型的應用原理,給出分析模型的應用方法。首先提取缺陷IR代碼的關鍵特征,抽象其中結構信息,生成二進制代碼安全缺陷的分析模型。然后用工具VTS獲取二進制程序的IR執行路徑集合,基于各類語句的統計概率計算路徑單元的權重,依據缺陷IR代碼檢測算法遍歷IR執行路徑,查找滿足特征模型的IR代碼組,并通過IR代碼與二進制代碼的轉換信息,檢測出二進制程序中代碼安全缺陷。
實驗結果表明,分析模型兼具實用性和有效性,應用分析模型可以檢測出現有方法難以發現的各類結構復雜的二進制代碼安全缺陷,分析模型的應用方法無需源代碼,能夠直接檢測二進制應用程序,極大提高了檢測結果準確率,具有簡單、方便的優點。分析模型可以應用于軟件開發維護、漏洞挖掘與利用及程序分析與測試等多種領域。同時,分析模型能夠有效地應用于現有方法難以檢測的二進制并行程序,所以隨著網絡和并行系統的發展,其具有廣泛的應用前景。
[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
國家自然科學基金資助項目(No.61472429);北京市自然科學基金資助項目(No.4122041)
The National Natural Science Foundation of China (No.61472429), The Natural Science Foundation of Beijing (No.4122041)
許團(1973-),男,黑龍江鶴崗人,中國人民大學博士生,主要研究方向為信息安全。

屈蕾蕾(1995-),女,新疆烏魯木齊人,中國人民大學博士生,主要研究方向為可信計算、云安全。
石文昌(1964-),男,廣西浦北人,中國人民大學教授、博士生導師,主要研究方向為系統安全、可信計算與數字取證。
