摘要:本文介紹了軟件脆弱性檢測方案,分別從污點分析、內(nèi)存定位和測試數(shù)據(jù)生成三個方面,分析了軟件脆弱性檢測關(guān)鍵技術(shù),在此基礎(chǔ)上,基于這些技術(shù),構(gòu)建相關(guān)系統(tǒng),并驗證系統(tǒng)在軟件脆弱性檢測中的應(yīng)用效果。結(jié)論證實,本次開發(fā)系統(tǒng)在軟件脆弱性檢測中有良好的效果,可以推廣使用。
關(guān)鍵詞:軟件;脆弱性;檢測技術(shù)
計算機(jī)現(xiàn)已成為人們?nèi)粘9ぷ?、學(xué)習(xí)和生活中,不可或缺的工具之一,計算機(jī)的各種功能都是通過應(yīng)用軟件來予以實現(xiàn)。如果軟件本身存在漏洞,那么會對計算機(jī)系統(tǒng)中的數(shù)據(jù)信息安全性構(gòu)成威脅。所以需要對軟件進(jìn)行脆弱性測試,根據(jù)測試結(jié)果,對軟件的性能進(jìn)行優(yōu)化,從而使其在滿足計算機(jī)應(yīng)用需求的前提下,保證系統(tǒng)安全。鑒于此,選擇合理可行的技術(shù),對軟件進(jìn)行脆弱性檢測顯得尤為必要。
1 軟件脆弱性檢測方案
軟件是計算機(jī)系統(tǒng)的重要組成部分之一,它是由數(shù)據(jù)和指令構(gòu)成,比較常見的有系統(tǒng)軟件,如Windows、LINUX等,應(yīng)用軟件。其中應(yīng)用軟件與計算機(jī)的使用功能密切相關(guān),尤其是在網(wǎng)絡(luò)、通信技術(shù)不斷發(fā)展的推動下,使得大量應(yīng)用軟件都具備了通信能力,與此同時,安全隱患隨之出現(xiàn)。為進(jìn)一步降低網(wǎng)絡(luò)通信軟件的安全威脅,應(yīng)當(dāng)及時發(fā)現(xiàn)軟件中存在的漏洞,這一目標(biāo)的實現(xiàn),需要借助相應(yīng)的測試技術(shù),比較常用的為Fuzzing(模糊測試)技術(shù)。從目前的情況來看,F(xiàn)uuing技術(shù)是軟件脆弱性檢測的主要手段。在對軟件脆弱性進(jìn)行研究中,具體的思路如下:借助內(nèi)存定位技術(shù),對軟件程序的內(nèi)部障礙點進(jìn)行準(zhǔn)確定位,在此基礎(chǔ)上,對軟件程序的脆弱性進(jìn)行間接檢測,當(dāng)發(fā)現(xiàn)軟件中存在漏洞之后,通過加密數(shù)據(jù)的重新構(gòu)建,完成漏洞驗證[1]。具體方案的實現(xiàn)中,需要運用到的關(guān)鍵技術(shù)包括污點分析優(yōu)化技術(shù)、內(nèi)存定位技術(shù)、測試數(shù)據(jù)生成技術(shù)。
2 軟件脆弱性檢測關(guān)鍵技術(shù)
2.1 污點分析優(yōu)化技術(shù)
在Fuzzing技術(shù),污點分析是基礎(chǔ)性技術(shù)之一,它能夠為內(nèi)存定位、測試數(shù)據(jù)生成等技術(shù)提供強(qiáng)有力的支撐。然而,從目前的情況來看,現(xiàn)有的污點分析技術(shù)存在一些缺陷,如耗時、性能不高等。為此,需要對該技術(shù)進(jìn)行優(yōu)化。具體的優(yōu)化思路如下:以靜態(tài)分析方法對污點在計算機(jī)網(wǎng)絡(luò)中的傳播過程進(jìn)行優(yōu)化,利用所得的結(jié)果對動態(tài)污點分析進(jìn)行指導(dǎo)。
2.1.1 優(yōu)化流程
當(dāng)需要對某個輸入數(shù)據(jù)進(jìn)行分析時,可對PIN(二進(jìn)制插樁工具)加以利用,通過跟蹤目標(biāo)軟件處理數(shù)據(jù)的過程,從而獲得基本塊信息。在這個過程當(dāng)中,因為除了插樁分析之外,不需要再進(jìn)行其它操作,所以能夠大幅降低時間開銷;借助基本塊信息,以翻譯的方法,可將之轉(zhuǎn)化為TIR(污染傳播中間表示);隨后可在TIR上對污點傳播的相關(guān)內(nèi)容進(jìn)行優(yōu)化,如消除死代碼、對傳播進(jìn)行復(fù)寫等,進(jìn)而得到經(jīng)過優(yōu)化以后的TIR,據(jù)此生成與插樁點信息相對應(yīng)的歷程函數(shù),以便后續(xù)調(diào)用;再次對軟件處理輸入數(shù)據(jù)的過程進(jìn)行跟蹤,按照靜態(tài)分析所得結(jié)果中的分析歷程,完成對數(shù)據(jù)的動態(tài)污點分析 [2]。
2.1.2 傳播優(yōu)化
對污點分析的優(yōu)化實質(zhì)上就是對傳播過程的優(yōu)化,在具體優(yōu)化時,TIR的位置會發(fā)生移動,其目的在于將無用的傳播過程去除掉。鑒于此,要對表達(dá)式中變量的生存周期加以明確,以此來確保傳播過程的一致性。由TIR可知,寄存器變量、內(nèi)存變量以及常量是表達(dá)式的基本構(gòu)成要素,而死代碼消除的思路為冗余代碼的消除,復(fù)寫傳播可以采用的算法為Copy Prop Taint[3]。
2.1.3優(yōu)化效果
為對優(yōu)化后的污點分析技術(shù)性能進(jìn)行驗證,以隨機(jī)的方式選取應(yīng)用軟件進(jìn)行測試,利用基本塊信息對數(shù)據(jù)進(jìn)行優(yōu)化,結(jié)果表明,經(jīng)過優(yōu)化后的污點分析技術(shù)的時間開銷大幅度減少,性能顯著提升,達(dá)到預(yù)期中的效果。
2.2 內(nèi)存定位技術(shù)
在測試數(shù)據(jù)生成中,定位解密數(shù)據(jù)是不可或缺的關(guān)鍵性依據(jù)。由于本文所研究的是軟件脆弱性檢測,所以內(nèi)存定位技術(shù)中的內(nèi)存主要是指解密數(shù)據(jù)所在的內(nèi)存,并不是計算機(jī)系統(tǒng)的內(nèi)存。內(nèi)存定位技術(shù)除了要具有通用性之外,還應(yīng)能夠?qū)崿F(xiàn)快速定位,基于這一前提,對該技術(shù)進(jìn)行具體分析。下面提出兩種解密內(nèi)存定位方法,一種是通用定位,該方法依托的是循環(huán)1/O,即輸入/輸出;另一種是快速定位,該方法基于的是高依賴度。
2.2.1通用定位法
本文提出的解密內(nèi)存通用定位的方法基于的是循環(huán)1/O的思路,具體而言,所有的數(shù)據(jù)在進(jìn)行加密和解密時,都需要進(jìn)行若干次迭代,也就是說,密碼函數(shù)的實現(xiàn)是以循環(huán)結(jié)構(gòu)為基礎(chǔ),而解密內(nèi)存則是在循環(huán)迭代中生成[4]。鑒于此,可對動態(tài)定位方法加以利用,以此來實現(xiàn)密碼函數(shù)循環(huán)結(jié)構(gòu)的定位,進(jìn)而分析該結(jié)構(gòu)中的1/O,收集與解密數(shù)據(jù)有關(guān)的內(nèi)存,最后依據(jù)解密數(shù)據(jù)本身所具備的特性,從而將解密內(nèi)存篩選出來。具體的定位流程如下:跟蹤密碼函數(shù)的執(zhí)行軌跡,并對循環(huán)結(jié)構(gòu)中的內(nèi)存參數(shù)進(jìn)行聚合,包括識別、構(gòu)建和合并,最后完成解密內(nèi)存的篩選。
2.2.2快速定位法
上文中以循環(huán)1/O為依托的定位方法通用性雖然比較強(qiáng),但在實際應(yīng)用中發(fā)現(xiàn),該方法存在一些不足,即必須對密碼函數(shù)進(jìn)行預(yù)先定位,以此來對后續(xù)的分析范圍進(jìn)行確定。不僅如此,還要對執(zhí)行軌跡進(jìn)行動態(tài)跟蹤,進(jìn)而完成對循環(huán)結(jié)構(gòu)的識別,整個流程的繁瑣程度比較高,進(jìn)一步增大了時間開銷。為縮短時間開銷,可以采取快速定位,該方法以高依賴度為基礎(chǔ),除了能夠?qū)饷軆?nèi)存進(jìn)行快速、準(zhǔn)確定位之外。同時,只需要在污點分析中完成定位即可。相關(guān)研究結(jié)果表明,依賴度本身具有迭代的特點,當(dāng)兩個內(nèi)存有著較高的依賴度關(guān)系時,與這兩個內(nèi)存中任意一個內(nèi)存相關(guān)的數(shù)據(jù),都與另一個內(nèi)存具有依賴關(guān)系。高依賴度是一個條件,它的存在能夠使數(shù)據(jù)與內(nèi)存之間相關(guān)聯(lián)。而定位必須確保準(zhǔn)確,所以還要設(shè)置相關(guān)的約束條件,包括解密內(nèi)存的字節(jié)≥4個;生成后能夠被讀取[5];同時定位多個高依賴度內(nèi)存,會將最先定位到視作為解密內(nèi)存。
2.2.3通用與快速定位的對比
兩種定位方法都存在一定的優(yōu)缺點,但確定都能對解密內(nèi)存進(jìn)行定位。故此需要二者的適用范圍進(jìn)行明確。通用定位法本身具有較強(qiáng)的通用性特點,對于絕大部分的解密內(nèi)存全部適用。而快速定位法的定位速度較快,能夠節(jié)省時間開銷,但卻并不適用于加密前的內(nèi)存和流密碼。鑒于此,若是流密碼,應(yīng)當(dāng)選擇通用定位法,如果為分組密碼,那么可以選用快速定位法。
2.3測試數(shù)據(jù)生成技術(shù)
在軟件脆弱性檢測中,測試數(shù)據(jù)生成是關(guān)鍵,上文的定位方法也是為生成服務(wù)。在此需要著重指出的一點是,以定位的方法獲得解密內(nèi)存只是生成測試數(shù)據(jù)的基礎(chǔ)條件,僅僅憑借這個條件,還無法基于加密的通信軟件,構(gòu)造出相應(yīng)的測試數(shù)據(jù)。所以,應(yīng)當(dāng)進(jìn)行分解重構(gòu),這樣才能順利完成軟件測試數(shù)據(jù)的生成。分解是重構(gòu)的依據(jù),分解時,要對加密和解密內(nèi)存進(jìn)行準(zhǔn)確定位,這是非常關(guān)鍵的環(huán)節(jié)[6] 。除此之外,還需要對完整性檢查點進(jìn)行定位。在對完整性進(jìn)行定位的過程中,可以采用快速定位法,當(dāng)需要將完整性檢查機(jī)制關(guān)閉時,則可繞過檢查點。在此著重闡明一點,通過對被測試軟件程序進(jìn)行修改,將完整性檢查功能禁用的主要目的是為了證明檢查點后有無漏洞,即以重構(gòu)的方法按預(yù)期目標(biāo)對樣本進(jìn)行解密。
3 軟件脆弱性檢測技術(shù)的具體應(yīng)用
依托上文的關(guān)鍵技術(shù),設(shè)計開發(fā)一套用于軟件脆弱性檢測的系統(tǒng),該系統(tǒng)的特點體現(xiàn)在如下幾個方面:可以對加密數(shù)據(jù)在軟件內(nèi)的污點傳播過程進(jìn)行跟蹤;能夠?qū)饷軆?nèi)存進(jìn)行自動定位等[7]。下面重點對系統(tǒng)的構(gòu)建及應(yīng)用進(jìn)行分析。
3.1系統(tǒng)構(gòu)建
3.1.1系統(tǒng)主要模塊
本次設(shè)計開發(fā)的系統(tǒng)采用較為流行的模塊化設(shè)計理念,整個系統(tǒng)由三個模塊組成,即動態(tài)分析模塊、數(shù)據(jù)定位模塊、測試模塊。各模塊的功能如下:
(1)動態(tài)分析模塊的主要功能是以插樁工具分析目標(biāo)軟件,對分析所得的信息進(jìn)行記錄,該模塊由跟蹤和記錄兩個子模塊構(gòu)成。
(2)數(shù)據(jù)定位模塊最為重要的功能是定位關(guān)鍵信息,該模塊由以下兩個子模塊組成:內(nèi)存定位、檢查點定位。
(3)測試模塊負(fù)責(zé)對軟件的脆弱性進(jìn)行檢測,這是整個系統(tǒng)的核心模塊,直接關(guān)系到檢測結(jié)果的準(zhǔn)確性。
3.1.2模塊設(shè)計
在本次開發(fā)的系統(tǒng)中,測試模塊是核心。因此,重點對該模塊的設(shè)計與實現(xiàn)過程進(jìn)行分析。系統(tǒng)的測試模塊能夠按照定位的解密內(nèi)存,對軟件進(jìn)行脆弱性測試,構(gòu)成測試模塊的子模塊有三個,分別為數(shù)據(jù)構(gòu)造、內(nèi)存測試和異常樣本修復(fù)。
(1)數(shù)據(jù)構(gòu)造模塊可以將經(jīng)過定位所得的解密內(nèi)存作為主要對象,據(jù)此生成能夠用于測試的具體用例。本系統(tǒng)在數(shù)據(jù)構(gòu)造方面采用的是污點分析的方法,由此能夠解決測試盲目性的問題[7]。其中污點分析是經(jīng)過優(yōu)化之后的技術(shù),對傳播過程的跟蹤,可得到數(shù)據(jù)輸入?yún)^(qū)域,并使測試用例對相關(guān)函數(shù)產(chǎn)生直接影響。
(2)內(nèi)存測試模塊的主要對象為解密內(nèi)存,針對該內(nèi)存進(jìn)行模糊測試,在這一過程中找出軟件內(nèi)部存在的漏洞,即脆弱點。Fuzzing技術(shù)可以借助恢復(fù)點,對軟件的指定內(nèi)存進(jìn)行自動變異,并在軟件運行到預(yù)先設(shè)定好的恢復(fù)點時,將軟件程序恢復(fù)到初始的狀態(tài)。在對恢復(fù)點進(jìn)行確定時,需要利用解密內(nèi)存的生成時機(jī),并按照測試深度,對恢復(fù)點進(jìn)行合理選擇。
(3)在本系統(tǒng)中,異常樣本修復(fù)模塊可用于加密后的樣本重構(gòu),它以通用定位法,對密碼函數(shù)所讀的內(nèi)存進(jìn)行準(zhǔn)確定位,并使該內(nèi)存與解密內(nèi)存相匹配,進(jìn)而獲得候選緩沖區(qū),再以回溯的方法,對會話數(shù)據(jù)進(jìn)行還原,當(dāng)該數(shù)據(jù)在源緩沖區(qū)內(nèi)生成后,可以按變異字段完成篡改,攔截發(fā)送函數(shù),據(jù)此得到的數(shù)據(jù)即為加密后的異常樣本。
3.2具體應(yīng)用
為驗證系統(tǒng)在軟件脆弱性方面的檢測能力,選取一款較為常用的通信軟件,軟件本身為網(wǎng)絡(luò)加密型,應(yīng)用該系統(tǒng)進(jìn)行測試分析。本次選擇的通信軟件為IRC軟件,該軟件為互聯(lián)網(wǎng)中繼聊天協(xié)議,是一款具有即時性特點的通信協(xié)議,為使通信過程的私密性得到有效保障,IRC服務(wù)器采用了數(shù)據(jù)加密技術(shù)。下面選取經(jīng)過SSL加密的IRC服務(wù)器軟件[8],運用本文開發(fā)的系統(tǒng),對其脆弱性進(jìn)行檢測,驗證系統(tǒng)的能力。
3.2.1 分解能力測試
隨機(jī)選取部分加密數(shù)據(jù)作為污染源,利用系統(tǒng)跟蹤軟件對這部分?jǐn)?shù)據(jù)的處理過程,依托快速定位法對解密內(nèi)存進(jìn)行定位,由定位結(jié)果可知,解密數(shù)據(jù)所在內(nèi)存的依賴度為Ox18。之后輸出若干個高依賴度的內(nèi)存,這部分內(nèi)存依賴度均高于解密內(nèi)存。若是將解密內(nèi)存視作為污染源,則經(jīng)計算所得的校驗值與解密內(nèi)存自帶的校驗值相等。由此說明,系統(tǒng)具備對軟件分解的能力。
3.2.2重構(gòu)能力測試
通過本文開發(fā)的系統(tǒng)對軟件進(jìn)行脆弱性測試的過程中,并未發(fā)現(xiàn)軟件中有異常樣本存在,導(dǎo)致這一情況的主要原因如下:本次選取的IRC協(xié)議過于簡單,加之測試空間有限,致使未能從中挖掘出漏洞;軟件應(yīng)用時間較長,經(jīng)過多次升級和維護(hù),存在漏洞的可能性比較小。雖然通過測試未能挖掘到軟件中的漏洞,但卻可以在測試的過程中,對系統(tǒng)重構(gòu)加密樣本的能力進(jìn)行驗證。具體方法如下:假設(shè)在服務(wù)端存在一個需要變異的字段,如果字段經(jīng)過加密處理后所得的數(shù)據(jù)包能夠通過完整性檢查,那么表明系統(tǒng)具備重構(gòu)能力。經(jīng)過驗證,系統(tǒng)重構(gòu)后的數(shù)據(jù)包順利通過完整性檢查,證明重構(gòu)有效。由此可見,本次開發(fā)的系統(tǒng)在軟件脆弱性測試中具有良好的效果,可以推廣使用。
4 結(jié)論
綜上所述,軟件脆弱性檢測是一項較為復(fù)雜的工作,為確保檢測結(jié)果的準(zhǔn)確性,應(yīng)當(dāng)選取合理可行的技術(shù),并以技術(shù)為支撐,構(gòu)建系統(tǒng),利用系統(tǒng)完成軟件脆弱性檢測,從而發(fā)現(xiàn)軟件中存在的漏洞,及時進(jìn)行優(yōu)化。
參考文獻(xiàn)
[1]牧濤,楊寧.基于激光技術(shù)的工控網(wǎng)絡(luò)信息脆弱性檢測方法研究[J].激光雜志,2020 (6):58-62.
[2]鮑海燕.集成化網(wǎng)絡(luò)存儲安全脆弱性區(qū)域的檢測仿真[J].計算機(jī)仿真,2019 (9):376-379.
[3]楊超,郭云飛,扈紅超,劉文彥,霍樹民等.基于符號執(zhí)行的軟件緩存?zhèn)刃诺来嗳跣詸z測技術(shù)[J].電子學(xué)報,2019 (6):1194-1200.
[4]王鈞玉.基于熵方法的計算機(jī)網(wǎng)絡(luò)脆弱性檢測和優(yōu)化[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報,2018 (2):1-4,8.
[5]劉玉敏,阮福,魯曉波,脆弱性網(wǎng)絡(luò)用戶信息安全性在線檢測仿真[J].計算機(jī)仿真,2018 (8):365-369.
[6]范銘,劉烴,劉均,羅夏樸,于樂等.安卓惡意軟件檢測方法綜述[J].中國科學(xué):信息科學(xué),2020 (8):1148-117 7.
[7]韓錦榮,張元瞳,朱子元,孟丹.基于底層數(shù)據(jù)流分析的惡意軟件檢測方法[J].信息安全學(xué)報,2020 (4):123-137.
[8]高楊晨,方勇,劉亮,張磊.基于卷積神經(jīng)網(wǎng)絡(luò)的Android惡意軟件檢測技術(shù)研究[J].四川大學(xué)學(xué)報(自然科學(xué)版),2020 (4):167 3-680.
作者簡介
傅偉玉(1980一),女,吉林省人。碩士學(xué)位,江蘇財經(jīng)職業(yè)技術(shù)學(xué)院,講師。研究方向為計算機(jī)技術(shù),軟件技術(shù)與理論。