陳 亮,李永剛,劉 磊,許 靜,李 潔
(1.國網(wǎng)天津市電力公司 電力科學(xué)研究院,天津 300384; 2.國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司,北京 102211;3.南開大學(xué) 人工智能學(xué)院,天津 300350)
在能源互聯(lián)的背景下,電力Web信息網(wǎng)絡(luò)得到了高速的發(fā)展,然而其安全性問題日趨嚴峻[1,2],其中SQL注入漏洞(SQL injection vulnerability,SQLIV)在電力業(yè)務(wù)信息系統(tǒng)中的危害愈加凸顯[3,4]。攻擊者可通過偽造發(fā)送給Web應(yīng)用后臺數(shù)據(jù)庫的SQL查詢,導(dǎo)致其被解析為非預(yù)期的查詢[2,5]。因而,針對電力業(yè)務(wù)信息系統(tǒng)中SQL注入漏洞檢測方法的研究具有重要的理論和現(xiàn)實意義[6,7]。
滲透測試是最為主要的電力Web應(yīng)用漏洞動態(tài)檢測技術(shù)[8,9]之一,但其在龐大復(fù)雜的電力信息系統(tǒng)應(yīng)用中依然存在檢測覆蓋度和準確度不足的問題[10-12]。一個主要的原因是測試用例集和驗證措施的不充分,以及難以在大規(guī)模測試的環(huán)境下滿足效率需求[6,11]。以往許多方法集中于對信息收集和響應(yīng)分析方面的研究,而對測試用例集和驗證措施充分性方面的研究相對較少[6,7]。其大都將測試用例集作為外部因素,通過經(jīng)驗枚舉獲取測試用例[11-13]。面對如何提高測試覆蓋度的問題,相繼有研究提出基于模板組合和攻擊變異的測試用例生成方法[12,13],以及基于攻擊模型的攻擊生成方法[14],但其大多僅從測試輸入層面展開,缺乏對于測試整體各階段要素和特征的研究,尤其是缺少對包括目標程序控制層面和后臺數(shù)據(jù)庫語法邏輯層面在內(nèi)的整體特征和規(guī)律的探討。
針對上述問題,本文提出了一種基于特征的電力業(yè)務(wù)信息系統(tǒng)的SQL注入漏洞自動化滲透測試方法。首先對電力業(yè)務(wù)信息系統(tǒng)內(nèi)部和外部多個層面的注入漏洞特征進行抽象分析建模,并建立其特征矩陣模型FMM(feature matrix model),并基于FM特征組合的等價類劃分和剪枝技術(shù),提出了一種啟發(fā)式的特征篩選算法HFS(heuristic feature selection),以提高整體測試的覆蓋度和效率。最后,本文將所述方法在多個測試數(shù)據(jù)集上與兩個滲透測試工具進行對比實驗分析,驗證了該方法的有效性。
針對滲透測試用例的覆蓋度問題,需要考慮到目標Web應(yīng)用的狀態(tài)和后臺邏輯等內(nèi)在的因素,才能在生成有限測試用例集的情況下,對電力Web信息系統(tǒng)內(nèi)部復(fù)雜多變的系統(tǒng)環(huán)境進行有效的覆蓋。然而更為充分的測試用例集和驗證措施所產(chǎn)生的冗余和大量HTTP請求會造成整體檢測效率的大幅度下降,從而嚴重影響了其在電力業(yè)務(wù)信息系統(tǒng)中的應(yīng)用[14]。電力Web信息系統(tǒng)在技術(shù)架構(gòu)上和規(guī)模上具有層次多和復(fù)雜性高的特點,同時其包含了大量的動態(tài)交互頁面。如何有效地結(jié)合測試輸入特征、應(yīng)用控制特征和語法邏輯特征來指導(dǎo)測試,在保證測試全面性和充分性的條件下提高其整體效率,便成為提高電力信息網(wǎng)絡(luò)SQL注入漏洞滲透測試能力的關(guān)鍵。因此,本文基于對電力Web信息程序內(nèi)部和外部多種因素進行全面分析,結(jié)合電力業(yè)務(wù)信息系統(tǒng)特征,從灰盒測試的角度更為深入分析漏洞的內(nèi)在規(guī)律,構(gòu)建了針對電力業(yè)務(wù)信息系統(tǒng)滲透測試的特征矩陣模型,這里首先給出其基本定義和形式化的描述。
為了能夠?qū)﹄娏I(yè)務(wù)信息系統(tǒng)實現(xiàn)全面的SQL注入漏洞滲透測試,并通過充分的驗證機制保證其準確性,需要獲得全面而有效的測試用例集,并保證該測試用例集適當?shù)娜哂嘈?,即包含對于同一目標注入點產(chǎn)生的效果相同但表現(xiàn)形式不同的測試用例。這樣便能夠?qū)崿F(xiàn)對電力信息系統(tǒng)滲透測試的高覆蓋度,并利用冗余驗證保證測試的準確度。為了獲得充分而全面的測試用例集,我們從電力業(yè)務(wù)信息系統(tǒng)注入的內(nèi)外部特征入手進行全面的分析,不僅要考慮到異常驗證等因素,還需要在電力信息系統(tǒng)正常功能的范圍內(nèi)對漏洞特有的安全行為特征進行分析和檢測。因而,我們將影響其滲透測試的相關(guān)因素歸納為3類,并將其整體定義為特征矩陣模型FMM。在本文所述模型中,特征(Feature)表示能夠體現(xiàn)SQL注入測試語句、語法和控制相關(guān)特有規(guī)律和特點的標志。下面給出電力業(yè)務(wù)信息系統(tǒng)SQL注入特征矩陣的形式化定義。
定義1特征矩陣FM(feature matrix)為一個三元組FM={IF,GF,CF}。其中IF,GF和CF均為多元組,其中IF表示語句特征,GF表示語法特征,CF表示控制特征。
FM由3個多元組構(gòu)成,實際表示了3種類型的子特征矩陣,包括電力業(yè)務(wù)信息系統(tǒng)的外部注入特征矩陣IF(injection feature)、其系統(tǒng)內(nèi)部語法特征矩陣GF(grammar feature)、測試過程中的控制特征矩陣CF(controlling feature),在電力信息系統(tǒng)滲透測試過程中,通過對這些特征進行解析和操作,可以動態(tài)生成對當前電力業(yè)務(wù)信息系統(tǒng)具有針對性的測試用例、過程控制與結(jié)果分析。其3類子特征矩陣的形式化定義分別如下。
定義2注入特征IF為五元組,IF={KW,IM,PF,SF,SE};其中KW表示注入關(guān)鍵詞 (KeyWord),且為IF的主特征元素;IM為注入模式(Injection Mode);PF為注入前綴(PreFix);SF為注入后綴(SufFix);SE表示注入終結(jié)符(SufEnd)。其矩陣表示如下


定義3語法特征GF為三元組,GF={IP,OL,IL};IP(injection point)表示目標查詢子句中注入點位置的語法,且為GF的主特征;OL(original logic)表示原始查詢子句的邏輯語義;IL(injection logic)表示注入后查詢子句的邏輯語義。其矩陣表示如下

GF描述了電力業(yè)務(wù)信息系統(tǒng)中通用的SQL查詢語句的語法特征信息。目標查詢子句的注入點語法IP為主特征,對注入的語法起到?jīng)Q定性作用,決定了測試語句特征IF中對應(yīng)的關(guān)鍵詞KW的范圍,如圖1所示。OL則為原始查詢子句的邏輯語義,包括真T、假F、響應(yīng)時間正常TIME_OK和響應(yīng)數(shù)據(jù)正常RESP_OK。IL為注入后查詢子句的邏輯語義,包括真T(similarity-based injection)、假F(similarity-based injection)、響應(yīng)時間延遲TIME_DL(time-based injection)和響應(yīng)數(shù)據(jù)出錯RESP_ERR(error-based injection)。

圖1 SQL語法樹與特征編碼對應(yīng)關(guān)系
定義4控制特征CF為四元組,CF={RP,VT,RT,KN};其中RP(response process)為響應(yīng)處理方式,且為CF的主特征;VT(value type)為注入點參數(shù)類型;KN(keyword number)為是否包含關(guān)鍵詞;RT(replace type)為注入?yún)?shù)替換方式。其矩陣表示為

CF描述了電力業(yè)務(wù)信息系統(tǒng)SQL注入漏洞滲透測試流程中參數(shù)和控制的抽象特征描述。其中響應(yīng)處理方式RP為CF的主特征,SQL注入檢測時的響應(yīng)處理的方式?jīng)Q定測試用例語句特征IF中關(guān)于響應(yīng)處理的具體內(nèi)容,并且決定了響應(yīng)分析時采用的具體方法。VT表示注入點的參數(shù)類型,包括數(shù)字類型NUM、字符串類型STR和無類型NULL。KN為判斷是否包含關(guān)鍵詞的參數(shù),不包含關(guān)鍵詞為F和包含關(guān)鍵詞為T。RT為是否對注入點原始參數(shù)進行替換,包括兩種參數(shù)值,進行替換REPLACE(replace)和不進行替換NOREPL(no replace)。
為了能夠?qū)﹄娏I(yè)務(wù)信息系統(tǒng)繁多復(fù)雜的動態(tài)頁面環(huán)境進行全面有效的SQL注入漏洞測試,我們將電力信息系統(tǒng)注入特征、語法特征和控制特征進行組合,進而得到全局的特征模型FM。通過FM可進一步提取出測試用例規(guī)則TCR(test case rule),通過TCR可在對電力信息系統(tǒng)進行測試過程中實時生成針對當前業(yè)務(wù)系統(tǒng)的SQL注入測試用例,并對檢測語法、判定規(guī)則和測試流程進行動態(tài)控制。對于給定子矩陣IF、GF和CF的FM模型,有FM={IF,GF,CF}=IF×GF×CF,其中符號×表示對矩陣進行笛卡爾積運算。初始的FM實際上是3個子矩陣所有行的組合,根據(jù)FM的矩陣表示,我們可以得到測試用例規(guī)則TCR,見定義5。
定義5測試用例規(guī)則TCR為十一元組,TCR=(KW,PF,IM,SF,IF,OL,IL,RP,VT,RT,KN),即特征矩陣FM的每一行(Row)即為一個測試用例規(guī)則TCR,TCR可簡化記為TCR=(IF,GF,CF)。
基于TCR的外部注入語句特征IF,我們可以根據(jù)其進行動態(tài)的測試用例語句TCS(test case statement)拼接生成,例如TCS=R.PF+R.KW+R.SF+R.SE。通過動態(tài)拼接注入特征元素,并對其進行一定的編碼轉(zhuǎn)換便可實時生成該TCR所對應(yīng)的測試語句。利用其內(nèi)部語法特征GF的特征值可對檢測結(jié)果進行對應(yīng)的結(jié)果分析,如圖1所所示。同時,在檢測的過程中通過控制特征CF可對測試用例和注入方式進行相應(yīng)的控制和調(diào)整,例如當響應(yīng)處理方式特征RP為C103時,是基于時間(Time-Based)的響應(yīng)處理方式,此時將測試用例語動態(tài)調(diào)整為TCS=TCS.Replace(″V2″,″SLEEP(30)″),也就是將測試語句加入時間延遲命令“SLEEP(30)”。
通過特征矩陣FM可以組合生成大量的TCR,進而生成大量的測試用例,從而提高滲透測試的覆蓋度。然而在通過大量測試用例提高測試覆蓋度的基礎(chǔ)上,同時大量增加了測試規(guī)模,進而影響了滲透測試效率和在電力業(yè)務(wù)信息系統(tǒng)中的可用性。因而,為了在提高準確度的基礎(chǔ)上,提升在電力業(yè)務(wù)信息系統(tǒng)中SQL注入漏洞滲透測試的效率,本文進一步提出了一種啟發(fā)式特征篩選HFS(heuristic feature selection)算法。
通過大量實驗發(fā)現(xiàn),在具有決定作用的電力業(yè)務(wù)信息系統(tǒng)SQL注入滲透測試特征中,CF的子特征RP、VT、KN、RT均可在檢測過程中通過檢測的注入響應(yīng)信息的收集和分析過程中,被逐步直接或間接地獲取到,并應(yīng)用于對TCR的有效性和語句形態(tài)進行判斷和調(diào)整,同時CF可應(yīng)用于滲透測試流程的控制。根據(jù)這些特點,我們可以確定矩陣特征的范圍,從而篩選出最優(yōu)的TCR進行測試。由于目前僅能根據(jù)CF特征確定特征值范圍,因而最終所確定的是FM的子集。故我們根據(jù)CF子特征值的不同組合情況,將特征矩陣FM劃分為數(shù)個子矩陣(Sub Matrix),這些子矩陣實際上可以理解為關(guān)于TCR的等價類。對FM子矩陣的劃分依據(jù)是控制特征矩陣。
CF子矩陣的每一行即對應(yīng)一個基本的FM子矩陣,這些子矩陣具有相同的CF特征值。即對于FM中所有CF四元組(RP,VT,KN,RT)的值相同的行即屬于同一個子特征矩陣。例如,對于(RP,VT,KN,RT) =(C101,C202,C301,C402)的TCR組成了其CF子特征RP、VT、KN、RT值分別為“SIMI”、“STR”、“NONE”和“NOREPLACE”的子特征矩陣,而矩陣中TCR的IF和GF特征值則是由他們之間子特征的笛卡爾積運算的結(jié)果組成,如圖2中所示。由此可知,F(xiàn)M子矩陣的數(shù)量與控制特征CF矩陣的行數(shù)相同,為T=|RP|×|VT|×|KN|×|RT|,則TCR集合也被劃分為T個等價類。在實際應(yīng)用過程中,我們用CF每行的值來分別代表一個TCR集合。例如,編碼(C102,C202,C301,C402)表示在FM矩陣中與該值相對應(yīng)的子矩陣,其所對應(yīng)的TCR集合為{(IF,GF,CF)|CF(RP)=C102∧CF(VT)=C202∧CF(KN)=C301∧CF(RL)=C402}。該編碼表示有效的TCR應(yīng)符合以下條件:結(jié)果處理方式RP為“相似度比較方式SIMI”;注入點參數(shù)類型VT為“字符串類型STR”;測試用例包含關(guān)鍵詞“Keyword”;并且注入?yún)?shù)替換方式RT為“不替換原始參數(shù)NOREPL”。
為能夠在保障測試覆蓋度的基礎(chǔ)上,有效提高電力業(yè)務(wù)信息系統(tǒng)SQL注入漏洞滲透測試效率,提出一種啟發(fā)式特征篩選HFS算法。HFS利用檢測中收集到的信息動態(tài)劃分和篩選符合檢測條件的子特征矩陣,從而逐漸縮小用于檢測的測試用例集合,并且對于當前的電力業(yè)務(wù)信息系統(tǒng)更具有針對性。首先,HFS隨著檢測的進行逐漸收集和分析之前的反饋信息,并分別獲取CF子特征的目標值(Target Value),目標值描述了實際被測環(huán)境和TCR應(yīng)該遵守的條件值。一旦HFS發(fā)現(xiàn)某個新的CF子特征目標值,它會根據(jù)該特征目標值重新篩選出與其對應(yīng)的數(shù)個子矩陣,這些子矩陣共同構(gòu)成了用于后續(xù)檢測的當前矩陣Current Matrix。HFS通過多叉樹實現(xiàn)對于有效子矩陣的篩選FST(feature selection tree),其每一個分支代表同一子特征一種值的可能性,每一個葉子節(jié)點代表了滿足其相應(yīng)條件的子矩陣集合,如圖2所示。篩選出的子矩陣構(gòu)成的當前矩陣被用于后續(xù)檢測的TCR集合,每當檢測過程中探測到新的CF子特征目標值,則程序會重新進行子矩陣篩選,并獲得新的當前矩陣Current Matrix進行更加有針對性的檢測。HFS可以在保證對于同一注入點較高的檢測覆蓋度和用于驗證的必要冗余的情況下,過濾掉不必要的和不符合本次檢測條件的測試用例,進而可以提高整體的檢測效率。

圖2 啟發(fā)式特征篩選(HFS)方法實例
算法1與算法2描述的是算法及其在電力業(yè)務(wù)信息系統(tǒng)中的應(yīng)用方法。算法1是關(guān)于調(diào)用HFS進行動態(tài)篩選的主函數(shù),在當前特征集合Current FM不為空的前提下,循環(huán)調(diào)用矩陣中的測試規(guī)則GTR,并利用其進行SQL注入滲透測試;對測試的響應(yīng)結(jié)果進行分析,一旦發(fā)現(xiàn)新的Status信息,就調(diào)用算法2對Current FM進行一輪重新的篩選;將每一條處理過的GTR從Current FM中刪除避免重復(fù)測試;當Current FM變?yōu)榭?,即其中所有GTR被處理完畢后,算法1停止。算法2則是描述的每一輪HFS篩選的過程,循環(huán)對Current FM中的每一條GTR進行判斷,當其符合Status的條件時將其加入新的Current FM,否則將其丟棄;循環(huán)結(jié)束后所剩下的Current FM即為之后檢測時用于檢測的GTR集合。
算法1:SQL注入漏洞滲透測試主函數(shù)
Input:LegalFM(Legal Feature Matrix)
IPI(Injection Point Information)
Status(GTR Status variable)
Output:Result(Testing Result)
(1)Initialisation:CurrentFM=LegalFM,Status=NULL;
(2)WHILE(CurrentFM≠NULL) {
(3)gtr=CurrentFM.FIRSTROW; /* 選擇 Current FM的第一行并賦值給變量gtr*/
(4)Response= SQLIV Testing according toIPIandgtr;
(5) IF(Collect new Target F-V Pair from Response) {
(6)Status=Status.ADDNEW_TFVP (Response)
/*將檢測過程中收集到的新鍵值對更新至Status狀態(tài)變量*/
(7)CurrentFM= HFS (CurrentFM,Status);
(8) }
(9)Result= Result analysis according toIPIandgtr;
(10)CurrentFM.REMOVE_ROW(gtr); /* 從CurrentFM中移除與gtr值相等的一行*/
(11) }
(12) RETURNResult;
算法2:啟發(fā)式特征篩選算法HFS
Input:CurrentFM(Current Feature Matrix)
Status(GTR Status variable)
Output:NCFM(New Current Feature Matrix)
(1)>Initialisation:CFM=CurrentFM,NCFM=NULL;
(2)WHILE(CFM≠NULL) {
(3)gtr=CFM.FIRSTROW;
(4) IF(gtr∈{GTR> | >Comply withStatus}) {
/* 如果gtr屬于GTR集合*/
(5)NCFM.ADD_ROW(gtr);
(6) }
(7)CFM.REMOVE_ROW(gtr);
(8) }
(9)RETURNNCFM;
圖2中描述了電力業(yè)務(wù)信息系統(tǒng)進行特征篩選的過程,在進行HFS之初,當前矩陣Current Matrix為整個原始的FM矩陣;在①檢測階段,HFS分析出結(jié)果分析模式RP值為“ERR”,對應(yīng)的矩陣編碼為“C101”,則通過FM Selection Tree的第一層篩選出了與其對應(yīng)的子矩陣為滿足{TCR|CF(RP)=C101}的子矩陣集合,圖中4個子矩陣A、B、C、D均屬于新的當前矩陣所包含的子矩陣;第②和第③階段,子矩陣A和D被過濾掉;第④階段結(jié)束后,HFS得到最終的當前矩陣,原來的4個子矩陣中僅有C保留下來進行后續(xù)的SQL注入滲透測試。通過上述方法進行多層特征篩選可獲得精簡優(yōu)化過的測試用例集合,假設(shè)平均每個特征包含n個特征值,那么在效率方面的提升近似為nm倍,而m則是在動態(tài)測試過程中獲取到有效信息并進行特征過濾的特征數(shù)量。
為了能夠驗證本文所述方法在電力業(yè)務(wù)信息系統(tǒng)場景下的有效性,我們基于啟發(fā)式的特征篩選算法HFS開發(fā)了自動化的SQL注入漏洞滲透測試工具SQLFinder,其開發(fā)環(huán)境為“Visual Studio 2010+.net 3.5+C#”,圖3為SQLFinder的流程。

圖3 SQLFinder流程
首先通過信息收集模塊收集輸入信息,包括FM信息文件、用戶設(shè)置信息和注入點URL信息等;然后隨著檢測的進行,利用啟發(fā)式特征篩選HFS獲得CurrentMatrix,并逐行遍歷獲得TCR以生成測試用例和進行檢測控制;之后發(fā)送測試請求并分析保存其響應(yīng)結(jié)果。此時,若完成所有TCR的檢測,則分析最終結(jié)果并結(jié)束檢測;若是有未完成的TCR,則返回CurrentMatrix并對下一條TCR繼續(xù)進行檢測,從而形成總體循環(huán)A,使得程序可以自動化完成SQL注入滲透測試。另外,在選擇下一條TCR之前,程序會對收集的信息進行判斷。一旦發(fā)現(xiàn)新的目標特征值,程序會返回到信息收集和特征篩選階段,根據(jù)當前測試的實時反饋信息動態(tài)更新TCR的特征值,并通過特征篩選算法重新篩選有效子矩陣,并替換當前測試矩陣CurrentMatrix,該矩陣會被用于后續(xù)的SQL注入漏洞檢測,從而構(gòu)成了循環(huán)B。循環(huán)B使HFS通過逐步縮小測試用例規(guī)則集合的范圍來降低不必要的冗余,提高測試的針對性,從而提高對電力業(yè)務(wù)信息系統(tǒng)的SQL注入漏洞滲透測試的準確性和檢測效率。
在本文中,我們選擇兩個著名的SQL注入滲透測試工具進行對比,SQLMap[15]和WVS Acunetix[16]。其中SQLMap是一款知名的開源SQL注入測試工具,它也被譽為目前世界上最優(yōu)秀的免費SQL注入工具。WVS Acunetix是一款著名的商用Web應(yīng)用安全測試工具,它也是目前使用率較高的一款商用工具。這兩款工具是自動化SQL注入滲透測試工具的代表。本文將這兩款測試工具表示為工具A和工具B(沒有特定的順序),并且設(shè)置為最高級檢測模式進行測試。
本文選取的測試數(shù)據(jù)集包括3個部分,如表1所示,其包括知名開源漏洞評估系統(tǒng)Wavsep[17]、模擬電力業(yè)務(wù)信息系統(tǒng)環(huán)境的漏洞評估系統(tǒng)VulWeb和共計約30 000條真實的動態(tài)頁面URL(real internet websites,IW-R)。

表1 測試數(shù)據(jù)集信息
Wavsep(the web application vulnerability scanner eva-luation project)是在“PHP 5+MySQL 5”環(huán)境下開發(fā)的知名公開數(shù)據(jù)集,其包含1067條URL、1080個注入點,以及人工植入的135個不同的SQL注入漏洞頁面,其可被用于評價Web應(yīng)用漏洞檢測工具的綜合檢測能力。VulWeb是模擬電力業(yè)務(wù)信息系統(tǒng)環(huán)境搭建的漏洞掃描工具評估系統(tǒng),其中包含了電力業(yè)務(wù)信息系統(tǒng)中常見的多種用不同類型的SQL注入漏洞。IW-R分為兩部分IW-R1和IW-R2,其中IW-R1是由10個存在安全漏洞風(fēng)險的Web系統(tǒng)抓取出的1992條URL,而IW-R2是由10個經(jīng)過嚴格的安全措施加固過的業(yè)務(wù)信息系統(tǒng)抓取出的28 513條URL,共有7983個注入點,IW-R可評測出掃描工具在真實環(huán)境下的掃描能力。
為了能夠?qū)Ρ疚乃龇椒ㄟM行評估,我們從以下兩個方面對其進行實驗:準確度(Accuracy)和效率(Efficiency)。檢測的準確度可從覆蓋度(Coverage)和誤報FP(False-Positive)來進行評估;關(guān)于檢測效率,在SQL注入滲透測試應(yīng)用過程中,由于網(wǎng)絡(luò)延遲的存在和Web應(yīng)用負載能力的限制等方面原因,對整體檢測效率和時間影響最大的是發(fā)送的HTTP請求數(shù)量,因而通過平均HTTP請求數(shù)量#AveRqst(average HTTP requests number)進行效率評估。本實驗的最終結(jié)果數(shù)據(jù)見表2。

表2 實驗數(shù)據(jù)詳細信息
覆蓋度(Coverage)描述了檢測工具檢出漏洞的能力,其可通過召回率RCR(re-call rate)表示,如式(1)所示
(1)
其中,#VDV是發(fā)現(xiàn)的有效漏洞數(shù)量(valid discovered vulnerabilities number),#REV是實際存在的漏洞數(shù)量(real existing vulnerabilities number)。誤報(FP)則表述的是檢測工具掃描出的虛假漏洞,即錯誤的掃描結(jié)果,誤報可通過誤報率FPR(false-positive rate)來描述,如式(2)所示
(2)
其中,#TDV為發(fā)現(xiàn)的漏洞總數(shù)(number of total disco-vered vulnerabilities),#TIP為注入點總數(shù)量(number of total injection point)。從表2我們可以看出,SQLFinder檢測出的有效漏洞數(shù)量#VDV為187,高于工具A和工具B的157和153個。從圖4可以看到SQLFinder在植入漏洞的數(shù)據(jù)集中具有更高的召回率RCR,并且具有更低的誤報率FPR。

圖4 召回率和誤報率對比
對于檢測工具的檢測效率,可以通過平均請求數(shù)進行評價,SQLFinder的總體平均請求數(shù)分別為工具A和工具B的7/10和3/10。并且SQLFinder的平均請求數(shù)隨著數(shù)據(jù)集變化逐漸變小并趨于平緩,其中VulWeb所包含的漏洞比例為100%,而SQLFinder對其檢測的平均請求數(shù)高達203,而隨著數(shù)據(jù)集中漏洞比例減小,正常頁面比例的增加,其平均請求數(shù)逐漸平穩(wěn)至86。由此可知,SQLFinder的檢測效率隨著正常頁面的比例增加而提高,這更為符合電力業(yè)務(wù)信息系統(tǒng)的實際情況。其它兩種工具的平均發(fā)送請求數(shù)比較平穩(wěn),保持在平均110和280左右浮動。SQLFinder的檢測效率在整體上要優(yōu)于工具A和工具B,并且更加適用于在電力信息系統(tǒng)中存在大量數(shù)據(jù)及頁面的情況下進行SQL注入漏洞滲透測試。
本文提出了一種基于特征的電力業(yè)務(wù)信息系統(tǒng)SQL注入漏洞自動化檢測方法,首先基于電力信息系統(tǒng)的特點建立了其注入漏洞安全特征矩陣模型FM,由FM可得到覆蓋度更高的測試用例規(guī)則TCR集合,通過啟發(fā)式的特征篩選HFS算法將TCR中相匹配的特征進行動態(tài)篩選,獲得精簡和優(yōu)化的TCR集合,實現(xiàn)了一種基于特征的電力信息系統(tǒng)啟發(fā)式滲透測試方法。最后為實驗部分,闡述了基于本文所述方法所設(shè)計的原型系統(tǒng)SQLFinder,給出了其在包括模擬電力業(yè)務(wù)信息系統(tǒng)環(huán)境的多個安全漏洞測試數(shù)據(jù)集上的測試數(shù)據(jù),并與其它知名滲透測試工具進行了比較和分析。實驗結(jié)果表明,本文所述方法可在保證整體檢測效率的前提下,有效提高對電力信息系統(tǒng)中SQL注入漏洞滲透測試的覆蓋度和準確度。