專利名稱:一種基于場景模型的軟件漏洞分析方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,特別是一種面向B/S架構(gòu)的軟件漏洞分析方法。
背景技術(shù):
軟件的安全漏洞威脅著網(wǎng)絡(luò)信息安全,給惡意攻擊者提供可乘之機,為木馬、病毒等惡意代碼肆意傳播大開方便之門,隨著軟件工業(yè)的發(fā)展,軟件安全漏洞的問題日益突出。為及早發(fā)現(xiàn)修補軟件漏洞,首先需要對軟件的安全漏洞進行測試驗證。軟件漏洞分析驗證技術(shù)通過對軟件腳本代碼和運行時行為狀態(tài)進行測試分析,發(fā)現(xiàn)觸發(fā)軟件漏洞的數(shù)據(jù),定位軟件漏洞在代碼中的位置,為修補軟件漏洞提供依據(jù)。目前軟件漏洞測試驗證方法主要分為2類靜態(tài)檢測和動態(tài)檢測。從應(yīng)用的角度看目前還存在以下不足測試對象單一目前的漏洞分析驗證技術(shù)主要針對具體的軟件、協(xié)議、開發(fā)語言等,通用性不強,難以適用于快速發(fā)展的軟件工業(yè)。發(fā)現(xiàn)的漏洞類型簡單目前的漏洞測試驗證只能發(fā)現(xiàn)簡單的無狀態(tài)型漏洞,難于發(fā)現(xiàn)隱性的權(quán)限提升類漏洞。缺少深度測試漏洞分析技術(shù)主要針對特定的接口、數(shù)據(jù),基于特定的代碼模式和行為模式等進行漏洞分析,缺乏針對多種分析方法的綜合使用。
發(fā)明內(nèi)容
本發(fā)明就是為了解決上述問題,提出一種漏洞測試驗證方法,從軟件系統(tǒng)的代碼、模塊、接口等多個方面入手,對軟件系統(tǒng)的漏洞進行測試驗證,定位漏洞位置。本發(fā)明的特征在于,所述場景模型C的數(shù)學(xué)表達式為C= {P,F(xiàn),R,M,其中P表示軟件系統(tǒng)的路徑path集合,F(xiàn)表示軟件系統(tǒng)文件名file集合,R是軟件系統(tǒng)中軟件使用的參數(shù)para集合,\是用于描述場景間的直接調(diào)用關(guān)系的{P,F(xiàn),R}-> {P,F(xiàn),R}的映射,所述的一種基于場景的軟件漏洞分析方法是一種面向瀏覽器B/服務(wù)器S架構(gòu)的軟件漏洞分析方法,是在互聯(lián)網(wǎng)中的一個基于場景的軟件漏洞分析系統(tǒng)中依次按以下步驟實現(xiàn)的步驟(I),構(gòu)建所述的基于場景的軟件漏洞分析系統(tǒng),設(shè)立軟件靜態(tài)分析模塊、場景建模模塊、測試控制模塊、測試數(shù)據(jù)加載模塊、測試用例庫以及軟件通信模塊,其中 軟件靜態(tài)分析模塊,對軟件的可執(zhí)行代碼的語句逐條進行分析,得到軟件的執(zhí)行路徑、用以標記軟件的人機接口代碼,與其他軟件交互的數(shù)據(jù)接口代碼,從中獲取包括軟件開發(fā)語言、運行平臺、數(shù)據(jù)庫、組成文件、功能所用技術(shù)以及用戶幾口在內(nèi)的軟件參數(shù)信息,場景建模模塊,從所述軟件靜態(tài)分析模塊輸入所屬軟件參數(shù)信息按照軟件的組成文件。功能調(diào)用參數(shù)建立軟件的用戶狀態(tài)集合,得到軟件場景模型,測試控制模塊,根據(jù)從所述軟件靜態(tài)分析模塊輸入的軟件基本信息從測試用例庫中選擇初始測試用例,同事根據(jù)從所述場景建模模塊輸入的軟件場景模型控制軟件加載數(shù)據(jù)的加載策略,測試數(shù)據(jù)加載模塊解析測試用例庫中的測試用例并把測試數(shù)據(jù)庫判入到所述目標軟件中,同時根基測試數(shù)據(jù)生成策略對測試數(shù)據(jù)進行變換的適應(yīng)具體軟件,步驟(2),在所述的基于場景的軟件漏洞分析系統(tǒng)中依次按以下步驟對所述的瀏覽器B/服務(wù)器S架構(gòu)的軟件進行漏洞分析;步驟(2. 1),所述軟件靜態(tài)分析模塊,按以下步驟掃描軟件代碼,構(gòu)建目標軟件系統(tǒng)的場景參數(shù)集合步驟(2.1. 1),掃描并分析待分析的目標軟件的代碼,得到并分析可執(zhí)行文件的后綴名,再按后綴名的異同進行初步的場景劃分,所述可執(zhí)行文件至少包括jsp類型文件、asp類型文件、aspx類型文件、php類型文件、pi類型文件;步驟(2.1. 2),對步驟(2.1.1)中進行場景劃分名的各類可執(zhí)行文件進行遍歷、獲取各類可執(zhí)行文件的參數(shù)變量,建立各類可執(zhí)行文件的參數(shù)列表,步驟(2.1. 3),對于每一類內(nèi)各可執(zhí)行文件在所調(diào)用的參數(shù)數(shù)量、參數(shù)名稱上的差異,再次進行類內(nèi)場景劃分,從而構(gòu)建出以可執(zhí)行文件名,調(diào)用參數(shù)列表為標識的軟件系統(tǒng)場景參數(shù)集合E :E = {P,F(xiàn),R,H},其中所述Path G P,file G F,para G R,H是場景的特征char集合,char G H,所述場景的特征至少包括軟件開發(fā)語言、運行平臺、數(shù)據(jù)庫、組成文件、功能調(diào)用參數(shù)以及用戶接口,步驟(2. 2)所述場景建模模塊對輸入的所述軟件基本信息中的軟件代碼進行分析,建立場景模型C 遍歷目標軟件系統(tǒng)內(nèi)的每個可執(zhí)行文件,對所述每類目標軟件的跳轉(zhuǎn)指合,調(diào)用指合、條用指合進行分析,通過其中對觸發(fā)GET協(xié)議、POST協(xié)議操作的語句進行分析,提取各GET協(xié)議、POST協(xié)議提交的文件路徑及參數(shù),通過分場景參數(shù)集合S中的三元組{P,F(xiàn),R}進行比對,完全相同的則建立反映二個場景問的調(diào)用關(guān)系的軟件場景模型C,C= {P,F(xiàn),R,入},已如上述;步驟(2. 3)所述測試控制模塊運行用戶部署的軟件系統(tǒng),記錄軟件行為步驟(2.3. 1),所述軟件靜態(tài)分析模塊向所述測試控制模塊輸入目標軟件基本信息,所述場景建模模塊向所述測試控制系統(tǒng)輸入所述目標軟件的軟件場景模型,步驟(2. 3. 2),用戶想所述測試控制模塊部署用戶軟件系統(tǒng),輸入測試奇數(shù),并反問所述用戶軟件系統(tǒng)的各個功能,同事加載瀏覽器調(diào)試器監(jiān)視說書用戶軟件系統(tǒng)運行,步驟(2. 3. 3)所述用戶軟件系統(tǒng)內(nèi)的軟件,根據(jù)用戶的每次請求返回如下各種不同的對應(yīng)結(jié)果若超級文本傳輸協(xié)議HTTP返回的編碼為200,貝IJ,用戶本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的用戶請求文件,參數(shù)值以及變化前后的場景,若所述HTTP返回的編碼為400、401、403中的任何一種,貝U,用戶本次請求導(dǎo)致的場景切換失敗,不記錄,
若所述HTTP返回的編碼是500,則,可能已經(jīng)觸發(fā)漏洞,記錄相應(yīng)的用戶請求文件,參數(shù)值以及變化前后的場景,并標記漏洞觸發(fā)數(shù)據(jù),步驟(2. 3. 4)除了切換失敗及成功的場景以外,去除步驟(2. 3. 3)中具有相同的場景轉(zhuǎn)化關(guān)系和相同參數(shù)值的以序列形成表述的場景變化,簡化場景變化序列,用I表示其結(jié)果,步驟(2. 3. 5)用戶把所有的軟件的功能至少運行使用一次,形成初始測試場景U U = {S。,E,I},其中S0 :初始測試場景中的所有場景參數(shù)集合,E :用戶提交的數(shù)據(jù)資源集合,1:簡化后的場景變化序數(shù),步驟(2. 4)所述測試數(shù)據(jù)加載模塊依次按以下步驟按照用戶軟件的特征,選擇初始測試用例;步驟(2. 4.1),從用戶輸入的測試參數(shù)中獲取用戶軟件系統(tǒng)開發(fā)語言,運行平臺和數(shù)據(jù)庫類型,步驟(2. 4. 2),從步驟(2. 3. 5)獲取的所述初始測試場景U中的具體參數(shù)值中得到參數(shù)的類型,其中至少包括整型,字符型以及二進制型中的一種或一種以上,步驟(2. 4.3),按照步驟(2.4.2)中的具體參數(shù)從所述測試用例庫中選擇同類的測試用例,針對相應(yīng)的參數(shù)進行數(shù)據(jù)加載測試,同時加載監(jiān)視器監(jiān)視場景變化,步驟(2. 4. 4),在步驟(2. 4. 3)加載測試用例過程中,得到如下不同的結(jié)果若所述HTTP返回的編碼是200,則,用戶本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的請求文件,參數(shù)值以及變化前后的場景,若所述HTTP返回的編碼是400、401、403中的任何一種,貝U,用戶本次請求導(dǎo)致的場景切換失敗,不記錄,若所述HTTP返回的編碼是500,則,可能已觸發(fā)漏洞,記錄相應(yīng)的用戶請求文件、參數(shù)值以及變化前后的場景,并標記漏洞觸發(fā)參數(shù),步驟(2. 4. 5),把步驟(2. 4. 4)產(chǎn)生異常行為及異常場景轉(zhuǎn)換的數(shù)據(jù)添加到所述測試用例庫中,并記錄對應(yīng)的用戶軟件信息,包括軟件開發(fā)語言運行平臺、數(shù)據(jù)庫的基本信息在場景轉(zhuǎn)換中減少的參數(shù)類型,以及修改的包括常量參數(shù)在內(nèi)的參數(shù)類型及對應(yīng)的參數(shù)值,步驟(2. 4. 6),所述測試數(shù)據(jù)加載模塊向所述軟件通信模塊把云發(fā)送請求;獲準后,到云基于場景的漏洞分析數(shù)據(jù)。在步驟(2. 4. 5)后,增加下述一個步驟按以下測試策略調(diào)整用戶到入的測試數(shù)據(jù)集合E,并返回步驟(2. 4.1),重新測試,一直到場景切換成功為止;不按照在目標軟件系統(tǒng)場景模型中的場景轉(zhuǎn)換類系進行場景功能調(diào)用,或者通過減少調(diào)用參數(shù)來進行場景功能調(diào)用,或者多次隨機修改場景轉(zhuǎn)換過程中的變
量參數(shù)。
本發(fā)明可以對基于B/S架構(gòu)的具有多級權(quán)限的軟件系統(tǒng)進行漏洞分析。
圖1,本發(fā)明所述基于場景模型的軟件漏洞分析系統(tǒng)的框圖,圖2,本發(fā)明的程序流程框圖。
具體實施例方式一種基于場景的軟件漏洞分析系統(tǒng),包括軟件靜態(tài)分析模塊1、場景建模模塊2、測試控制模塊3、測試數(shù)據(jù)加載模塊4、軟件運行監(jiān)視模塊5、軟件通信模塊6。(I)軟件靜態(tài)分析模塊軟件靜態(tài)分析模塊主要功能是將軟件的可執(zhí)行代碼的語句逐條分析得到軟件的執(zhí)行路徑,標記軟件的人機接口代碼以及與其他軟件交互的數(shù)據(jù)接口代碼,獲取軟件開發(fā)語言、運行平臺、數(shù)據(jù)庫、組成文件、功能調(diào)用參數(shù)、用戶接口等信息。(2)場景建模模塊場景建模模塊主要功能是根據(jù)場景軟件靜態(tài)分析模塊的結(jié)果,按照軟件的組成文件、功能調(diào)用參數(shù)建立軟件的用戶狀態(tài)集合。(3)測試控制模塊測試控制模塊主要功能是根據(jù)軟件基本信息選擇初始的測試用例,同時根據(jù)軟件場景模型控制軟件測試數(shù)據(jù)的加載策略。(4)測試數(shù)據(jù)加載模塊測試數(shù)據(jù)加載模塊的主要功能是解析用例庫中的用例并將用例測試數(shù)據(jù)輸入到軟件中,同時根據(jù)測試數(shù)據(jù)生成策略對測試數(shù)據(jù)進行變換以適應(yīng)具體軟件。(5)軟件運行監(jiān)視模塊軟件運行監(jiān)視模塊主要功能是分析測試數(shù)據(jù)的返回結(jié)果,跟蹤軟件執(zhí)行狀態(tài)。(6)軟件通信模塊軟件通信模塊主要功能是屏蔽具體軟件的差異性,實現(xiàn)與目標軟件的通信功能。下面結(jié)合流程圖,對基于場景的漏洞測試驗證技術(shù)做詳細說明,應(yīng)該強調(diào)的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。步驟1:掃描軟件代碼,通過分析掃描得到的執(zhí)行文件,獲取可執(zhí)行文件數(shù)據(jù)接口、參數(shù)信息,并根據(jù)不同可執(zhí)行文件、數(shù)據(jù)接口、參數(shù)的不同組合初步構(gòu)建軟件系統(tǒng)的場景參數(shù)集合。具體步驟如下I)遍歷根據(jù)系統(tǒng)包含的可執(zhí)行文件(包括jsp類型腳本文件、asp類型腳本文件、aspx類型腳本文件、php類型腳本文件、pi類型腳本文件等),根據(jù)文件后綴名進行初步的場景劃分;2)遍歷每類可執(zhí)行文件,獲取可執(zhí)行文件的參數(shù)變量,建立可執(zhí)行文件的參數(shù)列表;3)根據(jù)可執(zhí)行文件之間的調(diào)用的參數(shù)差異對上述基于文件建立的場景再次進行場景劃分,參數(shù)差異包括參數(shù)數(shù)量、參量名稱;通過上述兩步操作操作,構(gòu)建出以文件名,調(diào)用參數(shù)列表為標識的軟件系統(tǒng)的場景參數(shù)集合,每個場景的表示如下所示K= {x I X = (path, file,para, char) ,path G P,file G F,para G R, char G Q};其中K是軟件系統(tǒng)場景參數(shù)集合,P是軟件系統(tǒng)文件路徑集合,F(xiàn)是軟件系統(tǒng)文件名集合,R是軟件系統(tǒng)中軟件使用的參數(shù)集合,Q是場景的特征集合。步驟2 :通過對目標軟件代碼的跳轉(zhuǎn)指令、調(diào)用指令部分進行分析,獲取可執(zhí)行文件以及功能函數(shù)之間的調(diào)用關(guān)系、調(diào)用方法、調(diào)用參數(shù)。結(jié)合步驟I中獲取的場景參數(shù)集合,按照文件名、功能函數(shù)標識、參數(shù)建立場景的調(diào)用關(guān)系,初步完整建立軟件場景參數(shù)集
入
口 o具體步驟如下遍歷目標軟件系統(tǒng)內(nèi)可執(zhí)行文件,對觸發(fā)GET傳輸協(xié)議、POST傳輸協(xié)議操作的語句進行分析,提取協(xié)議提交的文件路徑及參數(shù),通過與場景集合的三元組(path,file,para)進行比對,完全相同的則建立兩個場景間的調(diào)用關(guān)系,從而建立軟件場景模型的調(diào)用關(guān)系;軟件系統(tǒng)場景C的數(shù)學(xué)表示如下C = {P,F(xiàn),R,入}其中P表示軟件系統(tǒng)的文件路徑集合,F(xiàn)表示軟件系統(tǒng)文件名稱的集合,R表示軟件系統(tǒng)中軟件使用的參數(shù)集合,、是{P,F(xiàn),R} — {P,F(xiàn),R}的映射,用于描述場景間的直接調(diào)用關(guān)系。步驟3 :運行目標軟件系統(tǒng),通過加載調(diào)試器監(jiān)視目標軟件系統(tǒng)運行,同時由測試人員參與對軟件系統(tǒng)進行正常的配置使用,由調(diào)試器記錄軟件行為及各個場景使用的資源以及調(diào)用條件,并形成初始測試記錄。具體步驟如下所示I)用戶部署軟件系統(tǒng),并訪問軟件系統(tǒng)的各個功能,同時加載瀏覽器調(diào)試器監(jiān)視軟件運行;2)軟件會根據(jù)用戶的每次請求返回相應(yīng)的結(jié)果,如果HTTP返回編碼是200等,則本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的請求文件、參數(shù)值、變化前后的場景;如果HTTP返回編碼是400、401、403等,則本次請求導(dǎo)致的場景切換失敗,不進行記錄;如果HTTP返回編碼是500等,可能已經(jīng)觸發(fā)漏洞,記錄相應(yīng)的請求文件、參數(shù)值、變化前后的場景,并標記漏洞觸發(fā)數(shù)據(jù)。3)對軟件場景的變化序列進行簡化,通過去除具有相同的場景轉(zhuǎn)換關(guān)系和相同的參數(shù)值的場景變化序列來簡化場景變化序列;4)建立的初始場景應(yīng)覆蓋所有的軟件場景,即用戶將所有的軟件功能至少運行使
用一次。最后形成的初始測試場景表示方式如下U = {S0, E, 1}U是初始測試場景,S0是初始測試場景中的所有場景集合,E是用戶提交的數(shù)據(jù)資源集合,I是經(jīng)過簡化的場景變化序列。步驟4:待測試人員在運行時覆蓋了所有軟件功能之后,根據(jù)軟件系統(tǒng)的開發(fā)語言、運行平臺等因素,針對不同功能接口的輸入?yún)?shù)類型加載相應(yīng)的測試數(shù)據(jù),對系統(tǒng)進行模糊測試,并監(jiān)聽分析軟件系統(tǒng)的行為及反饋信息,記錄在步驟3中測試人員使用各類功能尚未出現(xiàn)的行為、反饋信息及場景間的轉(zhuǎn)換關(guān)系作為疑似的漏洞觸發(fā)。本步驟測試通過按照下面規(guī)則自動提交用戶請求,具體步驟如下I)從用戶輸入的測試參數(shù)獲取軟件系統(tǒng)的軟件開發(fā)語言、運行平臺、使用的數(shù)據(jù)庫類型;2)從步驟3獲取的具體參數(shù)值獲取參數(shù)類型(如整型、字符型、二進制型等);3)根據(jù)上述數(shù)據(jù)選擇已分類的測試用例,針對相應(yīng)的變量類型進行加載測試,同時加載監(jiān)視器監(jiān)視場景變化;4)在上述加載測試用例的過程中,如果HTTP返回編碼是200,則本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的請求文件、參數(shù)值、變化前后的場景;如果HTTP返回編碼是400、401、403等,則本次請求導(dǎo)致的場景切換失敗,不進行記錄;如果HTTP返回編碼是500,可能已經(jīng)觸發(fā)漏洞,記錄相應(yīng)的請求文件、參數(shù)值、變化前后的場景,并標記漏洞觸發(fā)數(shù)據(jù)步驟5 :在測試過程中,根據(jù)觸發(fā)的場景轉(zhuǎn)換,調(diào)整生成的測試數(shù)據(jù),使軟件系統(tǒng)的所有場景的功能、參數(shù)經(jīng)歷集中的模糊測試。具體的測試策略如下I)不按照在軟件系統(tǒng)場景模型中的場景轉(zhuǎn)換關(guān)系進行場景功能調(diào)用;2)通過減少調(diào)用參數(shù)進行場景功能調(diào)用;3)多次隨機修改場景轉(zhuǎn)換過程中的變量參數(shù);步驟6 :在測試過程中,將產(chǎn)生異常行為及異常場景轉(zhuǎn)換的數(shù)據(jù)添加到測試用例庫中并記錄對應(yīng)的目標軟件信息,提升測試用例庫的測試能力及相關(guān)軟件系統(tǒng)的適應(yīng)性。針對導(dǎo)致異常場景的每次測試請求,具體記錄內(nèi)容如下I)開發(fā)語言、運行平臺、數(shù)據(jù)庫基本信息;2)在場景轉(zhuǎn)換過程中,減少的參數(shù)類型;3)修改的參數(shù)類型(包含“常量參數(shù)”)及對應(yīng)的參數(shù)值。
權(quán)利要求
1.一種基于場景模型的軟件漏洞分析方法,其特征在于所述場景模型C的數(shù)學(xué)表達式為C= {P,F(xiàn),R,入},其中P表示軟件系統(tǒng)的路徑path集合,F(xiàn)表示軟件系統(tǒng)文件名file集合,R是軟件系統(tǒng)中軟件使用的參數(shù)para集合,\是用于描述場景間的直接調(diào)用關(guān)系的{P,F(xiàn),R}-> {P,F(xiàn),R}的映射,所述的一種基于場景的軟件漏洞分析方法是一種面向瀏覽器B/服務(wù)器S架構(gòu)的軟件漏洞分析方法,是在互聯(lián)網(wǎng)中的一個基于場景的軟件漏洞分析系統(tǒng)中依次按以下步驟實現(xiàn)的 步驟(I),構(gòu)建所述的基于場景的軟件漏洞分析系統(tǒng),設(shè)立軟件靜態(tài)分析模塊、場景建模模塊、測試控制模塊、測試數(shù)據(jù)加載模塊、測試用例庫以及如阿年通信模塊,其中軟件靜態(tài)分析模塊,對軟件的可執(zhí)行代碼的語句逐條進行分析,得到軟件的執(zhí)行路徑、用以標記軟件的人機接口代碼,與其他軟件交互的數(shù)據(jù)接口代碼,從中獲取包括軟件開發(fā)語言、運行平臺、數(shù)據(jù)庫、組成文件、功能所用技術(shù)以及用戶幾口在內(nèi)的軟件參數(shù)信息,場景建模模塊,從所述軟件靜態(tài)分析模塊輸入所屬軟件參數(shù)信息按照軟件的組成文件。功能調(diào)用參數(shù)建立軟件的用戶狀態(tài)集合,得到軟件場景模型, 測試控制模塊,根據(jù)從所述軟件靜態(tài)分析模塊輸入的軟件基本信息從測試用例庫中選擇初始測試用例,同事根據(jù)從所述場景建模模塊輸入的軟件場景模型控制軟件加載數(shù)據(jù)的加載策略, 測試數(shù)據(jù)加載模塊解析測試用例庫中的測試用例并把測試數(shù)據(jù)庫判入到所述目標軟件中,同時根基測試數(shù)據(jù)生成策略對測試數(shù)據(jù)進行變換的適應(yīng)具體軟件, 步驟(2),在所述的基于場景的軟件漏洞分析系統(tǒng)中依次按以下步驟對所述的瀏覽器B/服務(wù)器S架構(gòu)的軟件進行漏洞分析; 步驟(2.1),所述軟件靜態(tài)分析模塊,按以下步驟掃描軟件代碼,構(gòu)建目標軟件系統(tǒng)的場景參數(shù)集合 步驟(2.1.1),掃描并分析待分析的目標軟件的代碼,得到并分析可執(zhí)行文件的后綴名,再按后綴名的異同進行初步的場景劃分,所述可執(zhí)行文件至少包括jsp類型文件、asp類型文件、aspx類型文件、php類型文件、pi類型文件, 步驟(2.1. 2),對步驟(2.1.1)中進行場景劃分名的各類可執(zhí)行文件進行遍歷、獲取各類可執(zhí)行文件的參數(shù)變量,建立各類可執(zhí)行文件的參數(shù)列表, 步驟(2.1. 3),對于每一類內(nèi)各可執(zhí)行文件在所調(diào)用的參數(shù)數(shù)量、參數(shù)名稱上的差異,再次進行類內(nèi)場景劃分,從而構(gòu)建出以可執(zhí)行文件名,調(diào)用參數(shù)列表為標識的軟件系統(tǒng)場景參數(shù)集合E : E = {P,F(xiàn),R,H},其中所述 Path G P, file G F, para G R, H是場景的特征char集合,char G H, 所述場景的特征至少包括軟件開發(fā)語言、運行平臺、數(shù)據(jù)庫、組成文件、功能調(diào)用參數(shù)以及用戶接口, 步驟(2. 2)所述場景建模模塊對輸入的所述軟件基本信息中的軟件代碼進行分析,建立場景模型C 遍歷目標軟件系統(tǒng)內(nèi)的每個可執(zhí)行文件,對所述每類目標軟件的跳轉(zhuǎn)指合,調(diào)用指合、條用指合進行分析,通過其中對觸發(fā)GET協(xié)議、POST協(xié)議操作的語句進行分析,提取各GET協(xié)議、POST協(xié)議提交的文件路徑及參數(shù),通過分場景參數(shù)集合S中的三元組{P,F(xiàn),R}進行比對,完全相同的則建立反映二個場景問的調(diào)用關(guān)系的軟件場景模型C,C= {P,F(xiàn),R,入},已如上述; 步驟(2. 3)所述測試控制模塊運行用戶部署的軟件系統(tǒng),記錄軟件行為 步驟(2. 3. 1),所述軟件靜態(tài)分析模塊向所述測試控制模塊輸入目標軟件基本信息,所述場景建模模塊向所述測試控制系統(tǒng)輸入所述目標軟件的軟件場景模型, 步驟(2. 3. 2),用戶想所述測試控制模塊部署用戶軟件系統(tǒng),輸入測試奇數(shù),并反問所述用戶軟件系統(tǒng)的各個功能,同事加載瀏覽器調(diào)試器監(jiān)視說書用戶軟件系統(tǒng)運行, 步驟(2. 3. 3)所述用戶軟件系統(tǒng)內(nèi)的軟件,根據(jù)用戶的每次請求返回如下各種不同的對應(yīng)結(jié)果 若超級文本傳輸協(xié)議HTTP返回的編碼為200, 貝U,用戶本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的用戶請求文件,參數(shù)值以及變化前后的場景, 若所述HTTP返回的編碼為400、401、403中的任何一種, 貝U,用戶本次請求導(dǎo)致的場景切換失敗,不記錄, 若所述HTTP返回的編碼是500, 貝U,可能已經(jīng)觸發(fā)漏洞,記錄相應(yīng)的用戶請求文件,參數(shù)值以及變化前后的場景,并標記漏洞觸發(fā)數(shù)據(jù), 步驟(2.3.4)除了切換失敗及成功的場景以外,去除步驟(2.3.3)中具有相同的場景轉(zhuǎn)化關(guān)系和相同參數(shù)值的以序列形成表述的場景變化,簡化場景變化序列,用I表示其結(jié)果, 步驟(2. 3. 5)用戶把所有的軟件的功能至少運行使用一次,形成初始測試場景U : U = {S0,E,I},其中 S0 :初始測試場景中的所有場景參數(shù)集合, E :用戶提交的數(shù)據(jù)資源集合,1:簡化后的場景變化序數(shù), 步驟(2. 4)所述測試數(shù)據(jù)加載模塊依次按以下步驟按照用戶軟件的特征,選擇初始測試用例; 步驟(2. 4.1),從用戶輸入的測試參數(shù)中獲取用戶軟件系統(tǒng)開發(fā)語言,運行平臺和數(shù)據(jù)庫類型, 步驟(2. 4. 2),從步驟(2. 3. 5)獲取的所述初始測試場景U中的具體參數(shù)值中得到參數(shù)的類型,其中至少包括整型,字符型以及二進制型中的一種或一種以上, 步驟(2. 4.3),按照步驟(2.4.2)中的具體參數(shù)從所述測試用例庫中選擇同類的測試用例,針對相應(yīng)的參數(shù)進行數(shù)據(jù)加載測試,同時加載監(jiān)視器監(jiān)視場景變化, 步驟(2. 4. 4),在步驟(2. 4. 3)加載測試用例過程中,得到如下不同的結(jié)果 若所述HTTP返回的編碼是200, 貝U,用戶本次請求導(dǎo)致的場景切換成功,記錄相應(yīng)的請求文件,參數(shù)值以及變化前后的場景, 若所述HTTP返回的編碼是400、401、403中的任何一種,貝U,用戶本次請求導(dǎo)致的場景切換失敗,不記錄, 若所述HTTP返回的編碼是500, 則,可能已觸發(fā)漏洞,記錄相應(yīng)的用戶請求文件、參數(shù)值以及變化前后的場景,并標記漏洞觸發(fā)參數(shù)及數(shù)據(jù), 步驟(2. 4. 5),把步驟(2. 4. 4)產(chǎn)生異常行為及異常場景轉(zhuǎn)換的數(shù)據(jù)添加到所述測試用例庫中,并記錄對應(yīng)的用戶軟件信息,包括軟件開發(fā)語言運行平臺、數(shù)據(jù)庫的基本信息在場景轉(zhuǎn)換中減少的參數(shù)類型,以及修改的包括常量參數(shù)在內(nèi)的參數(shù)類型及對應(yīng)的參數(shù)值, 步驟(2. 4. 6),所述測試數(shù)據(jù)加載模塊向所述軟件通信模塊把云發(fā)送請求;獲準后,到云基于場景的漏洞分析數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的一種基于場景模型的軟件漏洞分析方法,其特征在于,在步驟(2. 4. 5)后,增加下述一個步驟按以下測試策略調(diào)整用戶到入的測試數(shù)據(jù)集合E,并返回步驟(2. 4.1),重新測試,一直到場景切換成功為止; 不按照在目標軟件系統(tǒng)場景模型中的場景轉(zhuǎn)換類系進行場景功能調(diào)用,或者 通過減少調(diào)用參數(shù)來進行場景功能調(diào)用,或者多次隨機修改場景轉(zhuǎn)換過程中的變量參數(shù)。
全文摘要
一種基于場景模型的軟件漏洞分析方法,屬于網(wǎng)絡(luò)安全領(lǐng)域,其特征在于,依次含有掃描軟件代碼的構(gòu)建場景集合、分析軟件代碼的建立場景模型、運行軟件系統(tǒng),記錄軟件行為、根據(jù)用戶軟件特征選擇測試用例以及根據(jù)用戶的軟件運行路徑以變換測試用例等步驟,是一種面向瀏覽器B/服務(wù)器S架構(gòu)的軟件漏洞分析方法,能從用戶軟件系統(tǒng)的代碼、模塊、接口、函數(shù)調(diào)用關(guān)系等多個方面入手,對用戶的軟件系統(tǒng)的漏洞進行測試驗證,定位漏洞位置,具有通用性強,能發(fā)現(xiàn)隱性的權(quán)限提升漏洞的優(yōu)點。
文檔編號H04L29/08GK103020529SQ201210424280
公開日2013年4月3日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者鄭亮, 劉向東, 游春凌, 李紅, 王斌 申請人:中國航天科工集團第二研究院七○六所