999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL注入漏洞檢測(cè)技術(shù)綜述

2020-05-12 12:02:28黃小丹
現(xiàn)代計(jì)算機(jī) 2020年10期
關(guān)鍵詞:程序分析檢測(cè)

黃小丹

(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)

0 引言

SQL注入常用于攻擊Web應(yīng)用程序,攻擊者的輸入值被傳輸?shù)匠绦蛑械臄?shù)據(jù)庫(kù)中執(zhí)行查詢語(yǔ)句,從而形成SQL代碼[2]。利用程序中存在的SQL注入漏洞并插入惡意SQL代碼,可以繞開(kāi)身份認(rèn)證,竊取用戶信息或篡改數(shù)據(jù)內(nèi)容等,引發(fā)嚴(yán)重后果。OWASP(Open Web Application Security Project)在2017年發(fā)布的一份安全調(diào)查中,SQL注入類漏洞(SQLIV)仍被列為2017年十大Web應(yīng)用程序漏洞之一,且位居榜首[3]。安全測(cè)試是Web應(yīng)用程序生命周期的重要步驟,有效的測(cè)試技術(shù)可以盡早檢測(cè)出程序的SQLIV,降低軟件開(kāi)發(fā)的相關(guān)成本。因此,人們提出了許多用于檢測(cè)SQLIV的測(cè)試技術(shù),包括靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試、滲透測(cè)試、模糊測(cè)試等。目前有關(guān)SQL注入的研究工作主要聚焦于SQL注入攻擊的實(shí)時(shí)檢測(cè)和防御技術(shù)。本文就SQL注入形成原因以及攻擊的主要方式有哪些、SQL注入漏洞檢測(cè)方法及一般檢測(cè)流程是什么等問(wèn)題進(jìn)行調(diào)研,并按照測(cè)試技術(shù)和測(cè)試流程對(duì)近幾年檢測(cè)SQLIV的技術(shù)進(jìn)行分析。本文采用系統(tǒng)文獻(xiàn)綜述方法,全面調(diào)研SQLIV檢測(cè)相關(guān)研究,目的是從測(cè)試角度清晰劃分用于檢測(cè)SQLIV的技術(shù),歸納現(xiàn)有的研究,并展望其未來(lái)發(fā)展趨勢(shì),以便安全測(cè)試人員根據(jù)不同測(cè)試目的和需解決問(wèn)題,選擇與研究相關(guān)檢測(cè)技術(shù)。

1 研究方法

系統(tǒng)文獻(xiàn)綜述(Systematic Literature Review)是一種基于文獻(xiàn)的系統(tǒng)化總結(jié)和分析方法,需要收集并綜合某具體研究問(wèn)題的成果。本文采用此方法分析和總結(jié)了近10年常用的SQL注入漏洞檢測(cè)相關(guān)技術(shù)。

(1)研究問(wèn)題的提出

問(wèn)題1:SQL注入漏洞的產(chǎn)生原因及注入方式是什么?SQL注入漏洞的產(chǎn)生一般是由于代碼編寫不規(guī)范造成,具體而言,哪些編程實(shí)踐容易造成SQL注入?另外,SQL注入方式多種多樣,常見(jiàn)的方式有哪些?

問(wèn)題2:用于SQL注入漏洞檢測(cè)的技術(shù)有哪些?根據(jù)是否檢測(cè)被測(cè)程序的源代碼,可分為白盒方法和黑盒方法,分別分析白盒、黑盒中一些常用的SQL注入漏洞檢測(cè)技術(shù)。

問(wèn)題3:SQL注入漏洞的一般檢測(cè)流程,以及流程各階段常用的檢測(cè)技術(shù)是什么?該問(wèn)題主要分析SQL注入漏洞檢測(cè)的流程,各階段需要解決的問(wèn)題,以及解決這些問(wèn)題常用的檢測(cè)技術(shù)。

(2)文獻(xiàn)檢索策略

本文文獻(xiàn)調(diào)研的數(shù)據(jù)來(lái)源于Web of Science、IEEE、ACM、CNKI等數(shù)據(jù)庫(kù),檢索工具采用百度和BING 等搜索器,檢索詞包括“SQL injection”、“Security testing”、“SQL 注入”、“安全測(cè)試”等關(guān)鍵字,檢索發(fā)表時(shí)間從2008年到2019年的文獻(xiàn)。對(duì)于檢索結(jié)果,采用人工方式,根據(jù)文獻(xiàn)題目和摘要等,確定其是否與SQL注入檢測(cè)主題相關(guān)。在此基礎(chǔ)上,進(jìn)行人工檢索,采用“滾雪球”方法,基于文獻(xiàn)的參考文獻(xiàn)進(jìn)行進(jìn)一步檢索。

(3)文獻(xiàn)篩選與分析

選取每個(gè)數(shù)據(jù)庫(kù)檢索結(jié)果的前200條記錄,按照去重復(fù)、去短文、去海報(bào)等原則對(duì)文獻(xiàn)進(jìn)行篩選,最終從檢索到的9911篇論文中篩選出內(nèi)容相關(guān)性較強(qiáng)的471篇論文,用于文獻(xiàn)計(jì)量分析。通過(guò)分析,圖1(a)展示了2008年到2019年有關(guān)SQL注入相關(guān)文獻(xiàn)的發(fā)表情況;圖1(b)展示了SQL注入相關(guān)文獻(xiàn)中SQL注入漏洞檢測(cè)、攻擊檢測(cè)或預(yù)防、綜述等類別文獻(xiàn)的占比情況,其中SQL注入漏洞檢測(cè)相關(guān)內(nèi)容的文獻(xiàn)共計(jì)181篇,占比38%,是SQL注入相關(guān)研究的關(guān)注熱點(diǎn)。然后從內(nèi)容、文章級(jí)別、引用量等方面考慮,入選了具有代表性的SQL注入漏洞檢測(cè)相關(guān)文獻(xiàn)共計(jì)40篇進(jìn)行文獻(xiàn)綜述,其中包括SCI級(jí)別論文5篇、A類論文6篇、B類3篇、C類9篇、中文核心2篇等。按照SQL注入產(chǎn)生原因、方式,SQL注入漏洞檢測(cè)流程及方法分別提取文獻(xiàn)中的相關(guān)內(nèi)容,回答提出的研究問(wèn)題。

(4)研究結(jié)果報(bào)告

對(duì)入選的相關(guān)文獻(xiàn)進(jìn)行分類、分析和總結(jié),回答提出的研究問(wèn)題,即SQL注入的漏洞產(chǎn)生原因和注入方式、檢測(cè)流程及常用的檢測(cè)方法,歸納本領(lǐng)域研究的主要問(wèn)題,展望未來(lái)的研究方向,為領(lǐng)域研究學(xué)者提供參考。

2 SQL注入原因和方式

2.1 SQL 注入漏洞成因

SQL注入產(chǎn)生的實(shí)質(zhì)是因?yàn)閻阂獯a被偽裝成正常的輸入數(shù)據(jù),與輸入命令拼接在一起,成為可執(zhí)行命令,提交到服務(wù)器的數(shù)據(jù)庫(kù)。其漏洞產(chǎn)生原因主要是由于編程人員Web安全知識(shí)不足或缺少安全編程經(jīng)驗(yàn),編寫的代碼不完善,

(1)不恰當(dāng)?shù)厥褂肁PI操作數(shù)據(jù)庫(kù)[9]:數(shù)據(jù)庫(kù)API方法用于連接數(shù)據(jù)庫(kù),指定的數(shù)據(jù)庫(kù)操作與URL或POST中的查詢字符串可進(jìn)行拼接,這就允許程序員在連接中執(zhí)行合法或非法查詢,可能造成SQL注入。

(2)缺乏有效的輸入驗(yàn)證和過(guò)濾機(jī)制[36]:應(yīng)用程序在沒(méi)有適當(dāng)?shù)仳?yàn)證和過(guò)濾用戶提交的數(shù)據(jù)的情況下,直接使用用戶提交數(shù)據(jù)與數(shù)據(jù)庫(kù)中常規(guī)SQL語(yǔ)句進(jìn)行拼接,構(gòu)造數(shù)據(jù)庫(kù)查詢或操作語(yǔ)句,從而引起SQL注入。

2.2 SQL 注入方式

對(duì)程序進(jìn)行SQL注入攻擊,以檢測(cè)程序本身漏洞時(shí),根據(jù)構(gòu)造SQL語(yǔ)句的不同,可劃分不同的注入方式[12,28]。

(1)同義反復(fù):主要目標(biāo)是將惡意代碼插入到多個(gè)條件語(yǔ)句中,使SQL語(yǔ)句的條件子句部分總是為真,致使原條件失效,主要用于繞過(guò)身份驗(yàn)證。例:

圖1

由于'1'='1'總是為真,將輸出accounts表中所有記錄。

(2)邏輯錯(cuò)誤查詢:向被測(cè)系統(tǒng)提交錯(cuò)誤的SQL語(yǔ)句,致其返回錯(cuò)誤信息,通過(guò)分析報(bào)錯(cuò)可獲得系統(tǒng)內(nèi)部信息。例:

從元數(shù)據(jù)表sysobjects中查詢用戶表xtype='u',并轉(zhuǎn)換為一個(gè)整數(shù),系統(tǒng)會(huì)因?yàn)榉欠ǖ念愋娃D(zhuǎn)換而拋出錯(cuò)誤,根據(jù)錯(cuò)誤信息可確定數(shù)據(jù)庫(kù)類型為SQL Server。

(3)聯(lián)合查詢:通過(guò)在 SQL查詢語(yǔ)句中加入“UNION”的求并集子句,可以獲得額外信息。例:

由于不存在login等于''的記錄,第一部分返回空集,而UNION部分將查詢出卡號(hào)為003的人的重要信息。

(4)復(fù)合查詢:使用分號(hào)“;”將不同的SQL查詢、插入、刪除等操作連接到原始查詢,以執(zhí)行數(shù)據(jù)。例:

執(zhí)行分號(hào)后的語(yǔ)句會(huì)刪除表users,從而破壞重要信息。

(5)存儲(chǔ)過(guò)程:存儲(chǔ)過(guò)程包含參數(shù),在參數(shù)傳遞過(guò)程中可能存在SQL注入。例:

該存儲(chǔ)過(guò)程返回值為true或false,當(dāng)插入?yún)?shù)為'';SHUTDOWN;'',將導(dǎo)致數(shù)據(jù)庫(kù)關(guān)閉。

(6)推理:構(gòu)造條件互相對(duì)立的SQL語(yǔ)句,通過(guò)觀察、收集系統(tǒng)在對(duì)立條件下的不同反應(yīng)獲得系統(tǒng)內(nèi)部信息,可分為條件盲注和時(shí)間盲注。例如條件盲注:

提交第一個(gè)查詢語(yǔ)句,應(yīng)用程序會(huì)返回錯(cuò)誤消息,但無(wú)法確定是因?yàn)閼?yīng)用程序驗(yàn)證輸入后阻止了攻擊,還是因?yàn)闂l件1=0導(dǎo)致了錯(cuò)誤。然后提交第二個(gè)查詢(恒為真),如果沒(méi)有錯(cuò)誤消息,即說(shuō)明程序未阻止攻擊,存在注入。

(7)編碼替換:利用ASCII編碼、十六進(jìn)制編碼、HTML編碼等方式轉(zhuǎn)化輸入形式以躲過(guò)防御和過(guò)濾機(jī)制。例:

如果程序未識(shí)別ASCII碼并過(guò)濾,數(shù)據(jù)庫(kù)將執(zhí)行SHUTDOWN命令。

3 SQL注入漏洞檢測(cè)方法

在安全測(cè)試中,檢測(cè)SQL注入漏洞指對(duì)被測(cè)程序進(jìn)行測(cè)試,以發(fā)現(xiàn)程序本身的漏洞。按照是否分析被測(cè)程序源代碼,可將檢測(cè)方法分為白盒和黑盒兩類。根據(jù)計(jì)量分析,圖2表示了SQL注入漏洞檢測(cè)相關(guān)文獻(xiàn)中用到檢測(cè)方法的占比情況。

圖2 SQL注入漏洞檢測(cè)方法分類占比

3.1 白盒方法

白盒技術(shù)通過(guò)分析被測(cè)程序源代碼,采用靜態(tài)或動(dòng)態(tài)檢測(cè)方式發(fā)掘程序代碼中可能存在的SQL注入漏洞。靜態(tài)分析技術(shù)是用于SQLIV檢測(cè)的白盒方法之一,如,DEKANT工具[39]結(jié)合靜態(tài)分析與機(jī)器學(xué)習(xí),使用序列模型(源代碼指令),學(xué)習(xí)一組帶注釋的源代碼片的漏洞特征,可識(shí)別源代碼中的漏洞。常用的白盒技術(shù)包括:數(shù)據(jù)流分析、污點(diǎn)分析、符號(hào)執(zhí)行、約束生成和求解等。

(1)數(shù)據(jù)流分析

獲取相關(guān)數(shù)據(jù)在應(yīng)用程序中的執(zhí)行路徑,分析執(zhí)行路徑上的數(shù)據(jù)流動(dòng)和可能取值。基于數(shù)據(jù)流分析,工具SQLInjectionGen使用AMNESIA和字符串參數(shù)檢測(cè),跟蹤用戶輸入到應(yīng)用程序代碼中的一個(gè)脆弱點(diǎn),從而發(fā)現(xiàn)SQL注入漏洞[20]。

(2)污點(diǎn)分析

動(dòng)態(tài)污點(diǎn)分析通過(guò)標(biāo)記污點(diǎn)數(shù)據(jù)并跟蹤污染數(shù)據(jù)流傳播,以發(fā)掘源數(shù)據(jù)與結(jié)果數(shù)據(jù)的關(guān)系,來(lái)檢測(cè)漏洞。Kieyzun等人[31]使用污點(diǎn)分析來(lái)識(shí)別流入SQL語(yǔ)句的無(wú)效輸入,以達(dá)到檢測(cè)目的。文獻(xiàn)[35]提出一種在Java虛擬機(jī)中的動(dòng)態(tài)污點(diǎn)分析方法,結(jié)合靜態(tài)分析技術(shù),收集可訪問(wèn)的污染流,減少了運(yùn)行時(shí)開(kāi)銷。

(3)符號(hào)執(zhí)行

符號(hào)執(zhí)行把程序執(zhí)行時(shí)的具體變量替換成符號(hào)值,來(lái)模擬每個(gè)路徑的執(zhí)行情況,執(zhí)行結(jié)果被整合成多條數(shù)學(xué)表達(dá)式,通過(guò)對(duì)表達(dá)式求解,就能獲得到達(dá)該結(jié)果的路徑。在漏洞檢測(cè)中一般將漏洞產(chǎn)生條件設(shè)置為執(zhí)行結(jié)果。SAFELI[10]是2008年基于Java Web應(yīng)用程序的SQL注入掃描器,為早期將符號(hào)執(zhí)行應(yīng)用于Web安全提供了一個(gè)概念。文獻(xiàn)[14]首先將代碼轉(zhuǎn)換為抽象語(yǔ)法樹(shù);然后使用符號(hào)執(zhí)行技術(shù)模擬程序的實(shí)際執(zhí)行,并進(jìn)行程序間分析來(lái)檢測(cè)漏洞,能夠識(shí)別出PHP的Web應(yīng)用程序中的SQL注入漏洞。

(4)約束生成和求解

許多程序的自動(dòng)測(cè)試、分析和驗(yàn)證技術(shù)可以有效地簡(jiǎn)化為約束生成階段,然后是約束求解階段。這種關(guān)注點(diǎn)的分離通常會(huì)使測(cè)試更加有效。Hampi[41]通過(guò)使用正則表達(dá)式、上下文無(wú)關(guān)語(yǔ)法、字符串術(shù)語(yǔ)之間的等式以及典型的字符串操作(如連接和提取子字符串)來(lái)指定約束,查找Web應(yīng)用程序中的SQL注入漏洞。

白盒技術(shù)的優(yōu)勢(shì)在于其基于源代碼,覆蓋率高;在程序的開(kāi)發(fā)和編碼階段就能檢測(cè)程序安全性,可以及時(shí)發(fā)現(xiàn)漏洞并進(jìn)行修復(fù),減少成本。但實(shí)際情況中可能無(wú)法獲取到程序源代碼,因此可用性不高;同時(shí),覆蓋源代碼的復(fù)雜度高,路徑不可達(dá)時(shí)白盒無(wú)法確認(rèn)漏洞。

3.2 黑盒方法

黑盒技術(shù)無(wú)需了解目標(biāo)系統(tǒng)源代碼和數(shù)據(jù)庫(kù)的結(jié)構(gòu),在提交測(cè)試用例后,通過(guò)直接分析返回的結(jié)果,判斷是否存在漏洞,常用于SQL注入漏洞檢測(cè)工具的研究[5,6,11]。在調(diào)研文獻(xiàn)中,黑盒方法共92篇(53%),是最主要的SQL注入漏洞檢測(cè)方法。文獻(xiàn)[16]設(shè)計(jì)的黑盒檢測(cè)工具,實(shí)現(xiàn)了三種不同的SQL注入漏洞檢測(cè)技術(shù):改進(jìn)的滲透測(cè)試、攻擊簽名和接口監(jiān)視、運(yùn)行時(shí)異常檢測(cè)。

滲透測(cè)試常使用黑盒技術(shù),指在可控范圍內(nèi)采用非破壞性的方法,發(fā)現(xiàn)目標(biāo)程序中存在的漏洞和威脅。通常采用爬蟲(chóng)方法收集頁(yè)面信息,查找注入點(diǎn),然后持續(xù)構(gòu)造測(cè)試用例測(cè)試目標(biāo)系統(tǒng),逐步深入地挖掘出系統(tǒng)漏洞。通常滲透測(cè)試需要根據(jù)程序的安全級(jí)別(如有無(wú)防火墻)[40]、攻擊類型(如盲SQL注入和基于錯(cuò)誤信息的SQL注入等)[19]采取不同的策略。

模糊測(cè)試也屬于黑盒方法,常用于安全測(cè)試,測(cè)試過(guò)程中向被測(cè)程序提交大量異常的、包含攻擊向量的測(cè)試數(shù)據(jù),并監(jiān)測(cè)被測(cè)程序行為,判斷是否存在安全漏洞。其本質(zhì)是是向輸入中加入噪音,以混淆目標(biāo)程序判斷力。它不需要關(guān)注被測(cè)系統(tǒng)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),具有較好的可復(fù)用性,但可能存在生成的有效測(cè)試數(shù)據(jù)不足、輸入空間較大造成冗余、難以精確定位漏洞位置等問(wèn)題。在SQL注入漏洞檢測(cè)的應(yīng)用上,文獻(xiàn)[38]通過(guò)對(duì)Web服務(wù)漏洞采用優(yōu)化分組的模糊測(cè)試技術(shù),解決了異常數(shù)據(jù)生成效率低的問(wèn)題,提高了漏洞檢測(cè)的效率以及準(zhǔn)確率,可用于檢測(cè)SQL注入漏洞。文獻(xiàn)[25]將模糊測(cè)試與進(jìn)化算法結(jié)合,以基于詞匯和語(yǔ)義結(jié)構(gòu)的適應(yīng)度度量為指導(dǎo),減少了測(cè)試用例的搜索空間。

黑盒技術(shù)無(wú)需獲取源代碼,相比白盒測(cè)試更為簡(jiǎn)單;在程序運(yùn)行環(huán)境下,通過(guò)模擬攻擊者行為實(shí)施漏洞利用,可提高準(zhǔn)確性。但其有效性和準(zhǔn)確性很大程度上又受限于測(cè)試用例生成與斷言[27],同時(shí),黑盒測(cè)試無(wú)法明確測(cè)試有效性程度和何時(shí)結(jié)束測(cè)試。

結(jié)合白盒與黑盒,即靜態(tài)代碼分析與動(dòng)態(tài)運(yùn)行時(shí)監(jiān)測(cè)相結(jié)合的方法,能夠在一定程度上改善漏洞誤報(bào)率的問(wèn)題,提高覆蓋率,在系統(tǒng)可靠性上也有很大的改觀。文獻(xiàn)[7]采用動(dòng)靜結(jié)合,使用污點(diǎn)分析和模糊測(cè)試技術(shù),實(shí)現(xiàn)了對(duì)二階SQL注入高精度、低誤報(bào)的檢測(cè)效果。但動(dòng)靜結(jié)合方法的有效性依賴于測(cè)試中的輸入值和對(duì)源代碼的觀察。為了提高分析的有效性,程序必須在有足夠測(cè)試輸入的情況下執(zhí)行。

4 SQL注入漏洞檢測(cè)流程

SQL注入漏洞檢測(cè)的一般流程是:首先確定被測(cè)目標(biāo)程序,在信息收集階段,確定被測(cè)程序有哪些可注入點(diǎn);然后,在測(cè)試用例生成階段使用某些技術(shù)生成SQL注入測(cè)試用例;在執(zhí)行階段,執(zhí)行生成的測(cè)試用例并監(jiān)控目標(biāo)程序;最后,結(jié)果分析階段需要根據(jù)監(jiān)測(cè)或被測(cè)程序響應(yīng)來(lái)分析檢測(cè)結(jié)果,確認(rèn)被測(cè)程序是否存在SQL注入漏洞。檢測(cè)流程如圖3所示。

圖3 SQL注入漏洞檢測(cè)一般流程

根據(jù)檢測(cè)流程劃分,SQL注入漏洞檢測(cè)的相關(guān)研究主要集中在信息收集、測(cè)試用例生成以及結(jié)果分析的方法提出和改進(jìn),主要目的是提高測(cè)試充分性、準(zhǔn)確性以及測(cè)試效率。

4.1 信息收集

信息收集,指收集被測(cè)程序的各項(xiàng)信息,如腳本語(yǔ)言類型、服務(wù)器類型、數(shù)據(jù)庫(kù)類型、鏈接頁(yè)面、輸入域等,以確定程序的可注入點(diǎn)。信息收集階段是發(fā)現(xiàn)漏洞的第一階段,其完備性對(duì)漏洞檢測(cè)的精度有很大影響。在這一階段,Web爬蟲(chóng)技術(shù)非常流行,能夠快速提供關(guān)于Web應(yīng)用程序的信息,但需要解決的主要問(wèn)題是提高覆蓋率、鏈接去重、提升效率等。例如,使用廣度優(yōu)先搜索(BFS)的爬蟲(chóng)算法提高覆蓋率[1],隱式爬蟲(chóng)將身份驗(yàn)證與爬蟲(chóng)結(jié)合,以提高數(shù)據(jù)完整性[22]。除爬蟲(chóng)外,William等人[33]通過(guò)實(shí)驗(yàn)表明,基于源代碼的信息收集方法,可以更徹底地運(yùn)行主體應(yīng)用程序和發(fā)現(xiàn)漏洞。

4.2 測(cè)試用例生成

良好的SQL注入測(cè)試用例生成技術(shù)能夠提高覆蓋率和檢測(cè)速率。本文介紹以下幾種常用于SQL注入的測(cè)試用例生成技術(shù)。

(1)機(jī)器學(xué)習(xí)

機(jī)器學(xué)習(xí)技術(shù)是研究和構(gòu)建能夠?qū)W習(xí)和預(yù)測(cè)數(shù)據(jù)的算法,通常需要提供大量數(shù)據(jù),并進(jìn)行分析,構(gòu)建模型進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的預(yù)測(cè)或決策,具有靈活性和可伸縮性。與SQL注入相關(guān)的機(jī)器學(xué)習(xí)技術(shù),目前大量研究集中在SQL注入攻擊的檢測(cè)以及預(yù)防[4,23,32]。在測(cè)試用例的生成上,文獻(xiàn)[37]根據(jù)自定義語(yǔ)法生成一套測(cè)試數(shù)據(jù),采用機(jī)器學(xué)習(xí)技術(shù)學(xué)習(xí)可繞過(guò)和不可繞過(guò)防火墻的測(cè)試用例特征,并根據(jù)特征有效的選擇測(cè)試用例或產(chǎn)生更多測(cè)試用例繞過(guò)防火墻,能夠檢測(cè)防火墻中的SQL注入漏洞。基于學(xué)習(xí)的漏洞檢測(cè)技術(shù)在檢測(cè)之前需要經(jīng)過(guò)數(shù)據(jù)預(yù)處理和訓(xùn)練階段,會(huì)導(dǎo)致計(jì)算開(kāi)銷。同時(shí),缺乏自適應(yīng)能力,不確定性和模糊性也是是機(jī)器學(xué)習(xí)應(yīng)用中存在的問(wèn)題。

(2)基于模型

基于模型的測(cè)試指為被測(cè)程序(SUT)建立高級(jí)模型,并自動(dòng)派生出測(cè)試用例和預(yù)期結(jié)果,執(zhí)行根據(jù)所建模型生成的測(cè)試用例并對(duì)比實(shí)際結(jié)果與模型指定結(jié)果,從而驗(yàn)證是否存在漏洞[15]。文獻(xiàn)[30]提出的規(guī)劃模型,使用規(guī)劃域定義語(yǔ)言(PDDL)描述,將計(jì)劃的調(diào)整添加到模型中,有助于生成更廣泛的測(cè)試用例,提升XSS和SQL注入漏洞檢測(cè)效果。鏈?zhǔn)焦舴椒╗18]是Alberto等人提出的一種基于模型測(cè)試的方法,其生成的抽象測(cè)試用例包含組成一系列鏈?zhǔn)焦簦蠢帽粶y(cè)程序漏洞的一系列攻擊)的操作,適用于不同的攻擊規(guī)則,但可能產(chǎn)生誤報(bào)。基于模型的方法,優(yōu)勢(shì)在于提高了測(cè)試自動(dòng)化程度,但僅能覆蓋模型中已指定的測(cè)試點(diǎn),而沒(méi)有建模的內(nèi)容可能無(wú)法被測(cè)試到。

(3)搜索技術(shù)

搜索技術(shù)應(yīng)用于測(cè)試用例生成,即把生成問(wèn)題轉(zhuǎn)化為進(jìn)化、搜索問(wèn)題,采用進(jìn)化算法使測(cè)試用例逐漸成為符合指定目標(biāo)的用例。常用的搜索技術(shù)包括遺傳算法、蟻群算法等。基于搜索的測(cè)試典型目的是最大化覆蓋率,而在SQL注入漏洞檢測(cè)中,其目的是找到漏洞[34]。文獻(xiàn)[8]基于搜索技術(shù),使用遺傳編程,能夠根據(jù)SQL語(yǔ)法生成多種類型的惡意SQL查詢語(yǔ)句,但需要降低測(cè)試用例中的語(yǔ)法錯(cuò)誤率。基于搜索技術(shù)生成測(cè)試用例,具有普遍適用性,但如何確定其適應(yīng)度函數(shù)使進(jìn)化效果更優(yōu)是目前最主要的難點(diǎn)。

(4)變異技術(shù)

變異技術(shù)用于測(cè)試用例生成可分為兩類,一類是對(duì)測(cè)試輸入進(jìn)行變異,使測(cè)試用例更充分,具有更好的檢測(cè)能力。Appelt等人[29]設(shè)計(jì)了一組變異算子(包括行為改變、語(yǔ)法修復(fù)和混淆三類),然后使用不同變異算子的組合,生成包含攻擊的輸入,從而增加了檢測(cè)出SQL注入漏洞的可能性。另一類是對(duì)源代碼進(jìn)行變異,通過(guò)殺死更多的代碼突變體來(lái)使測(cè)試用例更有效。Shahriar等人[9]將變異應(yīng)用于應(yīng)用程序的源代碼,提出使用9個(gè)注入操作符,將錯(cuò)誤注入SQL查詢條件和數(shù)據(jù)庫(kù)API方法調(diào)用中,并通過(guò)使用包含SQLIAs的測(cè)試數(shù)據(jù)殺死突變體來(lái)檢測(cè)SQL注入漏洞。文獻(xiàn)[21]結(jié)合這兩類變異技術(shù),把能夠有效殺死突變體的用例作為原始測(cè)試用例,再對(duì)用例進(jìn)行變異,提高了其覆蓋率和效率。

4.3 結(jié)果分析

測(cè)試用例執(zhí)行后,需要對(duì)結(jié)果進(jìn)行分析以判斷是否存在SQL注入漏洞,結(jié)果分析的準(zhǔn)確度直接決定了漏洞檢測(cè)的準(zhǔn)確度,因此,此階段主要目的是提高結(jié)果分析精度。在結(jié)果分析階段,一般通過(guò)分析程序響應(yīng)判斷是否存在漏洞。頁(yè)面比對(duì)算法常用于結(jié)果分析[17],但當(dāng)程序不返回錯(cuò)誤信息時(shí)該方法并不適用,例如SQL盲注。文獻(xiàn)[19]基于推理蛻變測(cè)試,提出一組邏輯表達(dá)式和邏輯運(yùn)算符,可用于推導(dǎo)程序上下文,檢測(cè)出SQL盲注,并有效降低了測(cè)試結(jié)果的假陽(yáng)性。另外,Nuno Autunes等人[24]通過(guò)比較SQL/XPath命令in和out攻擊的結(jié)構(gòu),提出了一種檢測(cè)SQL注入和XPath注入漏洞的測(cè)試精度改進(jìn)方法。文獻(xiàn)[33]提供了一種新的SQL注入響應(yīng)分析方法,在將查詢發(fā)送給數(shù)據(jù)庫(kù)之前對(duì)其進(jìn)行解析,以檢查它是否是成功的攻擊,如果是,則意味著攻擊突破了防御,系統(tǒng)存在漏洞。

5 結(jié)語(yǔ)

本文主要回顧了近10年的SQL注入漏洞檢測(cè)技術(shù)。研究的主要發(fā)現(xiàn)可以概括為:各類SQL注入攻擊方式、SQL注入漏洞形成原因、基于不同測(cè)試技術(shù)以及測(cè)試不同階段常用的SQL注入漏洞檢測(cè)方法的詳細(xì)調(diào)查報(bào)告,通過(guò)提供目前常用的檢測(cè)技術(shù)來(lái)感知SQL注入方面面臨的主要威脅和主要解決的問(wèn)題。通過(guò)調(diào)查和總結(jié)發(fā)現(xiàn):

(1)目前SQL注入漏洞檢測(cè)是安全測(cè)試的一大熱門研究問(wèn)題,主要想解決的問(wèn)題集中在如何有效地檢測(cè)出Web應(yīng)用中的SQL注入漏洞,減少檢測(cè)結(jié)果的假陽(yáng)性和假陰性,降低誤報(bào)率以及提高檢測(cè)效率上;

(2)如何結(jié)合多種技術(shù),提高漏洞注入點(diǎn)的發(fā)現(xiàn)能力、測(cè)試用例的生成能力等,實(shí)現(xiàn)更具針對(duì)性、自動(dòng)化程度更高的檢測(cè)技術(shù)也是目前的研究重點(diǎn);

(3)面對(duì)層出不窮的新型SQL注入攻擊,如何發(fā)現(xiàn)和選擇新的可用于此類攻擊的漏洞檢測(cè)技術(shù),也在持續(xù)的研究過(guò)程之中。本文調(diào)查結(jié)果有助于相關(guān)人員針對(duì)檢測(cè)中想解決的具體問(wèn)題選擇具體的方案并進(jìn)行下一步的研究。

猜你喜歡
程序分析檢測(cè)
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
隱蔽失效適航要求符合性驗(yàn)證分析
試論我國(guó)未決羈押程序的立法完善
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
主站蜘蛛池模板: 日韩人妻少妇一区二区| 中文国产成人精品久久| 一级毛片免费高清视频| 亚洲黄网在线| 2024av在线无码中文最新| 亚洲水蜜桃久久综合网站| 成人在线亚洲| 亚洲天堂网视频| 国产人成在线视频| 国产精品浪潮Av| 日韩精品久久久久久久电影蜜臀| 亚洲色大成网站www国产| 欧美在线国产| 亚洲视频四区| 无码电影在线观看| 国产91视频免费| 少妇被粗大的猛烈进出免费视频| 国产流白浆视频| 亚洲区视频在线观看| 亚洲天堂精品视频| 国产91精选在线观看| 亚洲色图狠狠干| 亚洲精品动漫在线观看| 亚洲国产成人超福利久久精品| 欧美高清国产| 亚洲a级在线观看| 91精品国产91久久久久久三级| 国产色伊人| 国产色爱av资源综合区| 婷婷色中文网| 日本欧美中文字幕精品亚洲| 欧美无专区| 欧美中文字幕在线播放| 久久久久亚洲av成人网人人软件| 毛片手机在线看| 日韩久草视频| 女人爽到高潮免费视频大全| 国产亚洲美日韩AV中文字幕无码成人| 欧美天堂久久| 波多野结衣中文字幕一区二区 | 激情六月丁香婷婷四房播| 成人综合久久综合| 亚洲开心婷婷中文字幕| 日韩无码视频专区| 久久亚洲日本不卡一区二区| 国产精品任我爽爆在线播放6080| 欧美一区中文字幕| 久久中文无码精品| 国产成人久视频免费| 国产成本人片免费a∨短片| 19国产精品麻豆免费观看| 亚洲中久无码永久在线观看软件| 91精品国产麻豆国产自产在线| 一级不卡毛片| 久久久久无码精品| 永久免费无码成人网站| AV不卡在线永久免费观看| 亚洲成a∧人片在线观看无码| 亚洲床戏一区| 国内精品伊人久久久久7777人| 亚洲欧美综合另类图片小说区| 成人免费午夜视频| 中文字幕亚洲精品2页| 日本一区高清| 日本一本正道综合久久dvd| 米奇精品一区二区三区| 国产精品成人观看视频国产| 色视频国产| 69av在线| 亚洲人成网线在线播放va| 国产成人三级在线观看视频| 91久久青青草原精品国产| 国产黄网站在线观看| 日本精品αv中文字幕| 呦女亚洲一区精品| 国产一区在线视频观看| 国产精品无码翘臀在线看纯欲| 欧美激情二区三区| 色吊丝av中文字幕| 久久久久国产一级毛片高清板| 国产丝袜第一页| 在线观看精品自拍视频|