国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于靜態(tài)檢測的模糊測試方法

      文檔序號:8259394閱讀:353來源:國知局
      一種基于靜態(tài)檢測的模糊測試方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,涉及一種軟件安全性分析測試方法,具體涉及一種基于靜態(tài)檢測的模糊測試方法,結(jié)合靜態(tài)檢測和模糊測試兩方面的優(yōu)勢分析軟件的安全性。
      【背景技術(shù)】
      [0002]隨著信息技術(shù)的快速發(fā)展,軟件大量的出現(xiàn)在工業(yè)領(lǐng)域、商業(yè)領(lǐng)域、軍事領(lǐng)域以及人民的日常生活中,軟件的安全性成為影響國計民生的大問題,軟件漏洞對各種社會活動的正常運轉(zhuǎn)造成極大的安全隱患,為攻擊者惡意入侵大開方便之門,成為木馬、病毒等惡意代碼肆意傳播的入口和途徑。隨著攻擊手段的發(fā)展,軟件的安全性問題日益突出。為及早發(fā)現(xiàn)軟件存在的安全性問題,應(yīng)進行軟件安全性測試。
      [0003]軟件的安全性測試可以分為針對源代碼的靜態(tài)分析和針對執(zhí)行進程的動態(tài)測試。靜態(tài)分析直接分析程序的源代碼,通過詞法分析、語法分析和靜態(tài)語義分析,檢測程序中潛在的漏洞。動態(tài)測試一般是通過在調(diào)試器中加載目標(biāo)程序并觀察程序在運行過程中的狀態(tài)(如寄存器內(nèi)容、內(nèi)存使用狀況等)以發(fā)現(xiàn)潛在的漏洞。模糊測試是動態(tài)測試的一種,是一種基于缺陷注入的自動軟件測試技術(shù),其通過模糊測試工具向目標(biāo)程序提供某種形式的輸入并觀察其響應(yīng)來發(fā)現(xiàn)問題,這種輸入可以是完全隨機的或精心構(gòu)造的。靜態(tài)分析技術(shù)和模糊測試技術(shù)經(jīng)過多年的發(fā)展,已經(jīng)形成多種相關(guān)產(chǎn)品,可以有效的對軟件的安全性進行測試,但是依然存在以下問題:
      [0004]單純的基于源代碼的靜態(tài)檢測結(jié)果具有誤報率高的缺點,且只能檢測已知漏洞模型的漏洞,檢測完成后,需要有經(jīng)驗的人員花費大量時間對檢測結(jié)果進行分析。
      [0005]模糊測試需采用隨機或者人為的方式構(gòu)造測試用例(用以進行測試的特定一系列操作行為和輸入值),當(dāng)異常發(fā)生后,需要測試人員對造成異常的數(shù)據(jù)包進行分析,發(fā)現(xiàn)軟件漏洞,模糊測試存在測試時間過長,測試針對性不強,測試效率。

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明針對上述安全性測試存在的問題,提出了一種基于靜態(tài)檢測的模糊測試方法,結(jié)合靜態(tài)檢測和模糊測試兩方面的優(yōu)勢,對軟件的安全性進行分析。
      [0007]基于靜態(tài)檢測的模糊測試主要結(jié)合源代碼靜態(tài)分析和可執(zhí)行代碼模糊測試,首先通過源代碼靜態(tài)分析相關(guān)軟件對目標(biāo)軟件進行靜態(tài)分析,模糊測試獲得靜態(tài)分析結(jié)果,然后對靜態(tài)分析認(rèn)為存在問題的代碼段進行插粧標(biāo)記,最后基于插粧標(biāo)記對測試用例進行變異,使測試用例能夠覆蓋存在問題的全部代碼段,加速模糊測試用例的收斂,從而有效地驗證了靜態(tài)分析的結(jié)果,提高模糊測試效率,測試框架如圖1所示。
      [0008]基于以上測試框架,基于靜態(tài)檢測的模糊測試方法主要包括源代碼分析和模糊測試。
      [0009](I)源代碼分析
      [0010]源代碼分析主要通過現(xiàn)有的源代碼檢測工具完成。首先需要對目標(biāo)軟件的源代碼進行建模,建模過程根據(jù)源代碼是否編譯執(zhí)行分成兩種情況考慮,對于需要編譯執(zhí)行的應(yīng)調(diào)用對應(yīng)的編譯工具進行建模,不需要進行編譯的則直接進行。隨后,加載不同的安全規(guī)則分析模型對源代碼進行分析,生成包含漏洞類型、漏洞位置、漏洞具體跟蹤信息等的源代碼分析結(jié)果。
      [0011](2)模糊測試
      [0012]首先建立源代碼和可執(zhí)行代碼的對應(yīng)關(guān)系表,源代碼分析可能產(chǎn)生漏洞的代碼段進行插粧,隨后運行目標(biāo)軟件的可執(zhí)行映像,加載模糊測試的初始測試用例,根據(jù)測試用例與源代碼分析漏洞結(jié)果的相關(guān)程度使用遺傳算法篩選測試用例,當(dāng)測試用例能夠覆蓋全部有問題的代碼段后篩選過程結(jié)束。
      [0013]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
      [0014]傳統(tǒng)的靜態(tài)檢測存在誤報率高的缺陷,而模糊測試技術(shù)由于采用隨機用例進行測試,測試效率比較低。本發(fā)明結(jié)合靜態(tài)檢測和模糊測試優(yōu)勢,通過模糊測試對靜態(tài)檢測進行驗證,排除靜態(tài)檢測的誤報情況。另一方面,利用靜態(tài)檢測的結(jié)果對模糊測試進行指導(dǎo),令模糊測試所使用的隨機測試用例更有針對性,提高了模糊測試的效率。
      【附圖說明】
      [0015]圖1為本發(fā)明所述方法的組成架構(gòu)圖;
      [0016]圖2為本發(fā)明所述方法的流程圖。
      【具體實施方式】
      [0017]下面結(jié)合附圖和【具體實施方式】對本發(fā)明做進一步說明。
      [0018]一種基于靜態(tài)檢測的模糊測試方法,流程圖2所示,包括以下步驟:
      [0019]步驟I,源代碼分析。
      [0020]步驟1.1,對目標(biāo)軟件的源代碼進行建模。
      [0021]對于非腳本類軟件系統(tǒng),首先利用相應(yīng)的編譯器,將源代碼轉(zhuǎn)換為抽象語法樹,然后在抽象語法樹的基礎(chǔ)上對軟件進行建模;對于腳本類軟件系統(tǒng),如:PHP軟件等,直接進行軟件建模。
      [0022]步驟1.2,對源代碼進行靜態(tài)安全分析。
      [0023]根據(jù)軟件代碼安全規(guī)則集,采用數(shù)據(jù)流分析引擎、語義分析引擎、程序結(jié)構(gòu)分析引擎、控制流分析引擎和配置分析引擎,從多個方面對步驟1.1建立的軟件源代碼模型進行安全分析,并生成分析結(jié)果。
      [0024]步驟2,模糊測試。
      [0025]步驟2.1,根據(jù)源代碼掃描結(jié)果的漏洞跟蹤信息,在漏洞觸發(fā)的調(diào)用路徑上進行插粧標(biāo)記。
      [0026]步驟2.2,對插粧后的代碼進行編譯鏈接生成可執(zhí)行映像,根據(jù)插粧標(biāo)記記錄對應(yīng)漏洞的可執(zhí)行代碼路徑;在隨后的模糊測試過程中,程序跟蹤器根據(jù)上述插粧信息判斷測試用例在執(zhí)行過程是否覆蓋漏洞路徑。
      [0027]步驟2.3,測試程序根據(jù)靜態(tài)分析結(jié)果的漏洞類型信息加載初始測試用例,并記錄每個測試用例覆蓋的漏洞路徑。由于每個漏洞對應(yīng)的漏洞路徑包含主函數(shù),所以測試用例必然至少覆蓋部分漏洞路徑。
      [0028]步驟2.4,根據(jù)覆蓋的漏洞、覆蓋的漏洞路徑長度進行測試用例的淘汰:要求每個漏洞最多被k個測試用例所覆蓋;如果某個漏洞可被k+Ι個測試用例覆蓋,則刪除該漏洞覆蓋長度最短的測試用例。k為測試時設(shè)置的整數(shù)參量,k值越大分析時間越長,消耗資源越多,漏洞分析結(jié)果越顯著。
      [0029]步驟2.5,對測試用例進行隨機變異,即對測試用例中一個或者多個數(shù)據(jù)段的長度和內(nèi)容進行隨機變化。如:在指定的測試用例中任選m個字節(jié),將上述每個字節(jié)數(shù)據(jù)轉(zhuǎn)換為全I(xiàn)。
      [0030]步驟2.6,加載轉(zhuǎn)換的測試用例并記錄測試用例覆蓋的漏洞路徑,并跳轉(zhuǎn)到步驟
      2.4繼續(xù)執(zhí)行,直到每個漏洞都可被k個測試用例完全覆蓋。
      [0031]步驟1.1所述的編譯器包括GCC編譯器、.NET編譯器和JAVA編譯器等。
      [0032]步驟1.2所述的生成分析結(jié)果包括漏洞類型、漏洞位置、漏洞具體跟蹤信息等。
      [0033]步驟2.1所述的插粧的位置包括主函數(shù)、分支語句、函數(shù)調(diào)用和觸發(fā)漏洞的語句。
      [0034]步驟2.3所述的靜態(tài)分析結(jié)果的漏洞類型信息包括緩沖區(qū)溢出、資源泄露、命令注入等。
      【主權(quán)項】
      1.一種基于靜態(tài)檢測的模糊測試方法,其特征在于包括以下步驟: 步驟I,源代碼分析; 步驟1.1,對目標(biāo)軟件的源代碼進行建模; 對于非腳本類軟件系統(tǒng),首先利用相應(yīng)的編譯器,將源代碼轉(zhuǎn)換為抽象語法樹,然后在抽象語法樹的基礎(chǔ)上對軟件進行建模;對于腳本類軟件系統(tǒng),直接進行軟件建模; 步驟1.2,對源代碼進行靜態(tài)安全分析; 根據(jù)軟件代碼安全規(guī)則集,采用數(shù)據(jù)流分析引擎、語義分析引擎、程序結(jié)構(gòu)分析引擎、控制流分析引擎和配置分析引擎,從多個方面對步驟1.1建立的軟件源代碼模型進行安全分析,并生成分析結(jié)果; 步驟2,模糊測試; 步驟2.1,根據(jù)源代碼掃描結(jié)果的漏洞跟蹤信息,在漏洞觸發(fā)的調(diào)用路徑上進行插粧標(biāo)記; 步驟2.2,對插粧后的代碼進行編譯鏈接生成可執(zhí)行映像,根據(jù)插粧標(biāo)記記錄對應(yīng)漏洞的可執(zhí)行代碼路徑;在隨后的模糊測試過程中,程序跟蹤器根據(jù)上述插粧信息判斷測試用例在執(zhí)行過程是否覆蓋漏洞路徑; 步驟2.3,測試程序根據(jù)靜態(tài)分析結(jié)果的漏洞類型信息加載初始測試用例,并記錄每個測試用例覆蓋的漏洞路徑; 步驟2.4,根據(jù)覆蓋的漏洞、覆蓋的漏洞路徑長度進行測試用例的淘汰:每個漏洞最多被k個測試用例所覆蓋;如果某個漏洞可被k+Ι個測試用例覆蓋,則刪除該漏洞覆蓋長度最短的測試用例;k為測試時設(shè)置的整數(shù)參量,k值越大分析時間越長,消耗資源越多,漏洞分析結(jié)果越顯著; 步驟2.5,對測試用例進行隨機變異,即對測試用例中一個或者多個數(shù)據(jù)段的長度和內(nèi)容進行隨機變化; 步驟2.6,加載轉(zhuǎn)換的測試用例并記錄測試用例覆蓋的漏洞路徑,并跳轉(zhuǎn)到步驟2.4繼續(xù)執(zhí)行,直到每個漏洞都可被k個測試用例完全覆蓋。
      2.根據(jù)權(quán)利要求1所述的一種基于靜態(tài)檢測的模糊測試方法,其特征在于,步驟1.1所述的編譯器包括GCC編譯器、.NET編譯器和JAVA編譯器。
      3.根據(jù)權(quán)利要求1所述的一種基于靜態(tài)檢測的模糊測試方法,其特征在于,步驟1.2所述的生成分析結(jié)果包括漏洞類型、漏洞位置和漏洞具體跟蹤信息。
      4.根據(jù)權(quán)利要求1所述的一種基于靜態(tài)檢測的模糊測試方法,其特征在于,步驟2.1所述的插粧的位置包括主函數(shù)、分支語句、函數(shù)調(diào)用和觸發(fā)漏洞的語句。
      5.根據(jù)權(quán)利要求1所述的一種基于靜態(tài)檢測的模糊測試方法,其特征在于,步驟2.3所述的靜態(tài)分析結(jié)果的漏洞類型信息包括緩沖區(qū)溢出、資源泄露和命令注入。
      【專利摘要】本發(fā)明屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,涉及一種基于靜態(tài)檢測的模糊測試方法。所述方法包括源代碼靜態(tài)分析和可執(zhí)行代碼模糊測試。首先通過源代碼靜態(tài)分析相關(guān)軟件對目標(biāo)軟件進行靜態(tài)分析,模糊測試獲得靜態(tài)分析結(jié)果,然后對靜態(tài)分析認(rèn)為存在問題的代碼段進行插樁標(biāo)記,最后基于插樁標(biāo)記對測試用例進行變異,使測試用例能夠覆蓋存在問題的全部代碼段。本發(fā)明結(jié)合靜態(tài)檢測和模糊測試優(yōu)勢,通過模糊測試對靜態(tài)檢測進行驗證,排除靜態(tài)檢測的誤報情況。另一方面,利用靜態(tài)檢測的結(jié)果對模糊測試進行指導(dǎo),令模糊測試所使用的隨機測試用例更有針對性,提高了模糊測試的效率??朔瞬捎秒S機用例進行測試的傳統(tǒng)方法中存在的誤報率高、檢測效率低等缺點。
      【IPC分類】G06F21-57
      【公開號】CN104573524
      【申請?zhí)枴緾N201410799828
      【發(fā)明人】常承偉, 吳明杰, 王澤玉, 溫泉, 施學(xué)成, 王斌, 陳志浩
      【申請人】中國航天科工集團第二研究院七〇六所
      【公開日】2015年4月29日
      【申請日】2014年12月19日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1