亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于軟件體系結(jié)構(gòu)分析的漏洞挖掘技術(shù)研究

        2016-05-14 21:12:48唐萍張國強(qiáng)
        現(xiàn)代電子技術(shù) 2016年9期
        關(guān)鍵詞:安全漏洞

        唐萍 張國強(qiáng)

        摘 要: 為了提高漏洞挖掘效率,在軟件體系結(jié)構(gòu)的基礎(chǔ)上,結(jié)合符號執(zhí)行、污點(diǎn)分析和模糊測試中的優(yōu)點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了基于軟件體系結(jié)構(gòu)分析的漏洞挖掘系統(tǒng)Fast Fuzzing。該系統(tǒng)主要由體系結(jié)構(gòu)分析、指令追蹤、符號執(zhí)行、污點(diǎn)分析和動(dòng)態(tài)測試五個(gè)模塊組成,為提高系統(tǒng)效率,系統(tǒng)針對傳統(tǒng)技術(shù)方法進(jìn)行了優(yōu)化處理。實(shí)驗(yàn)結(jié)果表明Fast Fuzzing系統(tǒng)能夠有效發(fā)現(xiàn)IE8和IE10中的安全問題,成功觸發(fā)了IE8和IE10中的多個(gè)漏洞,適用于常用軟件的安全測試。

        關(guān)鍵詞: 模糊測試; 體系結(jié)構(gòu)分析; 漏洞挖掘; 安全漏洞

        中圖分類號: TN711?34; TM417 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號: 1004?373X(2016)09?0099?04

        Abstract: To improve the efficiency of vulnerability mining, the vulnerability mining system Fast Fuzzing based on software architecture analysis was designed and implemented in combination with the advantages of symbolic execution, stain analysis and fuzzing test. This system is composed of architecture analysis, instruction tracing, symbolic execution, stain analysis and dynamic testing. To improve the system efficiency, the traditional technology method was optimized. The experimental results show that the Fast Fuzzing system can effectively detect the security problems in IE8 and IE10, successfully trigger multiple vulnerabilities in IE8 and IE10, which is suitable for the safety testing of common software.

        Keywords: fuzzing test; architecture analysis; vulnerability mining; security vulnerability

        0 引 言

        由于軟件漏洞的高危害性,漏洞挖掘技術(shù)已成為計(jì)算機(jī)領(lǐng)域中的一個(gè)研究熱點(diǎn)[1]。一方面,軟件安全研究人員專注于各種流行軟件的安全性分析和測試,以發(fā)現(xiàn)這些軟件中的安全問題;另一方面,軟件開發(fā)商也積極投入到產(chǎn)品的安全檢測中,以提高軟件的安全性[2]。

        近年來,在程序分析和編譯原理等領(lǐng)域的促進(jìn)下,面向源代碼的漏洞挖掘技術(shù)取得了一定成果。然而,該技術(shù)仍然存在著許多不足之處:如出于商業(yè)利益和商業(yè)保護(hù)等原因,絕大多數(shù)的軟件開發(fā)商并不對外提供軟件的源代碼[3]。其次,源代碼層次的漏洞挖掘和分析并不能發(fā)現(xiàn)在程序編譯、程序鏈接過程中產(chǎn)生的漏洞問題。此外,軟件中引入的軟件體系結(jié)構(gòu)方法、對外接口的不規(guī)范調(diào)用,也有可能存在潛在的安全問題[4]。

        1 系統(tǒng)需求與目標(biāo)

        現(xiàn)有的符號執(zhí)行技術(shù)主要面臨路徑爆炸、約束求解困難和效率比較低等問題,而本文的設(shè)計(jì)思想基于符號執(zhí)行技術(shù)和模糊測試技術(shù),同時(shí)與軟件體系結(jié)構(gòu)的方法相結(jié)合[5]。因此,本系統(tǒng)的設(shè)計(jì)目標(biāo)主要包括如下幾點(diǎn):

        (1) 高效率。提高本系統(tǒng)的測試效率,使得系統(tǒng)能夠?qū)Υ郎y軟件進(jìn)行自動(dòng)化測試,分析軟件運(yùn)行時(shí)的狀態(tài)信息,并且能夠準(zhǔn)確記錄軟件的異常行為和崩潰信息。

        (2) 高適用性。能夠?qū)νㄓ酶袷降臄?shù)據(jù)進(jìn)行處理,并且通過反饋式生成測試用例,驅(qū)動(dòng)測試過程的持續(xù)運(yùn)行。

        (3) 高代碼覆蓋率。能夠在動(dòng)態(tài)測試時(shí)分析測試用例的代碼覆蓋率,盡可能生成不同路徑的測試用例,提高系統(tǒng)測試時(shí)的代碼覆蓋率。

        2 系統(tǒng)架構(gòu)設(shè)計(jì)

        為了提高漏洞挖掘的效率,本文在軟件體系結(jié)構(gòu)分析的基礎(chǔ)上,結(jié)合了符號執(zhí)行和污點(diǎn)分析技術(shù),設(shè)計(jì)和實(shí)現(xiàn)了針對二進(jìn)制程序的漏洞挖掘系統(tǒng)Fast Fuzzing[6]。

        Fast Fuzzing漏洞挖掘系統(tǒng)采用離線符號執(zhí)行和離線污點(diǎn)分析的方法,在PANDA平臺(tái)的基礎(chǔ)上實(shí)現(xiàn)了上述功能,同時(shí)利用STP求解器進(jìn)行約束求解,生成新的測試用例。另外,還結(jié)合了污點(diǎn)分析結(jié)果,得到相關(guān)的污點(diǎn)信息,從而用于導(dǎo)向型測試用例的生成[7]。在進(jìn)行動(dòng)態(tài)測試時(shí),F(xiàn)ast Fuzzing系統(tǒng)會(huì)計(jì)算每次測試用例的代碼覆蓋情況,從而在選擇新的測試用例進(jìn)行測試時(shí),優(yōu)先選擇能夠提高代碼覆蓋率的新測試用例。Fast Fuzzing系統(tǒng)架構(gòu)圖如圖1所示。Fast Fuzzing漏洞挖掘系統(tǒng)主要由指令追蹤模塊、體系結(jié)構(gòu)分析模塊、符號執(zhí)行模塊、污點(diǎn)分析模塊和測試模塊組成。

        3 系統(tǒng)實(shí)現(xiàn)

        3.1 指令追蹤模塊設(shè)計(jì)與實(shí)現(xiàn)

        指令追蹤模塊的主要功能是,記錄測試程序執(zhí)行時(shí)每條指令的地址、上下文信息和內(nèi)存信息等。該模塊是在動(dòng)態(tài)分析平臺(tái) PANDA下實(shí)現(xiàn)的,其作為 PANDA平臺(tái)的一個(gè)工具模塊 panda_tools。指令追蹤模塊主要有如下三個(gè)模塊:

        指令追蹤:程序執(zhí)行過程中能夠動(dòng)態(tài)分析每條指令,記錄指令的具體信息和寄存器信息。指令追蹤功能主要通過注冊PANDA_CB_INSN_TRANSLATE和PANDA_CB_INSN_EXEC兩個(gè)回調(diào)函數(shù)實(shí)現(xiàn)。

        內(nèi)存追蹤:程序執(zhí)行過程中對內(nèi)存的操作進(jìn)行有針對性的記錄,包括內(nèi)存的申請、內(nèi)存的讀/寫、內(nèi)存塊大小和數(shù)據(jù)信息等。內(nèi)存追蹤方法與指令追蹤類似,通過注冊 [PANDA_CB_VIRT_MEM_READ,PANDA_CB_VIRT_][MEM_WRITE,]PANDA_CB_PHYS_MEM_READ和PANDA_CB_PHYS_MEM_WRITE四個(gè)類型的回調(diào)函數(shù),分別實(shí)現(xiàn)對虛擬地址內(nèi)存的讀/寫操作和物理地址內(nèi)存的讀/寫操作的監(jiān)控。

        函數(shù)追蹤:程序執(zhí)行過程中能夠記錄系統(tǒng)函數(shù)的調(diào)用,同時(shí)在提供符號表的情況下,能夠記錄指定函數(shù)的調(diào)用信息。系統(tǒng)通過 PANDA平臺(tái)對指令分析的過程,注 冊了兩個(gè)回調(diào)函數(shù)對其進(jìn)行處理,類型為PANDA_CB_INSN_TRANSLATE的translate_call back函數(shù)和類型為PANDA_CB_INSN_EXEC的exec_callback函數(shù)。

        3.2 體系結(jié)構(gòu)分析模塊設(shè)計(jì)與實(shí)現(xiàn)

        體系結(jié)構(gòu)分析模塊的功能是對最基本的主程序和子程序進(jìn)行靜態(tài)分析,通過對二進(jìn)制程序進(jìn)行基本塊劃分,記錄相關(guān)的基本塊信息,提取其中的函數(shù)調(diào)用關(guān)系,從而分析程序中的所有路徑,再根據(jù)靜態(tài)分析時(shí)的信息提取出相應(yīng)路徑的約束關(guān)系,用于后續(xù)的符號執(zhí)行中[8]。

        體系結(jié)構(gòu)分析模塊是在IDAPro靜態(tài)分析工具的基礎(chǔ)上實(shí)現(xiàn)的,之后通過模塊實(shí)現(xiàn)的插件對IDAPro反匯編結(jié)果進(jìn)行深入的分析,對程序進(jìn)行基本塊劃分和記錄,同時(shí)提取出其中的調(diào)用關(guān)系。該模塊的基本架構(gòu)如圖2所示。在體系結(jié)構(gòu)分析模塊中,主要包含基本代碼塊分析、函數(shù)調(diào)用分析和路徑分析三個(gè)部分。

        3.3 符號執(zhí)行模塊設(shè)計(jì)與實(shí)現(xiàn)

        符號執(zhí)行模塊通過分析指令追蹤時(shí)的記錄,結(jié)合體系結(jié)構(gòu)分析時(shí)的路徑關(guān)系,將輸入數(shù)據(jù)符號化表示,生成相應(yīng)的約束關(guān)系;之后,在軌跡重放時(shí),根據(jù)程序執(zhí)行時(shí)的上下文環(huán)境,更新路徑約束關(guān)系,并利用約束求解器進(jìn)行求解,生成新的測試用例,對程序進(jìn)行進(jìn)一步的測試。本系統(tǒng)基于PANDA平臺(tái)構(gòu)建,其底層由QEMU模擬器構(gòu)建,采用TCG中間語言的方式對指令進(jìn)行翻譯處理。本文在此基礎(chǔ)上,采用了離線符號執(zhí)行的方式,根據(jù)指令追蹤時(shí)的記錄,實(shí)現(xiàn)對中間代碼的符號化分析,從而提高符號執(zhí)行的效率。

        符號執(zhí)行模塊首先在體系結(jié)構(gòu)分析模塊的基礎(chǔ)上,通過對目標(biāo)軟件的靜態(tài)分析,生成軟件內(nèi)部的函數(shù)調(diào)用圖,進(jìn)而推導(dǎo)出軟件中的路徑關(guān)系。該模塊的基本流程如圖3所示。

        3.4 污點(diǎn)分析模塊設(shè)計(jì)與實(shí)現(xiàn)

        污點(diǎn)分析模塊通過指令追蹤時(shí)對原始輸入數(shù)據(jù)的污點(diǎn)標(biāo)記,分析相關(guān)內(nèi)存信息,記錄污點(diǎn)數(shù)據(jù)的傳播過程,獲得輸入數(shù)據(jù)與敏感內(nèi)存操作的關(guān)系,從而生成新的測試用例。

        污點(diǎn)分析模塊是在PADNA平臺(tái)基礎(chǔ)上實(shí)現(xiàn)的,借助于指令追蹤模塊,對目標(biāo)程序的執(zhí)行流程進(jìn)行軌跡記錄,生成相應(yīng)的軌跡記錄文件。軌跡記錄部分主要針對每條執(zhí)行過的指令,具體包括指令的地址、指令機(jī)器碼和指令運(yùn)行時(shí)寄存器、內(nèi)存的相關(guān)信息。

        3.5 動(dòng)態(tài)測試模塊設(shè)計(jì)與實(shí)現(xiàn)

        動(dòng)態(tài)測試模塊是在Windows異常處理機(jī)制的基礎(chǔ)上,通過執(zhí)行目標(biāo)程序捕獲運(yùn)行時(shí)出現(xiàn)的異常信息判斷測試用例是否會(huì)引發(fā)程序崩潰,再進(jìn)一步分析崩潰信息,判斷該問題是否是由于軟件自身的安全漏洞而引起的。同時(shí),動(dòng)態(tài)測試模塊的功能還在于能夠不斷生成新的測試用例,對目標(biāo)程序進(jìn)行持續(xù)的測試。本系統(tǒng)主要是在Windows異常處理平臺(tái)下實(shí)現(xiàn)了動(dòng)態(tài)測試模塊,主要通過對未執(zhí)行代碼塊中插入軟件斷點(diǎn)追蹤指令的執(zhí)行過程,并且對程序運(yùn)行時(shí)的異常情形進(jìn)行監(jiān)控。

        (1) 處理流程

        動(dòng)態(tài)測試模塊采用加載目標(biāo)程序的方式對目標(biāo)程序進(jìn)程測試。同時(shí),在創(chuàng)建目標(biāo)程序的進(jìn)程時(shí),通過DLL注入的方式實(shí)現(xiàn)對異常信息的監(jiān)控和對代碼覆蓋率的檢測功能。其具體處理流程如圖4所示。在程序碰到異常情形時(shí),首先通過注入的DLL判斷此處的異常是否是DLL注入時(shí)插入的指令造成的,如果是則恢復(fù)原先指令,記錄此時(shí)的狀態(tài)信息,以便分析代碼覆蓋率;否則的話,則認(rèn)為是程序中存在的安全問題觸發(fā)了此類異常,記錄測試用例、此時(shí)的寄存器和上下文信息,以便進(jìn)一步確認(rèn)該安全問題是一個(gè)程序漏洞。

        (2) 異常監(jiān)控

        異常監(jiān)控部分主要包含追蹤路徑初始化、基本代碼塊斷點(diǎn)設(shè)置和異常處理函數(shù)設(shè)置這兩個(gè)功能,其具體實(shí)現(xiàn)是通過DLL注入的方式對目標(biāo)程序的執(zhí)行進(jìn)程進(jìn)行監(jiān)控。

        (3) 代碼覆蓋率檢測

        在對基本代碼塊進(jìn)行斷點(diǎn)設(shè)置時(shí),根據(jù)BBL_INFO結(jié)構(gòu)中的isexecute字段判斷基本代碼塊是否執(zhí)行。對于已經(jīng)執(zhí)行的基本代碼塊,將其記錄在已測試基本代碼塊結(jié)構(gòu)中,然后在程序執(zhí)行完后,將記錄中的代碼塊與模塊中的所有代碼塊進(jìn)行比對,算出該模塊中的基本代碼塊代碼覆蓋率。

        4 系統(tǒng)測試與分析

        4.1 功能測試

        (1) 測試方法

        針對IE10,初始測試用例大小為21 824 B,指令記錄文件大小為53 323 MB, 共生成了625 369個(gè)測試用例,發(fā)現(xiàn)了24個(gè)異常。針對IE8,初始測試用例大小為21 824 B,指令記錄文件大小為23 954 MB,共生成了405 712個(gè)測試用例,發(fā)現(xiàn)異常數(shù)為31個(gè)。通過上述異常分析可以看到,IE8中的異常2和IE10中的異常2信息基本一致,都屬于訪問不可訪問內(nèi)存錯(cuò)誤,而其他異常信息也屬于此類錯(cuò)誤。為測試Fast Fuzzing系統(tǒng)的代碼覆蓋率情況,本測試中對比分析FileFuzz工具對IE8軟件的測試代碼覆蓋率情況,結(jié)果如表3所示。

        通過上述結(jié)果的對比,可以發(fā)現(xiàn)Fast Fuzzing相對于傳統(tǒng)的模糊測試工具而言,其在測試時(shí)覆蓋的代碼面更廣,能夠?qū)浖M(jìn)行更為全面的安全測試。

        5 結(jié) 論

        針對傳統(tǒng)模糊測試方法的不足,本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于軟件體系結(jié)構(gòu)的漏洞挖掘工具,并且結(jié)合了混合符號執(zhí)行技術(shù)和細(xì)粒度污點(diǎn)分析技術(shù),通過對這兩方法的反饋信息進(jìn)行深入分析,生成新的測試用例驅(qū)動(dòng)測試流程,從而大大地提高了測試時(shí)代碼的覆蓋率和測試效率。

        參考文獻(xiàn)

        [1] 楊世德,梁光明,余凱.基于ARM嵌入式系統(tǒng)底層漏洞挖掘技術(shù)研究[J].現(xiàn)代電子技術(shù),2015,38(18):94?96.

        [2] 蒲石,陳周國,祝世雄.震網(wǎng)病毒分析與防范[J].信息網(wǎng)絡(luò)安全,2012(2):40?43.

        [3] 王鐵磊.面向二進(jìn)制程序的漏洞挖掘關(guān)鍵技術(shù)研究[D].北京:北京大學(xué),2011.

        [4] 陳寶國.美國國家網(wǎng)絡(luò)安全戰(zhàn)略解析[J].信息網(wǎng)絡(luò)安全,2010(1):66?68.

        [5] BRUMLEY D, POOSANKAM P, SONG D, et al. Automatic patch?based exploit generation is possible: techniques and implications [C]// Proceedings of 2008 IEEE Symposium on Security and Privacy. [S.l.]: IEEE, 2008: 143?157.

        [6] BALAKRISHNAN G, REPS T, MELSKI D, et al. What you see is not what you execute [J]. ACM transactions on programming languages and systems, 2010, 32(6): 202?213.

        [7] WANG T L, WEI T, GU G F, et al. TaintScope: a checksumaware directed fuzzing tool for automatic software vulnerability detection [C]// Proceedings of 2010 IEEE Symposium on Security and Privacy. Oakland: IEEE, 2010: 497?512.

        [8] SONG D, BRUMLEY D, YIN H, et al. BitBlaze: a new approach to computer security via binary analysis [C]// Procee?dings of 2008 4th International Conference on Information Systems Security. Hyderabad: Springer, 2008: 1?25.

        猜你喜歡
        安全漏洞
        基于大數(shù)據(jù)技術(shù)的軟件安全漏洞自動(dòng)挖掘方法研究
        信息安全研究(2021年6期)2021-06-04 06:55:38
        計(jì)算機(jī)軟件中安全漏洞檢測技術(shù)的運(yùn)用初探
        安全漏洞國際披露政策研究
        基于模糊測試技術(shù)的軟件安全漏洞挖掘方法研究
        智能設(shè)備安全漏洞知多少
        安全漏洞太大亞馬遜、沃爾瑪和Target緊急下架這種玩具
        玩具世界(2018年6期)2018-08-31 02:36:26
        安全漏洞檢測技術(shù)在計(jì)算機(jī)軟件中的應(yīng)用
        基于安全漏洞掃描的校園網(wǎng)告警系統(tǒng)的開發(fā)與設(shè)計(jì)
        小洞不補(bǔ) 大洞吃苦安全漏洞你有嗎?
        亚洲熟伦在线视频| 久久久久无码国产精品一区| av永久天堂一区二区三区| 少妇无码一区二区三区免费| 在线观看av手机网址| 人妻丝袜中文字幕久久| 亚洲日产乱码在线中文字幕| 久久免费看黄a级毛片| 国产69精品久久久久久久| 国产成人精品一区二区视频| 国产福利美女小视频| 亚洲av免费看一区二区三区| 国产精品久久久久久久y| 亚洲国产av午夜福利精品一区| 日本a级一级淫片免费观看| 在办公室被c到呻吟的动态图| 无遮挡又黄又刺激又爽的视频| 尤物无码一区| 日本成年少妇人妻中文字幕| 国产午夜视频在线观看免费| 久久成人影院精品777| 一二三四在线视频社区3| 黑丝美女被内射在线观看| 成h视频在线观看免费| 亚洲国产美女精品久久久久∴| 无码a∨高潮抽搐流白浆| 91网红福利精品区一区二| 亚洲中文字幕综合网站| www夜插内射视频网站| 中文日韩亚洲欧美制服| 国产99页| 一级a免费高清免在线| 亚洲高清三区二区一区| 女人和拘做受全程看视频| 九九热在线视频观看这里只有精品| 亚洲专区在线观看第三页| 美女扒开内裤让我捅的视频| 成人乱码一区二区三区av| 亚洲av无码片一区二区三区| 一级做a爱视频在线播放| 亚洲一二三四区免费视频|