當(dāng)前位置:首頁(yè) > 模擬 > 模擬
[導(dǎo)讀] 1 概述  隨著信息技術(shù)的廣泛應(yīng)用,軟件安全漏洞所造成的危害正日益嚴(yán)重。軟件安全漏洞發(fā)掘作為一種預(yù)先發(fā)現(xiàn)軟件潛在安全漏洞、保證信息安全的重要技術(shù),也越來越受到人們的重視。目前國(guó)內(nèi)外常用的漏洞自動(dòng)發(fā)掘技

 1 概述

  隨著信息技術(shù)的廣泛應(yīng)用,軟件安全漏洞所造成的危害正日益嚴(yán)重。軟件安全漏洞發(fā)掘作為一種預(yù)先發(fā)現(xiàn)軟件潛在安全漏洞、保證信息安全的重要技術(shù),也越來越受到人們的重視。目前國(guó)內(nèi)外常用的漏洞自動(dòng)發(fā)掘技術(shù)主要有手工分析、模糊(fuzzing)技術(shù)、補(bǔ)丁比較、源碼自動(dòng)分析和動(dòng)態(tài)調(diào)試等。

  軟件安全漏洞發(fā)掘技術(shù)大致分為基于源代碼的漏洞發(fā)掘技術(shù)和基于可執(zhí)行文件的漏洞發(fā)掘技術(shù)。然而現(xiàn)在大多數(shù)軟件都不是開源的,如各種商業(yè)軟件和操作系統(tǒng)軟件等,因此,針對(duì)可執(zhí)行文件的漏洞發(fā)掘技術(shù)顯得尤為重要。

  fuzzing 測(cè)試是通過提供非正常的輸入并監(jiān)測(cè)系統(tǒng)異常發(fā)現(xiàn)軟件安全漏洞的自動(dòng)化方法。它的基本原理是將利用正確數(shù)據(jù)隨機(jī)修改得到的畸形數(shù)據(jù)注入應(yīng)用程序中,觀察運(yùn)行結(jié)果(程序崩潰或者異常中斷),通過程序運(yùn)行的錯(cuò)誤來挖掘軟件的脆弱點(diǎn)。fuzzing 測(cè)試的思想比較直觀,便于實(shí)現(xiàn)自動(dòng)化。利用這種方法進(jìn)行漏洞發(fā)掘,發(fā)現(xiàn)漏洞到定位漏洞比較容易,并且不存在誤報(bào),但卻能揭示出程序中的重要漏洞,目前正廣泛應(yīng)用于各類軟件漏洞的發(fā)掘,在近幾年的漏洞挖掘?qū)嵺`過程中取得了很好的效果。

  雖然經(jīng)過多年的發(fā)展fuzzing 技術(shù)已經(jīng)取得長(zhǎng)足的進(jìn)步,但是仍然存在較多的不足,主要體現(xiàn)在以下4 個(gè)方面:

 ?。?)測(cè)試數(shù)據(jù)生成有一定程度的盲目性,不能進(jìn)行有針對(duì)性的測(cè)試,因此數(shù)據(jù)變化空間難以控制。(2)代碼覆蓋問題,通常生成的大量測(cè)試用例分布在某些特定的分支和狀態(tài)上,而一些特殊的分支或者狀態(tài)得不到覆蓋,因此代碼的測(cè)試完整性不足。(3)生成用例難以通過軟件的正確性和一致性檢測(cè),造成生成大量無效測(cè)試用例,或需要人工對(duì)復(fù)雜的文件格式進(jìn)行分析,測(cè)試效率低下。(4)難以發(fā)現(xiàn)需要幾個(gè)輸入同時(shí)起作用才能引發(fā)的異常或多階段綜合條件觸發(fā)的復(fù)雜漏洞。本文在結(jié)合了靜態(tài)分析和動(dòng)態(tài)分析技術(shù)的基礎(chǔ)上,提出一種基于動(dòng)態(tài)輸入路徑追蹤的fuzzing 技術(shù)進(jìn)行軟件安全漏洞發(fā)掘的新思路,較好地解決了上述問題。

  2 總體框架與關(guān)鍵技術(shù)

  2.1 基本框架

  基于動(dòng)態(tài)輸入跟蹤的fuzzing 技術(shù)的基本原理為:將待測(cè)軟件的可執(zhí)行代碼反匯編為匯編代碼,通過靜態(tài)分析匯編代碼,確定函數(shù)塊及其調(diào)用關(guān)系,并查找代碼分支選擇信息以供生成測(cè)試用例,動(dòng)態(tài)跟蹤輸入數(shù)據(jù)的流向以確定錯(cuò)誤注入點(diǎn),將測(cè)試用例注入后若無異常發(fā)生則恢復(fù)注入前的進(jìn)程快照重新進(jìn)行fuzzing,其基本框架如圖1 所示。

 

  2.2 基于反匯編的輸入路徑追蹤技術(shù)

  軟件從外部接收的輸入數(shù)據(jù)由于可被用戶控制,因而是引發(fā)各類軟件漏洞的根源。輸入點(diǎn)是指用戶提供的數(shù)據(jù)提交給程序的地方,它位于軟件與用戶交界處,是軟件中漏洞產(chǎn)生的發(fā)源地,因此需要觀測(cè)目標(biāo)軟件的輸入點(diǎn),以便動(dòng)態(tài)跟蹤輸入數(shù)據(jù)在程序中的流向和使用。采用輸入追蹤法,首先需要確定代碼的輸入點(diǎn)。利用反匯編工具反匯編目標(biāo)程序的二進(jìn)制代碼,分析得到的匯編代碼以確定程序的函數(shù)塊及其內(nèi)部的基本塊。查找所有可能接受外部輸入的庫(kù)函數(shù)調(diào)用,確定為可能的輸入點(diǎn)。例如WSARecvFrom()的調(diào)用將會(huì)接收網(wǎng)絡(luò)報(bào)文,并把數(shù)據(jù)放入緩存區(qū)。接著,利用動(dòng)態(tài)調(diào)試工具監(jiān)測(cè)輸入點(diǎn)函數(shù)的調(diào)用,并在其被調(diào)用時(shí)觀察其調(diào)用結(jié)果,若經(jīng)比較發(fā)現(xiàn)來自外部輸入,則記錄此輸入數(shù)據(jù)的存放緩沖區(qū)并設(shè)置內(nèi)存中斷,當(dāng)有指令讀寫該內(nèi)存時(shí)即發(fā)生中斷,記錄所有讀寫此緩存區(qū)的函數(shù)指令并標(biāo)記為錯(cuò)誤注入點(diǎn),記錄每個(gè)輸入數(shù)據(jù)執(zhí)行的代碼路徑。通過對(duì)動(dòng)態(tài)執(zhí)行中輸入數(shù)據(jù)的實(shí)時(shí)跟蹤,可以監(jiān)測(cè)到函數(shù)具體調(diào)用的是輸入數(shù)據(jù)的哪些部分,也就可以對(duì)測(cè)試數(shù)據(jù)的相應(yīng)部分進(jìn)行有針對(duì)性的fuzzing,從而避免了測(cè)試數(shù)據(jù)變化空間巨大的問題,而且由于是從內(nèi)部直接對(duì)相關(guān)函數(shù)進(jìn)行測(cè)試,因此有助于發(fā)掘多重輸入向量或多階段綜合條件觸發(fā)的復(fù)雜漏洞。

  2.3 基于代碼覆蓋的測(cè)試數(shù)據(jù)生成

  黑盒測(cè)試通常不考慮測(cè)試的路徑覆蓋問題,在測(cè)試的完整性方面存在局限,往往不能發(fā)現(xiàn)未執(zhí)行代碼中的漏洞。例如下面是摘自于一個(gè)服務(wù)器軟件的代碼片段:

  

  此處軟件利用sscanf() API 將原始網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換為一個(gè)整數(shù),然后將所生成的該整數(shù)與靜態(tài)整數(shù)值3 857 106 359 進(jìn)行比較,如果這2 個(gè)值不匹配,那么協(xié)議解析器就會(huì)由于一個(gè)“訪問協(xié)議錯(cuò)誤”而返回。若測(cè)試用例中無此整數(shù),則無法對(duì)跳轉(zhuǎn)后的代碼進(jìn)行測(cè)試,而要想通過一般的數(shù)據(jù)變異生成包含此數(shù)的用例,所要構(gòu)造的測(cè)試用例數(shù)和耗費(fèi)的測(cè)試時(shí)間都是相當(dāng)龐大的。為提高效率,可以根據(jù)諸如此類的代碼中的靜態(tài)整數(shù)和字符串生成相應(yīng)的測(cè)試用例集。只要利用靜態(tài)代碼分析工具,查找代碼中的靜態(tài)字符串、整數(shù)和路徑分支處有關(guān)路徑選擇的比較字段,將其保存到測(cè)試數(shù)據(jù)庫(kù)。

  另外還可在錯(cuò)誤注入點(diǎn)所在的函數(shù)中搜索對(duì)不安全庫(kù)函數(shù)的調(diào)用,根據(jù)不安全庫(kù)函數(shù)易引發(fā)漏洞的類型,生成相關(guān)的測(cè)試用例集。同時(shí)還可以在動(dòng)態(tài)追蹤過程中,在執(zhí)行跳轉(zhuǎn)指令前修改指定寄存器的值以到達(dá)不同路徑的代碼,從而提高了測(cè)試的代碼覆蓋率。

  2.4 基于快照恢復(fù)的錯(cuò)誤注入技術(shù)

  現(xiàn)今大多數(shù)軟件為了提高自身安全性,都加強(qiáng)了軟件的糾錯(cuò)能力和安全保護(hù)機(jī)制,會(huì)在接收外部輸入后對(duì)輸入數(shù)據(jù)進(jìn)行正確和一致性檢測(cè),甚至一些軟件還要在之前對(duì)編碼的數(shù)據(jù)進(jìn)行解碼,不考慮數(shù)據(jù)格式的暴力測(cè)試在軟件對(duì)輸入數(shù)據(jù)進(jìn)行的正確和一致性檢測(cè)中都會(huì)被過濾掉。而大多數(shù)協(xié)議或文件格式都非常復(fù)雜且未被公開,想要了解格式的結(jié)構(gòu)或生成正確格式的文件都非常困難。為此,采用基于內(nèi)存快照恢復(fù)的錯(cuò)誤注入技術(shù),以繞過軟件的檢測(cè)機(jī)制進(jìn)行fuzzing測(cè)試。選用具有正確格式的輸入數(shù)據(jù)樣本以通過軟件的相關(guān)檢測(cè)函數(shù)的驗(yàn)證,在執(zhí)行到真正對(duì)數(shù)據(jù)進(jìn)行應(yīng)用的相關(guān)解析函數(shù)時(shí),設(shè)置錯(cuò)誤注入點(diǎn),保存此時(shí)進(jìn)程的所有上下文內(nèi)容即進(jìn)程快照,接著改變調(diào)用參數(shù)為生成的測(cè)試用例,再在函數(shù)的結(jié)束處設(shè)置還原點(diǎn),接著繼續(xù)運(yùn)行并監(jiān)測(cè)程序的運(yùn)行狀況。若無異常發(fā)生,則當(dāng)程序運(yùn)行到還原點(diǎn)時(shí)掛起進(jìn)程,將進(jìn)程環(huán)境恢復(fù)為錯(cuò)誤注入點(diǎn)處保存的上下文內(nèi)容,重新進(jìn)行錯(cuò)誤注入,直到程序發(fā)生異?;驕y(cè)試用例耗盡。采用這種方法還可以避免通常測(cè)試過程中的網(wǎng)絡(luò)延遲、重啟程序和執(zhí)行與處理輸入無關(guān)的代碼等所耗費(fèi)時(shí)間,大大提高了測(cè)試效率。

  3 系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)與實(shí)驗(yàn)評(píng)估

  用pythON 語(yǔ)言編寫了基于上述技術(shù)的測(cè)試工具,此工具主要由5 個(gè)模塊組成,分別為靜態(tài)逆向分析模塊、動(dòng)態(tài)跟蹤模塊、測(cè)試數(shù)據(jù)生成模塊、錯(cuò)誤注入模塊、異常檢測(cè)及記錄模塊??傮w模塊組成如圖2 所示。

 

  

  靜態(tài)逆向分析模塊主要是利用反匯編工具IDA Pro 來反匯編目標(biāo)程序的二進(jìn)制代碼,以生成相應(yīng)的匯編代碼,在此基礎(chǔ)上利用腳本自動(dòng)識(shí)別確定函數(shù)塊及其內(nèi)部的基本塊,分析程序的基本結(jié)構(gòu)和函數(shù)調(diào)用關(guān)系;查找代碼中的靜態(tài)字符串、整數(shù)和代碼分支處的比較字段,并搜索代碼中調(diào)用的不安全庫(kù)函數(shù),用以建立測(cè)試用例庫(kù)。

  動(dòng)態(tài)跟蹤模塊在調(diào)試器的基礎(chǔ)上構(gòu)建而成,主要負(fù)責(zé)在程序執(zhí)行期間動(dòng)態(tài)監(jiān)測(cè)輸入函數(shù)的調(diào)用,以確定輸入數(shù)據(jù)的內(nèi)存位置;接著跟蹤輸入數(shù)據(jù)的流向和使用,在輸入數(shù)據(jù)被讀寫時(shí)記錄操作函數(shù),以確定錯(cuò)誤注入點(diǎn)。

  測(cè)試數(shù)據(jù)生成模塊主要負(fù)責(zé)根據(jù)靜態(tài)逆向分析模塊提供的分析查找結(jié)果自動(dòng)建立測(cè)試用例庫(kù),并利用測(cè)試用例庫(kù)在測(cè)試過程中自動(dòng)生成測(cè)試用例。

  錯(cuò)誤注入模塊主要負(fù)責(zé)自動(dòng)將測(cè)試數(shù)據(jù)生成模塊生成的測(cè)試用例注入到程序進(jìn)程中。在程序運(yùn)行到錯(cuò)誤注入點(diǎn)時(shí),保存錯(cuò)誤注入前的進(jìn)程快照,修改輸入數(shù)據(jù)所在的地址指針;在執(zhí)行到還原點(diǎn)時(shí),恢復(fù)之前保存的進(jìn)程快照,重新進(jìn)行錯(cuò)誤注入。

  異常檢測(cè)記錄模塊主要負(fù)責(zé)通過監(jiān)測(cè)程序的異常報(bào)錯(cuò),尋找軟件存在的問題。要記錄分析的部分包括:(1)異常的類型:運(yùn)算錯(cuò)誤,標(biāo)準(zhǔn)輸入/輸出錯(cuò)誤,內(nèi)存訪問錯(cuò)誤,系統(tǒng)APIs 調(diào)用錯(cuò)誤,一般運(yùn)行時(shí)錯(cuò)誤,語(yǔ)法錯(cuò)誤,應(yīng)用程序不可預(yù)知的崩潰等。(2)錯(cuò)誤記錄:系統(tǒng)自身的錯(cuò)誤記錄,可執(zhí)行程序的錯(cuò)誤記錄。(3)出錯(cuò)時(shí)各個(gè)寄存器值和其他環(huán)境變量的值,以及程序的返回值。

  選取一款小型代理服務(wù)器軟件Polipo 作為測(cè)試對(duì)象,驗(yàn)證該動(dòng)態(tài)輸入追蹤方法的有效性。用系統(tǒng)動(dòng)態(tài)跟蹤服務(wù)器進(jìn)程接收來自遠(yuǎn)程client 的http 請(qǐng)求,針對(duì)處理請(qǐng)求消息中各字段的處理函數(shù)生成測(cè)試用例并注入進(jìn)行fuzzing。當(dāng)生成測(cè)試用例的Content-Length 字段值為一個(gè)極大整數(shù)時(shí),檢測(cè)到發(fā)生內(nèi)存非法訪問異常,服務(wù)器隨即崩潰。通過調(diào)試器調(diào)試軟件發(fā)現(xiàn)Polipo 的client.c 文件中httpClientDiscardBody()函數(shù)存在符號(hào)錯(cuò)誤,當(dāng)遠(yuǎn)程用戶提交帶有超長(zhǎng)Content-Length頭的http 請(qǐng)求會(huì)產(chǎn)生整數(shù)溢出,進(jìn)而導(dǎo)致服務(wù)崩潰,從而驗(yàn)證了該漏洞的存在。

  4 結(jié)束語(yǔ)

  本文在基于反匯編的輸入路徑追蹤技術(shù)的基礎(chǔ)上,結(jié)合基于代碼覆蓋的測(cè)試數(shù)據(jù)生成和基于快照恢復(fù)的錯(cuò)誤注入技術(shù),將其應(yīng)用于fuzzing 測(cè)試中,提出了一種軟件安全漏洞自動(dòng)挖掘的新方法。該方法較好地解決了fuzzing 技術(shù)存在的測(cè)試數(shù)據(jù)空間巨大、代碼覆蓋不完整和測(cè)試效率低等問題,且無需目標(biāo)軟件源代碼,因而應(yīng)用范圍較廣?;诖朔椒ㄔO(shè)計(jì)并實(shí)現(xiàn)了一個(gè)測(cè)試系統(tǒng),通過對(duì)實(shí)例軟件的漏洞挖掘?qū)嶒?yàn),驗(yàn)證了該方法的有效性。下一步工作主要為對(duì)輸入路徑的追蹤細(xì)化為針對(duì)指令級(jí)的追蹤,以進(jìn)一步提高動(dòng)態(tài)追蹤的精確性和可靠性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉