殷 博,劉 磊,朱靜雯,許 靜
(1.國網天津市電力公司,天津 300010;2.南開大學 人工智能學院,天津 300350;3.南開大學 軟件學院,天津 300350)
在能源互聯及智能電網信息化背景下,異構化、智能化、互聯化的海量電力Web系統網絡環境愈加龐大復雜,電力數據的安全問題隨著電力信息網與互聯網的接入變得尤為嚴峻,如何有效對安全漏洞及其特征進行分析和檢測就成為一種至關重要的問題[1,2]。其中SQL注入漏洞(structure query language injection vulnerability,SQLIV)是危害最為嚴重的漏洞之一[3,4],并呈現出越來越高的隱蔽性、邏輯性和時序性,傳統的漏洞檢測和特征分析方法已不能滿足其檢測要求。以提高智能電網Web信息系統安全檢測的準確度為目標,大量研究從改進測試響應分析方法的角度入手以提高對漏洞特征的識別能力[5,6]。許多相關研究采用動靜態相結合的方法提高響應分析能力,但對源代碼的依賴限制了其應用范圍[7-9]。而在傳統的電力信息系統黑盒滲透測試中,多采用基于經驗模式庫及特征信息抽取等方法進行響應分析,其通過枚舉的方式調用測試用例集合,且測試用例之間相互獨立,未考慮到相關測試用例及其響應頁面之間的關聯性,因而難以對漏洞動態特征進行全面的分析,從而增加了引入漏報和誤報的可能性[9-11]。
對此,本文面向電力信息系統安全漏洞檢測提出了一種狀態驅動的SQL注入安全漏洞特征分析檢測模型,通過對攻擊語句和測試用例進行語義特征分析和狀態映射,建立其檢測過程的擴展有限狀態機[12,13]模型,并通過狀態轉移矩陣分析測試響應特征。該方法與傳統滲透測試手段相比,主要區別在于其通過對應測試用例和響應狀態之間的復雜狀態轉換關系進行漏洞響應特征分析,從而可檢測出電力信息網絡中愈加復雜的具有邏輯動態特性的漏洞,降低其漏報和誤報。基于本文方法開發了其原型系統,并與當前流行的SQLIV滲透測試工具進行對比和實驗分析,驗證了該方法的有效性。
針對SQL注入漏洞滲透測試的研究主要從測試信息收集、測試用例生成以及響應分析方法3個方面展開[5-7],許多工作針對SQL注入漏洞滲透測試響應分析階段進行了大量的研究,以改進其測試準確性。其中大量研究工作采用了動靜態相結合的方法進行滲透測試,主要包括基于有限自動機的污染分析方法,以及基于語法分析樹的動態檢測模型等[6,7],這種方法在響應分析方面具有分析深入和準確的優勢,但由于其必須依賴源代碼或修改服務器程序,因而極大限制了其在單純黑盒滲透測試場景下的應用。而傳統的黑盒滲透測試普遍采用基于經驗模式庫的錯誤模式匹配[5,7],以及對漏洞特征信息進行抽取并進行對比分析的方式[10,11]來進行測試響應分析。但這些方法的測試用例之間彼此相互獨立,且普遍基于枚舉的方式調用其測試用例或模式庫,并沒有考慮到前后關聯的測試用例及其響應頁面之間的相關性。這種枚舉調用測試用例庫的方式易于實施和擴充,但由于其單一性和缺乏對狀態變化的分析,容易造成較高的漏報或誤報。
擴展有限狀態機EFSM是一種以有限狀態及其狀態間的遷移規律來表示對象的形式化模型,它是有限狀態機(finite state machine,FSM)模型的擴展[12]。其通過狀態、狀態間的轉移、前置條件、上下文變量、操作、輸入和輸出描述對象,其可精確描述軟件系統的復雜動態行為,從而可有效應用于復雜系統的測試過程中。EFSM模型自誕生以來被應用于測試的多個領域,主要包括測試的形式化建模、測試序列的生成及一致性測試驗證等多個方面,并且主要集中于面向對象軟件、通信協議軟件以及嵌入式系統等領域的應用和研究[13],而對其在Web漏洞安全測試方面的研究則相對較少。EFSM模型既保留了FSM模型對于控制流的表達能力,又通過上下文變量與謂詞判斷等擴展了對數據流的表達能力,而黑盒SQLIV滲透測試過程中表現出的復雜動態性,本質上是一種測試響應的狀態變遷,非常適合通過EFSM模型進行描述。本文所述方法基于EFSM對SQLIV滲透測試過程進行建模,以其測試用例作為狀態,以頁面響應作為觸發狀態轉移的條件,并通過其狀態轉移矩陣進行SQLIV的滲透測試。
隨著能源互聯的不斷發展,以及智能電網信息化的大背景下,電力信息網絡變得愈加復雜,并且融合了大量基于動態交互的Web信息系統,其中包含的動態交互式Web頁面及數據庫服務器也呈現出海量的趨勢,HTTP訪問數據也愈加的龐雜,其Web安全漏洞問題變得越來越嚴峻,尤其是針對數據庫交互的SQL注入漏洞。本文首先通過一個典型的電力商城業務信息系統頁面交互中的SQL注入滲透測試場景進行說明:某個以MySQL為后臺數據庫的電力Web信息系統,通過表單Customer保存用戶敏感信息,每個用戶只能登陸系統后以CoustomerID和SessionID作為憑證查看相關信息,其SQL語句為“SELECT*FROM Costomer WHERE CustomerID=001 AND SessionID=123”。假設該語句并未進行過濾或防御,那么可對參數“SessionID=123”進行基于枚舉的形如“abc”的錯誤注入測試。假設該電力商城系統對錯誤信息進行了屏蔽,但仍可通過推斷進行SQLIV判斷。可對參數SessionID分別注入“AND 1=1--”與“AND 1=2--”,且有如下SQL語句A與語句B:
(A)SELECT*FROM Costomers WHERE CustomerID=001
AND SessionID=123 AND 1=1--;
(B)SELECT*FROM Costomers WHERE CustomerID=001
AND SessionID=123 AND 1=2--;
語句A在注入“AND 1=1--”后,其“1=1”的“真”值經過“與”運算后,整個語句的邏輯與原始語句的邏輯相同,返回的響應頁面與原始的響應頁面相似;而語句B的邏輯始終為“假”,響應頁面與原始的頁面不相似。其成功測試流程可通過圖1中的路徑“A→B→E”描述,其中“Simi”(Similar)和“No Simi”(Not Similar)分別表示響應與原始頁面“相似”及“不相似”,“SQLIV”和“No SQLIV”分別表示檢測和未檢測出SQL注入漏洞。而在原始SQL語句邏輯為“假”的情況下,該語句本應無法讀取出數據庫信息,但依然可通過對參數“CustomerID=001”分別注入“AND 1=1--”和“AND 1=2--”檢測出SQLIV。由于注釋符“--”注釋掉了對“SessionID”的判斷,“1=1”經過邏輯“與”運算,使其可以讀出“CustomerID”為“001”的客戶信息,注入后的頁面響應發生了變化;而注入“AND 1=2--”后,SQL語句邏輯依然為“假”,響應頁面與原始頁面相似。其對應測試流程可通過圖1的路徑“A→C→E”描述。

圖1 SQLIV滲透測試模型示例
由此可知,完全相同的測試用例在不同場景中的響應依然可能具有不同的狀態變化規律。傳統基于測試用例枚舉的方式很難有效檢測出這種具有復雜狀態變化關系的SQL注入漏洞,并且由于Web應用本身的多樣性和復雜性,單一的測試用例很容易得到具有虛假漏洞特征的頁面響應,如頁面中包含的其它原因導致的數據庫錯誤或頁面相似等,因而很容易出現漏報和誤報等現象。另外,枚舉測試為了提高覆蓋度而大量擴充測試用例庫,同時增加了獲得虛假漏洞響應的概率,進一步增加了誤判的可能性。對此,本文提出一種基于擴展有限狀態機及安全數據特征分析的SQLIV滲透測試方法以提高測試準確度。本文所述方法和實驗是在已確定測試用例集合與測試規則[3-5]的基礎上展開的,其主要針對滲透測試過程和響應分析方法進行建模。
本文通過對關聯測試用例響應狀態之間的轉換關系進行分析和研究,提出了一種狀態驅動的利用擴展有限狀態機進行SQLIV檢測的模型及方法,通過對SQL注入測試用例的安全特征進行分類和狀態映射,并根據滲透測試相關規則建立測試用例對應的響應安全數據特征的擴展有限狀態機模型,通過對于不同測試用例響應的注入點響應狀態之間的狀態轉換規律進行分析來檢測SQLIV。
通過對示例電力Web信息系統的討論可知,不同測試用例在相同SQL語句上下文可能出現不同的響應,即便是相同測試用例在不同上下文環境下也有可能表現出不同的響應。究其原因,每一條測試用例都包含特定的邏輯語義,故當其與被注入的原始SQL語句融合并同時參與運算時,其邏輯語義與原始SQL語句共同作用并運算生成特定的邏輯語義結果。在這里表現為,相關數據表中某行數據是否滿足被注入后的SQL語句的邏輯語義,即最終運算結果是“真”(T:True)還是“假”(F:False)。
根據SQL語句的邏輯語義特征,本文將最常用的SQL注入漏洞測試用例進行了分類,見表1。錯誤注入由“E”(Error)表示,其為可造成數據庫錯誤的SQL注入測試語句,如“abc”等;“τ”表示排序注入測試,如“ORDER BY 2”等測試用例;“∪”符號表示聯合查詢注入測試,例如“UNION SELECT 1,2,3,…”;包含字母“T”(True)與“F”(False)的測試用例分類涉及到“真”和“假”運算,“T”代表“1=1”或“‘a’=‘a’”這類重言式,“F”代表“1=2”或“‘a’=‘b’”這類永假式;符號“∧”表示邏輯為“與”的運算,包括“AND”、“HAVING”、“IN”等關鍵詞,例如“AND 1=1”及“’HAVING ‘a’=’a”屬于分類“∧T”,而“AND 1=2”及“HAVING 1=2”屬于分類“∧F”,“∧T--”及“∧F--”中的“--”符號表示該類測試用例以注釋符結束,例如“AND 1=1--”與“AND 1=2--”,其中[--]表示此時注釋符“--”為可選的;符號“∨”表示邏輯為“或”的運算,包括“‖”、“OR”等關鍵詞,例如“OR 1=1”包含于分類“∨T”,而“∨F”包括測試用例形如“’OR‘a’=’b’--”等;符號“IF()”表示“IF”注入測試語句,“IF(T)”表示與原始SQL語句邏輯相同的注入測試語句,如“IF(1=1,ORI,ERR)”,“IF(F)”表示與原始邏輯不同的測試語句,如“IF(1=2,ORI,ERR)”,“ORI”表示注入前的初始參數值,“ERR”表示錯誤的一條查詢或語句;“TD(n)”則表示進行時間間隔為n s的時間延遲(time delay,TD)注入測試,例如“SLEEP(n)--”。表1通過相應的符號和邏輯語義列出了包括錯誤推斷注入測試、相似度推斷測試、時間延遲注入測試等多種類別的SQLIV滲透測試用例及其對應的變體[10,12]。由于測試用例僅需要發現漏洞存在的證據,并且應盡量減少對被測系統的破壞,因此本文未采用帶有“DELETE”、“ALTER”等攻擊性關鍵詞的SQL語句。
為描述SQLIV滲透測試過程中的狀態轉移,本文基于上節對于SQL注入測試用例的分類建立了基于安全數據特征的擴展有限狀態機模型,其定義如下:
定義1 基于安全特征的擴展有限狀態機模型(security features-extended finite state machine,SF-EFSM)是一個六元組SF-EFSM=,其中Q為非空的有限狀態集合,I為有窮的輸入事件集合,T為狀態轉移函數,q0是初始狀態,E是終止狀態的集合,V為同步變量集合。

表1 測試用例特征及狀態分類
非空有限狀態集合Q={S0,…,S4,T0,…,T9},其具體說明見表2。狀態S0至S4為通用的測試控制狀態,狀態S0分析當前測試用例所屬的狀態號t,狀態S1表明發現SQL注入漏洞的證據并將變量vul加1,狀態S2表示當前測試用例未檢測出漏洞,狀態S3分析判斷測試用例集合是否為空(set=0),狀態S4為終止狀態;狀態T0至T9分別代表經過邏輯語義分類的10種測試用例所對應的測試響應狀態,該方法所使用的初始測試用例集合TCSet(test case set)中的測試用例即由上述分類中的用例組成。其中T0可單獨執行;T1及T2則以遞增序列的形式成組進行測試,如“ORDER BY 1”,…“ORDER BY n”;T3至T9則是以同樣的運算符號“∧”、“∨”、“IF”分組,根據“T”與“F”值成對出現的。與枚舉測試用例模式庫的方法有所不同,該方法不是枚舉測試的,而是初始測試用例及其相應的狀態轉移關系生成后續相關測試用例的,因此初始測試用例集合TCSet中僅需包含屬于狀態集合 {T0,T1,T2,T3,T6,T8} 的測試用例即可完成測試。初始狀態q0=S0,終結狀態集合E={S4}。

表2 測試用例狀態分類
同步變量集合V={t,r,vul,set},其中變量t表示本輪測試對應的測試響應狀態,“t=2”表示安全數據特征擴展FSM即將進入T2狀態進行測試;變量r表示某條測試用例的測試響應頁面與原始響應頁面相比是否發生變化或報錯;變量vul表示測試出的全部SQL注入漏洞數量,每發現一組可觸發漏洞特征的測試用例vul加1;變量set表示初始測試用例集合TCSet是否為空。輸入事件集合I={t=m(m為整數,且0≤N≤10),r=0,r=1,set=0,set=1,ε},其中變量均與集合V中的變量相關,“t=m”表示擴展有限狀態機即將進入Tm狀態進行測試;“r=1”表示測試響應頁面與原始頁面相似且頁面信息與響應時間正常,“r=0”表示測試響應頁面發生變化、頁面報錯或響應時間異常;“set=0”表示測試用例集合為空集合,而“set=1”表明依然存在待測的用例;“ε”為空輸入,表示不進行任何輸入即可發生相應的狀態轉移。狀態轉移函數,它表示狀態集合Q中的某個狀態,在接收集合I中的輸入后,轉移到集合Q中的某個狀態的映射函數。
狀態轉移函數包含了SQL注入漏洞滲透測試響應狀態之間的轉移關系與規律,它決定了滲透測試的具體流程和漏洞判斷規則,因而其表示方式及算法是本文所述方法的關鍵內容,這里通過狀態轉換矩陣來描述狀態轉移函數T的具體內容,如圖2所示。圖中行與列均代表狀態集合Q中的狀態,行與列的交點為輸入集合I中的元素,表示從行所表示狀態轉移至列所表示狀態的轉移條件。例如,行T3與列T4交點處有“r=1”,表示從狀態T3轉移至狀態T4的輸入條件為“r=1”。矩陣交點處的“ε”表示無需任何輸入即可發生狀態轉移,而無內容的交點表示先后兩個狀態之間不存在狀態轉移。該狀態轉換矩陣中的內容是通過對最常用和經典的SQLIV滲透測試手段和規則進行總結得出的[5,11],可被應用于實際的SQL注入漏洞滲透測試過程中進行SQL注入漏洞的檢測。
根據狀態轉換矩陣的結構和以上分析,基于安全數據特征擴展有限狀態機的SQL注入滲透測試方法的實現主要為兩部分:①對狀態轉移規則(status transfer rule,STR)的執行;②每個狀態下所執行的具體動作(action)。據此,本文提出了SQL注入漏洞測試的狀態轉移算法(penetration testing status transfer algorithm,PTSTA)來實現對基于擴展有限狀態機的SQL注入漏洞滲透測試方法的應用,其偽代碼如算法1所示。
算法1: 滲透測試狀態轉移算法PTSTA
(1)變量:status,testcase,input,set,result,t,vul
(2)輸入: 狀態轉換規則STR(StatusTransferRule)
初始測試用例集合TCSet(TestCaseSet);
(3)輸出: 漏洞證據數量vul(Vulnerability);
(4)begin
(5) //初始化變量status和testcase,并重置TCSet
(6)status= S0;
(7)testcase=TCSet[0];
(8)TCSet=TCSet.RemoveFirst;
(9)while(status!= S4)
(10) //通過Action函數執行每個狀態下的動作
(11)ActionS(status,testcase);
(12) //通過StatusTransfer函數完成狀態轉移
(13)status=StatusTransfer(STR,status,Input);
(14)ActionT();
(15)returnvul;
(16)end

圖2 狀態轉換矩陣
函數1: Action函數的實現
(1)Action(Status,TestCase)
(2)begin
(3)//根據不同的status狀態值來執行具體的動作
(4)switch(status);
(5)//根據TestCase決定具體執行的測試狀態號t
(6)caseS0:t=DecideStatus(TestCase);
(7)caseS1:vul++;
(8)caseS2:vul=vul;
(9) //檢查TCSet,重置status、testcase及TCSet
(10)caseS3:
(11)if(TCSet==NULL)
(12)set= 0;
(13)else
(14)set=1;status= S0;
(15)testcase=TCSet[0];
(16)TCSet=TCSet.RemoveFirst;
(17) //基于初始的TestCase生成當前狀態
(18)caseT1:
(19)testcase=GenerateOrder(testcase);
(20)caseT2:
(21)testcase=GenerateUnion(testcase);
(22)caseT4, T5, T7, T9:
(23)testcase=testcase.Replace(T, F);
(24)if(Status∈{T0,…,T9})
(25)result=ResAnalyzing(testcase);
(26)input=SetInput(result);
(27)end
算法1首先對status初始化為S0,將TCSet集合中第一條初始測試用例賦值于testcase后移除。接下來執行循環,若非S4狀態,則循環進行狀態轉移相關操作,其分為兩步:①通過運行Action(status,testcase) 函數執行status相關動作;②通過狀態轉移函數StatusTransfer(STR,status,input) 通過狀態轉移規則STR、當前狀態status及輸入變量input確定轉移后的狀態值。在該算法中,函數Action(status,testcase) 的作用非常重要,它根據當前狀態完成各種流程控制或測試任務。首先Action函數根據status選擇執行對應狀態下的動作,狀態S0到狀態S4負責參數設置與流程控制,狀態T0至T9則具體的測試執行狀態。狀態S0通過對變量t賦值而對下一步執行的測試狀態進行選擇;S1表示存在一個SQL注入漏洞的證據,并將vul變量加1;S2表示無漏洞證據,vul變量值不變;S3根據TCSet是否為空值決定是否終止循環,并重置變量status、testcase及TCSet。狀態T1、T2、T4、T7、T9根據其前置狀態的testcase內容對應生成下次的測試用例值,而所有的測試用例狀態T0至T9均通過ResAnalyzing(testcase) 函數則執行包括發送測試請求、接受測試響應、分析測試結果在內的多個動作,并將分析結果賦值于變量r。函數最終利用SetInput函數對input變量進行賦值以便后續的狀態轉移函數StatusTransfer可有效得到執行。通過算法1、Action函數以及狀態轉移規則STR,本文實現了基于安全數據特征擴展有限狀態機的滲透測試方法。
函數1實現了對狀態轉移函數及每個狀態下的動作執行,并循環處理初始測試用例集合TCSet中的初始測試用例,直到TCSet集合為空為止。其中,狀態變量status存儲當前所處狀態,變量testcase存儲當前測試用例字符串,變量input則存儲了狀態轉移所需的輸入值,變量set用于標記集合TCSet是否為空(set=0時),變量r用于標記響應頁面是否出現報錯、頁面變化、時間延遲等異常(r=0時),t存儲的狀態號則是在S0狀態下選擇后續測試狀態的依據,vul用于存儲檢測出的漏洞證據數量。算法輸入為狀態轉移規則STR(status transfer rule)與測試用例集合TCSet(test case set)。其中,STR以三元組列表的形式存儲狀態轉換矩陣中的狀態轉移規則
,Pre為轉移前狀態,Input為輸入內容,Aft為轉移后狀態。TCSet為存儲初始狀態的字符串數組。4 實驗及結果分析
本研究主要是關注針對電力信息網絡的SQL注入滲透測試的動態檢測過程,即通過對多個測試用例響應狀態之間存在的狀態轉移規律的分析,以檢測基于推斷的動態漏洞。對此我們建立了目標漏洞實驗測試平臺WavsepV和IWebShopV,以模擬在真實電力Web信息系統環境中存在的SQL注入漏洞場景,其利用“PHP 5+MySql 5”環境構建。并基于本文所述方法開發了SQL注入漏洞特征分析和漏洞檢測的原型系統,以評測本文所述方法的有效性。
4.1 測試實驗環境
本文針對電力信息網絡異構化、智能化、互聯化的特點,構建了一套目標漏洞模擬測試環境。電力信息網絡越來越多的融合了基于數據交互的動態Web信息系統,且其包含大量的動態Web頁面及數據交互,因而我們在漏掃工具評估系統Wavsep[14]的基礎上進行了擴展,人工植入了多種Web注入漏洞,并且融合了大量動態頁面及數據交互請求構建了模擬電力信息網絡環境的漏洞系統。其中,Wavsep(web application vulnerability scanner evaluation project)是由OWASP[3]提出的開源Web應用安全漏洞掃描程序評估項目,WavsepV在Wavsep的基礎上加入了約2000個動態頁面或在線URL,以增加其對真實互聯網的動態環境模擬;IWebShopV[15]則是為了模擬電力信息外網中的電子商城等業務系統環境,其在開源電子商務網站項目iWebShop的基礎上人工植入了多種對電力信息網絡具有較高危害性的具有推斷特性及動態特性的SQL注入漏洞,其詳細描述見表3。其中,人工植入的SQL注入漏洞是通過對SQL注入漏洞的分類特征進行總結和分析的基礎上,由安全工程人員人工植入了多種類型的SQL注入漏洞,既包括基于錯誤注入的數字型和字符型漏洞等常規的SQL注入漏洞,同時包括多種基于相似度與時間推斷的具有動態特性的漏洞。為驗證本方法在實際Web應用環境下的有效性,我們在WavsepV和IWebShopV中均額外加入了模擬真實電力信息系統環境下的動態Web頁面和URL鏈接。表3中的“—”符號表示不包含該類型的漏洞。
表3 植入漏洞類型
為了能夠驗證基于擴展有限狀態機進行SQL注入漏洞滲透測試的方法及其應用的有效性,根據本文所述模型和算法開發了原型系統。由于本實驗的目的是對本方法的漏洞檢測效果和正確性進行驗證和分析,并不涉及測試前的確定被測URL和相關信息的收集過程,因此我們在試驗前已事先獲取了目標系統WavsepV和IWebShopV中的被測URL及待測注入點等信息。
4.2 實驗結果數據
在對本文所述模型的原型系統進行相關測試的同時,我們選擇了當前較為知名且應用較廣泛的滲透測試工具WVS Acunteix和IBM AppScan進行了對比實驗與分析[13],可更加全面的測試本文所述模型的有效性。Acunetix和AppScan均為當前對于SQLIV滲透測試相關研究和應用中具有代表性的基于枚舉測試用例模式庫的測試方式的代表,在本文中以Tool A和Tool B來對其進行表示(無相應順序)。
本文方法與Tool A和Tool B在實驗測試環境中的對比測試數據見表4。其中,“漏洞總數量”(Nt)表示目標系統中包含的SQLIV總數量;“發送請求數”(Nr)表示整個檢測過程中發送的HTTP請求數;“檢出總數量”(Vt)表示當前測試工具對當前目標被測Web應用檢出的結果總數量,包括“正確召回數”和“測試誤報數”。
表4 實驗結果數據
“正確召回數”(Vr)是檢測出的結果中確實為SQLIV的數量;“測試漏報數”(Fn)是未檢測出的漏洞數量;“測試誤報數”(Fp)為檢測過程中出現的誤報個數。通過表4數據可以看到,本文所述方法在兩個測試平臺中的“正確召回數”均高于Tool A和Tool B的測試結果,且“測試漏報數”和“測試誤報數”低于另外兩種工具。
圖3為“漏報率對比”,其中“漏報率”表示為Pfn,且有 “Pfn=Fn/Nt”,其中 “Fn=Nt-Vr”;圖4為“誤報概率對比”,其中“誤報概率”為整個測試過程中以注入點數量(Nip)為基數出現誤報的概率,以Pfp表示,且有 “Pfp=Fp/Nip”。 圖3(漏報率對比)與圖4(誤報概率對比)與表4的數據表現出相同的趨勢,本文方法的“漏報率”與“誤報概率”結果低于Tool A及Tool B的測試結果。圖5通過本方法與其它兩種工具在測試過程中在每個注入點平均發送的HTTP請求(Nra)數進行對比來對本方法的測試效率進行一定的分析,其中有 “Nra=Nr/Nip”。 圖5顯示出本文方法的平均HTTP請求數與其它兩種工具處于同一數量級,略高于Tool A,并且低于Tool B的數值。
圖3 漏報率對比
圖5 平均HTTP請求數量對比
4.3 結果分析及討論
本文實驗所采用的目標測試平臺可以從兩個方面對滲透測試工具進行評價。一方面,WavsepV和IWebShopV分別包含了多種不同類型的SQL注入漏洞,包括普通的錯誤注入漏洞及基于相似度推斷的動態特征的SQL注入漏洞,其實驗數據可說明本文所述方法較傳統基于枚舉測試用例模式庫的方法可以檢測出更多具有動態特性及狀態的SQL注入漏洞,具有更好的檢測能力和測試覆蓋度。另一方面,目標測試系統中不但包含多種類型的SQL注入漏洞,同時擁有大量具有隨機特征的交互頁面及真實的互聯網Web頁面,其具有很高的動態性和隨機性,容易造成漏洞測試工具產生誤報,可以對SQL注入滲透測試工具的誤報水平進行有效評價。通過上節關于誤報概率的實驗對比數據可說明本文方法較以往的滲透測試方法相比具有更少的誤報,可有效驗證本方法對測試精確度的改進效果。
通過以上分析可進一步得出,本文方法具有更好的測試準確度的原因在于:①本文方法通過捕捉和分析相關測試用例響應之間的狀態轉移規律,可以檢測更多具有推斷和動態特性的漏洞,因而具有更好的測試覆蓋度和更低的漏報率;②本文所述方法對同一個漏洞進行基于狀態轉移的多個步驟的測試,相當于對其正確性進行了更加充分的驗證和確認,從而降低了發生誤報的可能性;③同時本文所述方法在保證更高測試準確度的前提下,在效率方面與目前流行的漏洞測試工具相當,且高于Tool B。其內在原因是安全數據特征擴展的有限狀態機可以對漏洞的特征進行更為準確而高效的分析和描述,從而保證了其測試效率。
5 結束語
本文提出了一種狀態驅動的電力Web信息系統注入漏洞檢測模型,通過對SQL注入漏洞滲透測試的安全特征進行抽象分類及狀態映射,建立相關測試流程的擴展有限狀態機模型,并基于該模型構建了SQL注入漏洞黑盒滲透測試流程的擴展有限狀態機及其相關算法。本方法通過分析相關測試用例響應之間的狀態轉移規律來檢測更多具有復雜動態特性的漏洞,且其具有更為充分的漏洞驗證機制,從而在保證測試效率的前提下,可有效提高電力信息系統安全防御過程中的注入漏洞的檢測覆蓋度,降低了漏報率和誤報的概率。通過對比實驗及其結果分析,本方法可提高SQL注入漏洞測試響應分析的準確性,并可有效降低測試過程中“漏報”和“誤報”的競爭問題所帶來的影響,其相比于傳統通過枚舉測試用例庫進行測試的方法具有更高的準確度,驗證了本文所述方法的有效性。
猜你喜歡大狗熊在睡覺 大灰狼畫報·益智版(2024年3期)2024-12-09 00:00:00刷新生活的頁面 保健醫苑(2022年1期)2022-08-30 08:39:14“不等式”檢測題 中學生數理化·七年級數學人教版(2021年6期)2021-11-22 07:50:58“一元一次不等式”檢測題 中學生數理化·七年級數學人教版(2021年6期)2021-11-22 07:50:58“一元一次不等式組”檢測題 中學生數理化·七年級數學人教版(2021年6期)2021-11-22 07:50:58小波變換在PCB缺陷檢測中的應用 海峽科技與產業(2016年3期)2016-05-17 04:32:12用對方法才能瘦 Coco薇(2016年2期)2016-03-22 02:42:52四大方法 教你不再“坐以待病”! Coco薇(2015年1期)2015-08-13 02:47:34捕魚 小雪花·成長指南(2015年4期)2015-05-19 14:47:56同一Word文檔 縱橫頁面并存 電腦愛好者(2011年11期)2011-06-22 08:20:18