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

?

基于變異的Fuzzing技術(shù)研究

2015-11-01 07:01:00吳金龍歐鋒周林甘水滔
信息安全與通信保密 2015年10期
關(guān)鍵詞:漏洞變異解析

吳金龍, 歐鋒, 周林, 甘水滔

(江南計算技術(shù)研究所,江蘇無錫214083)

基于變異的Fuzzing技術(shù)研究

吳金龍, 歐鋒, 周林, 甘水滔

(江南計算技術(shù)研究所,江蘇無錫214083)

近年來,隨著計算機和網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用和發(fā)展,對應(yīng)其安全問題也日益明顯。軟件作為計算機的基本應(yīng)用,其安全性尤為重要。本文重點介紹基于數(shù)據(jù)變異的Fuzzing檢測技術(shù),用于檢測已知格式的文件解析類應(yīng)用軟件的脆弱性自動分析,并對Peach開源測試框架中該檢測技術(shù)部分進(jìn)行改進(jìn),進(jìn)而高效地檢測此類應(yīng)用軟件的安全性。

軟件安全;Fuzzing;文件格式;數(shù)據(jù)變異

0 引言

軟件作為計算機的基本應(yīng)用和網(wǎng)絡(luò)通信的基礎(chǔ)載體,軟件的安全性直接關(guān)乎計算機和網(wǎng)絡(luò)的安全,軟件的漏洞和脆弱性常作為黑客入侵計算機和網(wǎng)絡(luò)的直接手段,也是極為高效的一種手段,國家互聯(lián)網(wǎng)安全威脅2015年01月的報告指出[1],1月份,發(fā)現(xiàn)736個漏洞,高危漏洞213個,可利用實施遠(yuǎn)程攻擊漏洞657個。分析提取軟件漏洞,發(fā)現(xiàn)軟件的脆弱性不僅可以為攻擊者提供0-day攻擊[2],成為攻擊者的有力手段,更為己方更好的安全防護(hù)提供重要保障。在分析軟件脆弱性時,F(xiàn)uzzing技術(shù)是一種快速并且有效的方式,F(xiàn)uzzing技術(shù)能夠自動識別出二進(jìn)制文件中的安全問題[3]。這為軟件安全檢測問題提供了一種高效智能的解決方案。

早期的測試以手工方式為主,測試技術(shù)主要分為黑盒測試、白盒測試以及灰盒測試。隨著技術(shù)的發(fā)展,自動化測試技術(shù)逐漸成熟。許多Fuzzing自動化測試工具和框架也替代了手工測試。以Peach[4]等為代表的智能Fuzzing測試工具,根據(jù)對測試程序的分析、理解,利用啟發(fā)式算法、結(jié)構(gòu)化的數(shù)據(jù)構(gòu)造描述,能夠構(gòu)造豐富多樣的測試數(shù)據(jù)[8]。測試的原理通常以大小相關(guān)的部分、字符串、標(biāo)志字符串開始或結(jié)束的二進(jìn)制塊等為重點,使用邊界值附近的值對目標(biāo)進(jìn)行測試[16]。相對于現(xiàn)有測試技術(shù)而言,F(xiàn)uzzing測試具有適用范圍廣、誤報率低、原理簡單的優(yōu)點。

本文將主要介紹基于變異的Fuzzing檢測技術(shù)的基本原理和實現(xiàn),并通過開源的Fuzzing測試框架——Peach,實現(xiàn)并改進(jìn)具體數(shù)據(jù)變異。最后設(shè)計實現(xiàn)Peach框架下,基于變異的方法對文件解析類軟件的測試,重現(xiàn)部分漏洞。

1 基于變異的Fuzzing檢測技術(shù)原理

Fuzzing測試數(shù)據(jù)有不同的生成方式:基于生長的方法和基于變異的方法[5]?;谏L的Fuzzing方法是通過產(chǎn)生隨機或啟發(fā)性數(shù)據(jù)來填充給定的數(shù)據(jù)模型,從而生成畸形文件。而基于變異的Fuzzing方法則是在一個給定的樣本文件基礎(chǔ)上進(jìn)行修改從而產(chǎn)生畸形文件。其不同方式之間各有優(yōu)缺點。采用哪種生成方式,應(yīng)取決于測試的軟件對象。

1.1 數(shù)據(jù)生成方式的選取

由于測試用例的產(chǎn)生機理不同,F(xiàn)uzzing為了產(chǎn)生有效的畸形數(shù)據(jù),需要考慮到測試用例的數(shù)據(jù)格式、目標(biāo)程序的結(jié)構(gòu)流程和程序運行的中間狀態(tài);而黑盒測試只關(guān)心目標(biāo)程序的外部接口和外部輸入,從這個意義上講,現(xiàn)在的Fuzzing技術(shù)更接近于灰盒測試[6]。

對于未知軟件的測試,其測試方法主要是黑盒測試,數(shù)據(jù)的生成一般選取基于生長的方法,隨機生成數(shù)據(jù)進(jìn)行填充。

對于已知軟件和網(wǎng)絡(luò)協(xié)議,測試方法可以采用灰盒測試的方法,其數(shù)據(jù)生成則選取基于變異的方法,該方法在效率和準(zhǔn)確度方面均高于黑盒測試的方法。本文重點介紹此方法。對于已知軟件和網(wǎng)絡(luò)協(xié)議,其解析的內(nèi)容一般為已知格式的文件,如Office系列、pngcheck、搜狗音樂、暴風(fēng)影音、Bash等軟件可以對應(yīng)解析*. doc、*.png、*.mp3*、*.avi、*.sh等類型文件,對于Bash而言,其解析腳本或者命令行也可以看做是解析以回車或分號作為分隔符的字符串的解析。因而,大部分這類已知軟件,其解析的原理在于這類文件有固定的格式,其頭尾等固定區(qū)域會劃分成不同的塊,各個塊有其各自的意義,或者以特定的符號作為劃分,解析被劃分的各個區(qū)塊。因而,這類軟件如根據(jù)文件格式和其固定的區(qū)域的值來解析文件。以格式較為簡單的png圖片格式[7]為例:

一個PNG文件最前面是8字節(jié)的PNG簽名,十六進(jìn)制值為:89 50 4E 47 0D 0A 1A 0A。隨后是若干個數(shù)據(jù)塊。每個數(shù)據(jù)塊的格式如表1所示:

表1 png圖片單個數(shù)據(jù)塊的格式

1.2 基干變異的數(shù)據(jù)生成方法的原理

根據(jù)上文的介紹,可以將已知文件的格式或命令行參數(shù)劃分不同的數(shù)據(jù)塊,記Y為正常文件,X1,…,Xn為各數(shù)據(jù)塊,則

由公式不難看出,文件Y由各個數(shù)據(jù)塊Xi組成,因而文件Y是否能被解析取決于其每個數(shù)據(jù)塊Xi的正確性。對于一個解析Y的軟件,測試其安全性就可以分為以下步驟:

1)生成每個數(shù)據(jù)塊Xi的變異數(shù)據(jù)塊Xi';

2)將一個或多個Xi'填充對應(yīng)的第i個區(qū)塊,得到新的畸形文件Y';

3)將畸形文件Y'送入軟件進(jìn)行解析,并監(jiān)視軟件是否拋出異常;

4)N次重復(fù)步驟1-3,記錄并分析軟件產(chǎn)生的錯誤信息,得出軟件脆弱性結(jié)論。一般N是生成的測試?yán)膫€數(shù),也作為部分自動化測試工具中運行的輪數(shù)。

1.3 變異數(shù)據(jù)自動化生成

對于上述過程,通常采用自動化生成方式。本文是基于Peach測試框架下,自動生成變異數(shù)據(jù)。首先簡單介紹下Peach測試框架。Peach是一款優(yōu)秀的開源Smart Fuzz工具,它支持兩種文件Fuzzing方法:基于生長(Generation Based)和基于變異(Mutation Based)。其特色之一便是模塊化處理,通過DataModel[12]、StateModel[13]、Agent[14]等模塊控制整個測試[15]。

Peach將可以獲得的目標(biāo)文件的格式和運行方式等信息以XML的格式表示,這種方式只需要知道文件中部分格式即可,同時可以優(yōu)選的對其中部分?jǐn)?shù)據(jù)塊數(shù)據(jù)設(shè)置變異選項,從而充分發(fā)揮了測試用例生成方法的優(yōu)點,提高測試效率的同時擴大目標(biāo)軟件的應(yīng)用范圍[16]。

2004年,Michael Eddington團(tuán)隊用Python語言編寫的Peach V1.0框架問世,2013年,該團(tuán)隊用C#重寫了Peach V3.0[9],其功能和性能有了極大的改進(jìn),使得該工具在軟件測試領(lǐng)域具有較高的知名度。本文的數(shù)據(jù)變異生成實驗環(huán)境為:64位英文版Ubuntu14.04的操作系統(tǒng),Peach版本為V3.1.122。

在使用Peach這個框架進(jìn)行模糊測試的時候,必須對目標(biāo)文件的數(shù)據(jù)結(jié)構(gòu)進(jìn)行定義,這種給目標(biāo)文件定義數(shù)據(jù)結(jié)構(gòu)的文件叫做Peach Pit文件[10]而Peach Pit使用的是XML(Extensible Markup Language)來定義數(shù)據(jù)結(jié)構(gòu)的[11]。

1.4 常見的生成方法

本節(jié),我們以Peach測試框架為例,探討基于變異的生成方法如何生成數(shù)據(jù)。

對于測試目標(biāo)而言,Peach框架提供了多種基于變異的生成方式,曲型的生成方式包括了對數(shù)組、數(shù)據(jù)塊、字符串、標(biāo)識位等常見的可能觸發(fā)解析程序異常的格式區(qū)域進(jìn)行數(shù)據(jù)變異。下面列出幾個曲型的變異生成方法,如表2所示。

表2 常見的幾種變異方法

2 生成方法的改進(jìn)

由上一節(jié)的介紹不難發(fā)現(xiàn),Peach的配置生成變異數(shù)據(jù)的過程,對所有的數(shù)據(jù)變異方式并沒有太大區(qū)別。針對此情況,提出以下改進(jìn):

1)針對不同類型的軟件,建立和維護(hù)不同的數(shù)據(jù)變異的特征庫,將目前常見的漏洞加入對應(yīng)的特征庫。比如,對于Bash軟件和解析png的display軟件,其數(shù)據(jù)輸入結(jié)構(gòu)不同,若采用相同的數(shù)據(jù)變異方法,其檢測率和效率均較低。因而可以建立對應(yīng)的特征庫,比如構(gòu)造已有的Bash“破殼漏洞”[18],添加至Shell類軟件的測試特征庫;構(gòu)建display、pngcheck等png文件解析軟件已有漏洞,添加至圖片解析類軟件的測試特征庫。

2)借助開源優(yōu)勢,添加字曲接口。比如對于字符串的變異,人為構(gòu)造字曲,產(chǎn)生一些特殊字符串,如2048長的字符串、中文字符等,而非軟件自動生成隨機數(shù)據(jù)或者簡單的變換;對于運算和標(biāo)志位的變異,人為構(gòu)造除零操作等可能觸發(fā)異常的運算加入字曲。

3)在變異過程中添加反饋和自學(xué)習(xí)。對于一款需要深度挖掘脆弱性的軟件,尤其需要將機器學(xué)習(xí)和人工智能結(jié)合,在變異的過程中,根據(jù)統(tǒng)計結(jié)果和日志,添加反饋和自學(xué)習(xí)機制,這樣的優(yōu)點在于可以減少生成造成相同高頻錯誤的測試?yán)?,提高軟件運行效率。

3 實驗與分析

本章主要通過實驗演示在實際測試過程中,自動化測試工具是如何根據(jù)文件的結(jié)構(gòu)生成配置文件,進(jìn)行數(shù)據(jù)變異生成畸形文件,進(jìn)而測試被測軟件脆弱性這一過程。由于Peach官網(wǎng)及相關(guān)愛好者提供了部分對已知格式文件的測試?yán)?,如:png、wav等格式的pit文件,可供讀者參考,因而,本次實驗主要展示基于命令行輸入方式的數(shù)據(jù)變異。實驗對Linux系統(tǒng)下軟件“gif2png”的脆弱性分析,該軟件的功能是實現(xiàn)gif轉(zhuǎn)png,存在漏洞CVE 2009 -5018[17]。該工具可以通過命令行讀取參數(shù),實驗重點在于重現(xiàn)該軟件的漏洞。

3.1 CVE 2009-5018漏洞介紹

該漏洞發(fā)布于2009年,版本低于2.5.2的gif2png均存在此漏洞,漏洞類型是越界溢出漏洞,攻擊者可以利用此漏洞進(jìn)行遠(yuǎn)程溢出攻擊,執(zhí)行任意二進(jìn)制應(yīng)用。其描述如圖1:

圖1 CVE 2009-5018漏洞描述

圖1給出的其溢出測試代碼為:

$./gif2png$(perl-e'print"A"x 1053')

實驗發(fā)現(xiàn),在1.3節(jié)介紹的真實測試環(huán)境下,該漏洞的實際觸發(fā)條件是:參數(shù)的字符串長度超過1020,與官方公布的觸發(fā)條件:字符串長度為1053,略有不同。

3.2 命令行參數(shù)Fuzzing的配置

用Peach框架重現(xiàn)該漏洞,通過簡單介紹Peach測試框架生成變異數(shù)據(jù)流程中的關(guān)鏈步驟,以拋磚引玉,為讀者快速了解和使用Peach提供參考。

首先,根據(jù)漏洞描述,需要構(gòu)造命令行輸入?yún)?shù)的畸形數(shù)據(jù),由于作者所查詢的資料中沒有Peach對命令行參數(shù)的Fuzzing介紹。因而,這里簡單介紹下對命令行輸入?yún)?shù)產(chǎn)生畸形數(shù)據(jù)的部分配置過程,這里需要變異的內(nèi)容僅相當(dāng)于是已知格式中的某一個區(qū)塊,因而DataModel模塊只需配置命令行中命令后面需要輸入的畸形參數(shù)即可。

此外,需要配置Agent模塊參數(shù),添加監(jiān)視器,將DataModel產(chǎn)生的畸形數(shù)據(jù)寫入腳本中。該模塊通過執(zhí)行腳本實現(xiàn)命令和畸形參數(shù)的結(jié)合。

對于PeachPit其他模塊的配置和如何運行,這里不再贅述。

3.3 結(jié)果與分析

由漏洞描述,可以先手工重現(xiàn)漏洞,并與工具重現(xiàn)的進(jìn)行對比,以確保工具重現(xiàn)漏洞的正確性。實驗發(fā)現(xiàn),通過Peach框架測試能快速多次重現(xiàn)該漏洞。為了更好的呈現(xiàn)實驗結(jié)果,并方便讀者驗證,在實驗多次的基礎(chǔ)上,取定隨機種子,限定運行輪數(shù)為1。

./peach-seed=30880-range 3,3 pit.xml

產(chǎn)生畸形數(shù)據(jù)后,觸發(fā)漏洞,造成了緩沖區(qū)溢出錯誤,如圖2。

圖2 重現(xiàn)溢出錯誤

系統(tǒng)防止緩沖區(qū)溢出,為了保護(hù)堆棧信息,向程序發(fā)出SIGTERM信號,程序被迫中止進(jìn)程,如圖3。

圖3 程序中止

3.4 優(yōu)化后的對比

選取2個軟件共5個漏洞進(jìn)行對比實驗,分別是BashShock系列漏洞和上述實驗中的gif2png漏洞進(jìn)行測試。對于這5個漏洞的檢測情況進(jìn)行橫向?qū)Ρ?,測試時間為5小時。

表3 兩種框架對5個漏洞的檢測

由實驗結(jié)果可知,原始框架對BashShock系列漏洞無法檢測,改進(jìn)的框架,由于有特征庫及字曲,對部分的BashShock漏洞有較好的檢測。

接下來對同一個漏洞,從相同時間內(nèi)重現(xiàn)漏洞的次數(shù)進(jìn)行統(tǒng)計分析,以測試兩種框架之間的性能,選取表3中均能檢測的漏洞CVE 2009-5018,用相同的隨機種子,運行相同的時間,記錄結(jié)果,統(tǒng)計如圖4。

圖4 同一漏洞重現(xiàn)次數(shù)的對比

4 結(jié)語

本文以軟件的脆弱性在網(wǎng)絡(luò)安全和軟件安全中的重要性作為牽引,引出了自動化測試的Fuzzing框架,進(jìn)而介紹了針對已知格式解析類軟件脆弱性分析的方法——基于變異的Fuzzing檢測技術(shù)。在介紹基于變異的Fuzzing檢測技術(shù)原理的基礎(chǔ)上,歸納了變異數(shù)據(jù)自動化的生成方法,提出了改進(jìn)方法,并給出了實例。希望以本文拋磚引玉,在為讀者介紹基于變異的Fuzzing檢測技術(shù)的同時,以具體的測試框架為載體,用命令行輸入數(shù)據(jù)產(chǎn)生變異為例子,具體演示測試的主體流程,以此為讀者在實踐中提供參考。下一步,作者希望以CVE-2014-7186等未能檢測的漏洞未載體,進(jìn)一步研究改進(jìn)開源框架,以提高檢測率。

[1] 國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心.CNCERT互聯(lián)網(wǎng)安全威脅報告-2015年 1月[EB/OL].(2015-03-06)[2015-04-26].http://www.cert.org.cn/publish/main/upload/File/2015monthly01.pdf.

[2] Peach Fuzzer LLC.Peach Overview Datasheet[EB/OL].[2015-06-03].http://static1.squarespace.com/static/ 54e67620e4b06d2d7213f95f/t/552c4627e4b08f10b637a23a/ 1428964903836/Peach+Overview-Peach+Fuzzer-Datasheet-2015.pdf.

[3] 史記,曾昭龍,楊從保等.Fuzzing測試技術(shù)綜述[J].信息網(wǎng)絡(luò)安全,2014(03):87-91.

[4] Peach Fuzzer LLC.Peach Fuzzer[EB/OL][2015-06-03]. http://peachfuzzer.com/.

[5] Michael Sutton,Adam Greene,Pedram Amini.Fuzzing:Brute Force Vulnerability Discovery[M].1 Edition.Addison-Wesley,2007:22.

[6] 吳志勇,王紅川,孫樂昌等.Fuzzing技術(shù)綜述[J].計算機應(yīng)用研究,2010,27(03):829-832.

[7] W3C.Portable Network Graphics(PNG)Specification(Second Edition)[EB/OL].(2003-11-10)[2015-06-03].http://www.w3.org/TR/PNG/.

[8] 歐陽永基,魏強,王清賢等.基于異常分布導(dǎo)向的智能Fuzzing方法[J].電子與信息學(xué)報,2015,37(01):143-149.

[9] ZHANG Hua,ZHANG Zhao,TANG Wen.Improve Peach:Making Network Protocol Fuzz Testing More Precisely Mechan-ics and Materials[J].Applied Mechanics and Materials.2014,551(05):642-647.

[10] Sutton M,Greene A,Amini P等.模糊測試強制性安全漏洞發(fā)掘[M].黃隴,于麗麗,李虎譯.機械工業(yè)出版社,2009.

[11] 丁迪,薛質(zhì).基于Peach的模糊測試樣本變異策略研究[J]信息安全與通信保密,2014(11):144-147.

[12] Dejavu Security.Data Modeling[EB/OL].(2014-02-23)[2015-06-03].http://community.peachfuzzer.com/v3/ DataModeling.html.

[13] Dejavu Security.State Modeling[EB/OL].(2014-02-23)[2015-06-03].http://community.peachfuzzer.com/v3/ StateModel.html.

[14] Dejavu Security.Agents[EB/OL].(2014-02-23)[2015-06 -03].Agenthttp://community.peachfuzzer.com/v3/ Agent.html.

[15] CAI Jun,MEN Jin-quan,YANG Shang-fei,HE Jun.Automatic Software Vulnerability Detection based on Guided Deep Fuzzing[C]//Software Engineering and Service Science (ICSESS),2014 5th IEEE International Conference on.Beijing:IEEE,2014:231-234.

[16] 于璐,沈毅.Fuzzing測試中樣本優(yōu)化算法的分析與改進(jìn)[J].計算機安全,2011(04):17-20.

[17] Securityfocus.gif2png Remote Buffer Overflow Vulnerability [EB/OL].(2011-01-14)[2015-06-03].http://www.securityfocus.com/bid/41801/info.

[18] The MITRE Corporation.CVE-2014-6271[EB/OL].U.S:Department of Homeland Security,2014[2015-06-03]. www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271.

Fuzzing Technology based on Variation

WU Jin-Long,OU Feng,ZHOU Lin,GAN Shui-tao
(Jiangnan Institute of Computing Technology,Wuxi Jiangsu 214083,China)

Recent years,with the widespread use and development of computer and network technology,the corresponding security issue becomes increasingly acute.Software,is the basic application of computer,and its security is of pariticular importance.This paper mainly describes Fuzzing detection technology based on data variation,which is used to detect the vulnerability autoanalysis of file parsing softwares with known format,and in addition,to modify this detection technology in Peach open source testing frame,thus efficiently detecting the security of this application software.

software security;Fuzzing;file format;data variation

TP311.53

A

1009-8054(2015)10-0118-05

吳金龍(1988—),男,碩士,研究實習(xí)員,主要研究方向為軟件安全及網(wǎng)絡(luò)安全;

歐 鋒(1976—),男,碩士,高級工程師,主要研究方向為網(wǎng)絡(luò)安全;

周 林(1986—),男,博士,研究實習(xí)員,主要研究方向為軟件安全及網(wǎng)絡(luò)安全;

東水滔(1984—),男,博士,助理工程師,主要研究方向為軟件安全。■

2015-05-22

猜你喜歡
漏洞變異解析
漏洞
三角函數(shù)解析式中ω的幾種求法
變異危機
變異
睡夢解析儀
電競初解析
商周刊(2017年12期)2017-06-22 12:02:01
三明:“兩票制”堵住加價漏洞
漏洞在哪兒
兒童時代(2016年6期)2016-09-14 04:54:43
相機解析
高鐵急救應(yīng)補齊三漏洞
迁西县| 长沙县| 丁青县| 静宁县| 蒙阴县| 灌云县| 罗城| 邓州市| 苗栗县| 泰兴市| 文登市| 郴州市| 噶尔县| 临漳县| 阳曲县| 开原市| 天台县| 扬中市| 德清县| 安义县| 福清市| 江永县| 吉安市| 响水县| 剑川县| 邓州市| 昔阳县| 夹江县| 海宁市| 漳州市| 霍林郭勒市| 通河县| 班戈县| 当涂县| 霸州市| 宣汉县| 富锦市| 洪湖市| 邵东县| 竹山县| 新化县|