国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQL注入漏洞挖掘技術(shù)研究

2024-09-14 00:00:00袁也陸余良趙家振朱凱龍
物聯(lián)網(wǎng)技術(shù) 2024年3期
關(guān)鍵詞:動(dòng)態(tài)分析機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)

摘 要:SQL注入漏洞廣泛存在于Web應(yīng)用程序中,允許攻擊者在非授權(quán)條件下不受限制地訪問(wèn)Web應(yīng)用程序所使用的數(shù)據(jù)庫(kù),對(duì)Web應(yīng)用程序安全構(gòu)成了嚴(yán)重威脅,如何挖掘SQL注入漏洞是網(wǎng)絡(luò)安全領(lǐng)域的一個(gè)重要研究課題。近年來(lái),圍繞SQL注入漏洞挖掘,形成了多種理論成果和實(shí)用工具,為了厘清研究現(xiàn)狀和未來(lái)發(fā)展方向,本文廣泛調(diào)研了相關(guān)領(lǐng)域研究進(jìn)展,對(duì)SQL注入漏洞挖掘方面的已有研究成果進(jìn)行了系統(tǒng)梳理。首先,介紹了SQL注入的基本概念及不同類型SQL注入的攻擊原理;然后,詳細(xì)闡述了SQL注入漏洞挖掘技術(shù);最后,總結(jié)并討論了SQL注入漏洞挖掘技術(shù)的未來(lái)發(fā)展方向。

關(guān)鍵詞:SQL注入漏洞;Web應(yīng)用程序;數(shù)據(jù)庫(kù);SQL注入漏洞挖掘技術(shù);靜態(tài)分析;動(dòng)態(tài)分析;機(jī)器學(xué)習(xí)

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2024)03-00-04

0 引 言

Web 應(yīng)用程序在社會(huì)生活中扮演著極其重要的角色,被廣泛應(yīng)用于數(shù)字政務(wù)、社交平臺(tái)、購(gòu)物網(wǎng)站、在線教育、網(wǎng)上銀行、遠(yuǎn)程辦公等領(lǐng)域。存在于Web應(yīng)用程序的漏洞可以被攻擊者利用開(kāi)展數(shù)據(jù)竊取、拒絕服務(wù)、獲取權(quán)限等攻擊,給社會(huì)穩(wěn)定和個(gè)人信息安全帶來(lái)了嚴(yán)重威脅。SQL注入漏洞是數(shù)量最多、影響范圍最廣的Web應(yīng)用漏洞之一,圖1顯示了2013年以來(lái)國(guó)家信息安全漏洞共享平臺(tái)(China National Vulnerability Database, CNVD)收錄的SQL注入漏洞數(shù)量,可以看出整體的趨勢(shì)是不斷增長(zhǎng)的,從2013年到2021年,收錄的SQL注入漏洞數(shù)量增長(zhǎng)了5倍[1]。開(kāi)放式Web應(yīng)用程序安全項(xiàng)目(Open Web Application Security Project, OWASP)在2013年和2017年發(fā)布的Web安全漏洞Top10中顯示,注入類漏洞危害程度排名第一[2],其中SQL注入漏洞是注入漏洞中最主要的一類漏洞。因此,如何挖掘SQL注入漏洞是網(wǎng)絡(luò)安全研究者關(guān)注的重要課題。

近年來(lái),國(guó)內(nèi)外學(xué)者針對(duì)SQL注入漏洞做了大量研究, SQL注入漏洞挖掘通過(guò)對(duì)Web應(yīng)用程序注入點(diǎn)進(jìn)行漏洞檢測(cè),及時(shí)發(fā)現(xiàn)并修復(fù)漏洞,從而防止攻擊者利用SQL注入漏洞實(shí)施攻擊。傳統(tǒng)的SQL注入漏洞挖掘技術(shù)根據(jù)技術(shù)特點(diǎn)可以分為靜態(tài)分析方法和動(dòng)態(tài)分析方法。隨著機(jī)器學(xué)習(xí)方法的快速發(fā)展,研究者將機(jī)器學(xué)習(xí)應(yīng)用到SQL注入漏洞挖掘中,出現(xiàn)了基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù),提高了漏洞挖掘的精準(zhǔn)度。

本文廣泛調(diào)研了SQL注入漏洞挖掘技術(shù)研究進(jìn)展,對(duì)已有研究成果進(jìn)行了系統(tǒng)梳理。首先介紹了SQL注入的基本概念、不同類型SQL注入的攻擊原理以及SQL注入的危害;然后詳細(xì)闡述了SQL注入漏洞挖掘技術(shù);最后展望了SQL注入漏洞挖掘技術(shù)的未來(lái)發(fā)展方向。

1 SQL注入概述

SQL注入是一種常見(jiàn)的數(shù)據(jù)庫(kù)攻擊手段:攻擊者通過(guò)在Web表單的用戶輸入框中填寫包含SQL關(guān)鍵字的數(shù)據(jù)來(lái)使數(shù)據(jù)庫(kù)執(zhí)行非常規(guī)代碼,從而可以非法且不受限制地訪問(wèn)存儲(chǔ)在后端數(shù)據(jù)庫(kù)中的數(shù)據(jù)[3]。本節(jié)首先介紹SQL注入攻擊流程,然后根據(jù)攻擊原理對(duì)SQL注入進(jìn)行分類介紹,最后說(shuō)明SQL注入的危害。

1.1 SQL注入攻擊流程

攻擊者將惡意的SQL代碼插入到SQL查詢語(yǔ)句中,之后再將這些特殊的SQL查詢語(yǔ)句傳遞給后臺(tái)的數(shù)據(jù)庫(kù)服務(wù)器加以解析并執(zhí)行,最終返回攻擊者想要得到的信息[3]。

圖2顯示了 SQL注入攻擊流程。

一次成功的SQL注入攻擊,必須要滿足三個(gè)條件:一是找到SQL注入點(diǎn),并能夠注入惡意查詢語(yǔ)句;二是程序?qū)τ脩舻妮斎氩](méi)有嚴(yán)格的檢查和過(guò)濾;三是惡意的查詢語(yǔ)句會(huì)被數(shù)據(jù)庫(kù)正常執(zhí)行,并返回攻擊者想要的數(shù)據(jù)庫(kù)信息[3]。

1.2 SQL注入類型

根據(jù)攻擊原理不同,SQL注入可以分為永真式攻擊、推理式攻擊、堆疊注入攻擊、存儲(chǔ)階段攻擊和編碼攻擊[3]。

永真式攻擊:通過(guò)構(gòu)造SQL查詢條件始終為真,導(dǎo)致后臺(tái)的身份驗(yàn)證條件無(wú)效,從而達(dá)到繞過(guò)服務(wù)器驗(yàn)證的目的。例如:SELECT * FROM users WHERE name= 'admin' OR '1'='1',攻擊者利用OR '1' ='1'使得查詢表達(dá)式永遠(yuǎn)為真,導(dǎo)致程序?qū)Σ樵儣l件的判斷失去作用,從而非法獲取數(shù)據(jù)。

推理式攻擊:當(dāng)網(wǎng)站的安全性較高,數(shù)據(jù)庫(kù)錯(cuò)誤消息不會(huì)通過(guò)前端為攻擊者提供反饋時(shí),攻擊者必須使用不同的方法從數(shù)據(jù)庫(kù)獲得響應(yīng)。在這種情況下,攻擊者將命令注入網(wǎng)站,然后通過(guò)觀察網(wǎng)站功能的變化情況和變化的時(shí)間快慢來(lái)推斷數(shù)據(jù)庫(kù)的一些參數(shù)。主要有兩種方式:一種是布爾盲注,通過(guò)向服務(wù)器提出對(duì)錯(cuò)問(wèn)題,從頁(yè)面的反應(yīng)中推斷出信息。如果注入的語(yǔ)句評(píng)估為true,網(wǎng)站正常運(yùn)行;如果語(yǔ)句的評(píng)估結(jié)果為1,雖然沒(méi)有描述性的錯(cuò)誤消息,但該頁(yè)面與正常運(yùn)行的頁(yè)面也有很大的不同。另一種是時(shí)間盲注,將時(shí)間延遲函數(shù)插入到SQL查詢語(yǔ)句中,通過(guò)觀察Web應(yīng)用程序的響應(yīng)是否有延遲來(lái)判斷注入是否成功。

堆疊注入攻擊:在這種攻擊類型中,攻擊者利用“;”在原有查詢中插入附加查詢。在“;”后面加入構(gòu)造好的查詢,相當(dāng)于執(zhí)行多條SQL語(yǔ)句,例如:“SELECT * FROM users WHERE name='admin';DELETE FROM users;”。但是這類攻擊實(shí)現(xiàn)的前提是數(shù)據(jù)庫(kù)允許在單個(gè)字符串中包含多條語(yǔ)句。如果不允許,則攻擊很難實(shí)現(xiàn)。

存儲(chǔ)階段攻擊:許多數(shù)據(jù)庫(kù)都有內(nèi)置的存儲(chǔ)過(guò)程。攻擊者使用惡意SQL注入代碼執(zhí)行這些內(nèi)置函數(shù),從而進(jìn)行一些非法操作。當(dāng)正常的SQL語(yǔ)句被創(chuàng)建為存儲(chǔ)過(guò)程時(shí),攻擊者可以注入另一個(gè)存儲(chǔ)過(guò)程作為替代,以執(zhí)行特權(quán)升級(jí)、遠(yuǎn)程命令等惡意操作。

編碼攻擊:編碼攻擊不是一種獨(dú)立的攻擊方法,但它可以幫助上述方法逃脫過(guò)濾器。一些網(wǎng)站會(huì)通過(guò)過(guò)濾特定關(guān)鍵字來(lái)對(duì)用戶輸入進(jìn)行過(guò)濾,攻擊者可以改變這些關(guān)鍵字的編碼方式從而達(dá)到逃避檢測(cè)的效果,例如使用十六進(jìn)制、ASCII和Unicode字符編碼。一般情況下,檢測(cè)技術(shù)無(wú)法過(guò)濾關(guān)鍵字的所有編碼形式,從而導(dǎo)致過(guò)濾失敗。這種攻擊方式很難完全防御,因?yàn)樗箝_(kāi)發(fā)人員考慮所有可能的編碼,這在實(shí)踐中并不可行。動(dòng)態(tài)SQL語(yǔ)句是在執(zhí)行過(guò)程中構(gòu)造的,它根據(jù)不同的條件產(chǎn)生不同的SQL語(yǔ)句。Web應(yīng)用程序廣泛使用動(dòng)態(tài)SQL語(yǔ)句是為了增加應(yīng)用的靈活性和通用性,同時(shí)也給開(kāi)發(fā)人員帶來(lái)了便利,但是這也帶來(lái)了安全隱患:沒(méi)有經(jīng)過(guò)驗(yàn)證的輸入會(huì)使得動(dòng)態(tài)SQL語(yǔ)句存在SQL注入的風(fēng)險(xiǎn)[4]。

1.3 SQL注入危害

攻擊者利用SQL注入獲取Web應(yīng)用程序數(shù)據(jù)庫(kù)中的大量數(shù)據(jù),從而實(shí)現(xiàn)一些惡意目的,給程序安全造成極大威脅。具體危害主要有以下四方面:

(1)數(shù)據(jù)泄露導(dǎo)致用戶隱私信息泄露;

(2)攻擊者通過(guò)SQL注入獲得了數(shù)據(jù)庫(kù)管理員權(quán)限,可能對(duì)數(shù)據(jù)庫(kù)進(jìn)行惡意操作,例如篡改數(shù)據(jù)、刪除數(shù)據(jù),甚至直接刪庫(kù);

(3)通過(guò)操作數(shù)據(jù)庫(kù)對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行篡改,發(fā)布一些違規(guī)信息;

(4)在滿足條件的情況下可以直接向服務(wù)器寫入木馬,獲取服務(wù)器權(quán)限。

2 SQL注入漏洞挖掘技術(shù)

SQL注入漏洞挖掘技術(shù)通過(guò)對(duì)Web應(yīng)用程序進(jìn)行分析,發(fā)現(xiàn)并修復(fù)潛在的SQL注入漏洞,從而防御SQL注入攻擊。傳統(tǒng)的SQL注入漏洞挖掘技術(shù)按照是否運(yùn)行目標(biāo)程序可以分為基于靜態(tài)分析的漏洞挖掘技術(shù)和基于動(dòng)態(tài)分析的漏洞挖掘技術(shù)[5]。近年來(lái),以深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)為代表的機(jī)器學(xué)習(xí)成為網(wǎng)絡(luò)安全領(lǐng)域的研究熱點(diǎn),機(jī)器學(xué)習(xí)經(jīng)常被用于減少靜態(tài)源代碼分析的誤報(bào)率,提高動(dòng)態(tài)惡意數(shù)據(jù)生成的效率,從而提高SQL注入漏洞的挖掘效果。因此,本節(jié)按照是否應(yīng)用機(jī)器學(xué)習(xí)將SQL注入漏洞挖掘技術(shù)分為傳統(tǒng)SQL注入漏洞挖掘技術(shù)和基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)。

2.1 傳統(tǒng)SQL注入漏洞挖掘技術(shù)

傳統(tǒng)SQL注入漏洞挖掘技術(shù)主要包括基于靜態(tài)分析的漏洞挖掘技術(shù)和基于動(dòng)態(tài)分析的漏洞挖掘技術(shù)。其中,基于靜態(tài)分析的漏洞挖掘技術(shù)是在不運(yùn)行Web應(yīng)用的方式下進(jìn)行的一種代碼分析技術(shù); 基于動(dòng)態(tài)分析的漏洞挖掘技術(shù)需要為Web應(yīng)用程序構(gòu)建適當(dāng)?shù)拇a執(zhí)行環(huán)境,然后在Web應(yīng)用程序成功運(yùn)行的前提下進(jìn)行。由于實(shí)施原理不同,分類進(jìn)行介紹可以更好地講清楚兩種漏洞挖掘技術(shù)的特點(diǎn)、優(yōu)勢(shì)以及局限性。

2.1.1 基于靜態(tài)分析的SQL注入漏洞挖掘技術(shù)

靜態(tài)分析方法指的是在不執(zhí)行Web應(yīng)用程序代碼的前提下對(duì)其進(jìn)行分析,主要借助于抽象語(yǔ)法樹(shù)、控制流程圖、調(diào)用流程圖等代碼語(yǔ)法語(yǔ)義特征,根據(jù)漏洞的特征進(jìn)行匹配從而發(fā)現(xiàn)漏洞[6]。

Medeiros等人[7]提出了一種名為WAP的漏洞檢測(cè)方法,該方法主要利用代碼分析和靜態(tài)污點(diǎn)分析。主要有兩個(gè)步驟:一是通過(guò)代碼分析,獲取從污染源到易被感染的執(zhí)行點(diǎn)之間的代碼切片;二是使用靜態(tài)污點(diǎn)分析方法分析用戶輸入的數(shù)據(jù)是否會(huì)不經(jīng)過(guò)過(guò)濾便到達(dá)易被感染的執(zhí)行點(diǎn),從而檢測(cè)出漏洞。但是由于該技術(shù)不支持上下文,在遇到別名問(wèn)題時(shí)出現(xiàn)的誤報(bào)比較多。

Livshits等人[8]針對(duì)別名問(wèn)題提出了一種解決思路,該技術(shù)根據(jù)用戶提供的漏洞規(guī)范,通過(guò)靜態(tài)分析在Web應(yīng)用程序代碼中找到與規(guī)范匹配的所有漏洞,并且改進(jìn)對(duì)象命名方案給出了解決別名問(wèn)題的方案,實(shí)驗(yàn)結(jié)果也證明該方案有效,減少了由于別名問(wèn)題導(dǎo)致的假陽(yáng)性數(shù)量。

Wang等人[9]提出了一種稱為SPINNER的SQL注入漏洞檢測(cè)技術(shù)。當(dāng)前的靜態(tài)分析方法中,根據(jù)邏輯順序可分為前向分析和后向分析。前向分析即從污點(diǎn)源追蹤污點(diǎn)到執(zhí)行點(diǎn),這種方式容易導(dǎo)致過(guò)度污染;后向分析即從命令執(zhí)行API的參數(shù)追溯變量的來(lái)源,這種方式由于復(fù)雜的數(shù)據(jù)依賴關(guān)系比較困難,容易導(dǎo)致污染不足。該系統(tǒng)開(kāi)發(fā)了一種雙向分析方式,它結(jié)合了前向靜態(tài)分析技術(shù)和后向靜態(tài)分析技術(shù),從而降低兩種方式的局限性。但是這種檢測(cè)方式結(jié)合了兩種不同方式,也隨之增加了額外的開(kāi)銷,這是該系統(tǒng)明顯的局限性。

尤楓等人[10]提出一種可以減少系統(tǒng)開(kāi)銷的方案,即用 Chopping切片技術(shù)對(duì)代碼進(jìn)行切片分析的方法。首先對(duì)源代碼進(jìn)行詞法和語(yǔ)法分析并轉(zhuǎn)換成依賴圖,然后通過(guò) Chopping切片規(guī)則獲取含有SQL注入的疑似路徑,自動(dòng)生成攻擊向量并提交運(yùn)行結(jié)果進(jìn)行驗(yàn)證。但是這種方法在應(yīng)用程序規(guī)模較大時(shí),系統(tǒng)依賴圖規(guī)模隨之變得龐大且復(fù)雜,不利于切片獲取。

靜態(tài)分析方法無(wú)需執(zhí)行目標(biāo)程序,不受制于程序的特定運(yùn)行環(huán)境,且能夠?qū)Υa進(jìn)行全覆蓋分析,但是不能很好地處理Web應(yīng)用語(yǔ)言的動(dòng)態(tài)特性,會(huì)引入較高的誤報(bào)率;其次,靜態(tài)污點(diǎn)分析需要對(duì)整個(gè)源程序的依賴關(guān)系進(jìn)行梳理,導(dǎo)致系統(tǒng)開(kāi)銷比較大[11]。

2.1.2 基于動(dòng)態(tài)分析的SQL注入漏洞挖掘技術(shù)

動(dòng)態(tài)分析技術(shù)需要實(shí)際執(zhí)行程序,搭建完程序運(yùn)行環(huán)境后,在程序成功運(yùn)行的前提下進(jìn)行調(diào)試、模糊測(cè)試、模擬攻擊等,最后根據(jù)輸出結(jié)果挖掘相關(guān)漏洞。在動(dòng)態(tài)分析技術(shù)中,測(cè)試用例是一個(gè)關(guān)鍵性問(wèn)題,如何提升測(cè)試用例的質(zhì)量成為需要研究人員重點(diǎn)考慮的研究方向。

Wang等人[12]針對(duì)測(cè)試用例匱乏的問(wèn)題提出一種改進(jìn)方案,先利用增廣攻擊樹(shù)構(gòu)建出測(cè)試用例的生成模型,然后利用模型批量生產(chǎn)測(cè)試用例。雖然該方法有效解決了測(cè)試用例短缺的問(wèn)題,但是這些測(cè)試用例的準(zhǔn)確性卻無(wú)法得到保障。

田偉[13]提出一種改進(jìn)測(cè)試用例準(zhǔn)確性的方案。在Wang等人[12]的方法思路基礎(chǔ)上,提出了模型驅(qū)動(dòng)的測(cè)試用例生成方法,根據(jù)不同的運(yùn)行環(huán)境構(gòu)建不同的模型,既能達(dá)到批量生產(chǎn)測(cè)試用例的效果,又具備了一定的精確性。但是該方法的短板也很明顯,模型根據(jù)運(yùn)行環(huán)境定制,無(wú)法拓展延伸。

成曉利[14]針對(duì)測(cè)試用例生成偏差大導(dǎo)致檢測(cè)效率低的問(wèn)題,通過(guò)對(duì)SQL注入漏洞進(jìn)行等級(jí)劃分;再針對(duì)不同的等級(jí)設(shè)計(jì)不同的測(cè)試用例,通過(guò)分級(jí)操作有效提高檢測(cè)效率。

Boyd等人[15]提出了一種基于模擬攻擊的漏洞挖掘方法,該方法實(shí)現(xiàn)了一個(gè)SQL注入漏洞掃描器,由爬蟲面板、參數(shù)測(cè)試面板、漏洞利用面板、報(bào)告生成面板組成。爬蟲面板利用網(wǎng)絡(luò)爬蟲爬取網(wǎng)頁(yè)和Web應(yīng)用程序,獲得網(wǎng)頁(yè)源碼和Web應(yīng)用程序源碼;然后使用字符串匹配算法從剛剛獲取的源碼文件中提取相應(yīng)參數(shù),由參數(shù)測(cè)試面板對(duì)參數(shù)進(jìn)行測(cè)試,如果測(cè)試結(jié)果顯示存在漏洞的可能性,就通過(guò)漏洞面板進(jìn)一步挖掘漏洞;最后由報(bào)告面板生成報(bào)告。

動(dòng)態(tài)分析方法能夠?qū)Τ绦虻膶傩赃M(jìn)行分析,精確定位漏洞代碼,誤報(bào)率低,但是動(dòng)態(tài)分析無(wú)法像靜態(tài)分析那樣對(duì)整個(gè)源代碼進(jìn)行審查,單一的執(zhí)行路徑也容易導(dǎo)致路徑覆蓋不全面,容易出現(xiàn)漏報(bào)的問(wèn)題;其次,動(dòng)態(tài)分析往往對(duì)執(zhí)行環(huán)境有要求,為不同項(xiàng)目搭建不同的運(yùn)行環(huán)境不適用于大型程序。

2.2 基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)

鑒于傳統(tǒng)的SQL注入漏洞挖掘技術(shù)的不足,提出一種能夠自主學(xué)習(xí)、精確度高并且對(duì)實(shí)施環(huán)境要求不高的漏洞挖掘技術(shù)十分必要。在當(dāng)今機(jī)器學(xué)習(xí)與大數(shù)據(jù)的環(huán)境下,從數(shù)據(jù)中可以發(fā)現(xiàn)許多有效信息,基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)就是利用機(jī)器學(xué)習(xí)算法自主學(xué)習(xí)大量漏洞數(shù)據(jù),從海量數(shù)據(jù)中提取出漏洞代碼段特征,更深層次地理解代碼語(yǔ)義,然后對(duì)SQL注入漏洞進(jìn)行挖掘。

Shi等人[16]提出一種利用機(jī)器學(xué)習(xí)強(qiáng)大的自我學(xué)習(xí)能力進(jìn)行漏洞挖掘的方法,該方法利用機(jī)器學(xué)習(xí)的算法自動(dòng)學(xué)習(xí)SQL語(yǔ)句結(jié)構(gòu),并構(gòu)建一個(gè)安全語(yǔ)句知識(shí)庫(kù);在檢測(cè)漏洞時(shí),利用規(guī)則匹配的原理,通過(guò)對(duì)比知識(shí)庫(kù)中的SQL語(yǔ)句從而發(fā)現(xiàn)SQL注入漏洞。

Zhang[17]提出了一種使用深度學(xué)習(xí)算法識(shí)別SQL注入漏洞的方法。該方法提取的特征主要包括三組:文件是否包含輸入驗(yàn)證和清理的屬性、文件定義的所有功能(某些項(xiàng)目可能定義自己的驗(yàn)證和清理方法)和特征的上下文,然后使用多種機(jī)器學(xué)習(xí)算法和三組特征來(lái)訓(xùn)練分類器,最終達(dá)到識(shí)別源代碼文件中SQL注入漏洞的效果。

郭寧[18]提出了一種改進(jìn)利用深度學(xué)習(xí)挖掘SQL注入漏洞的方法。該方法主要有兩個(gè)方面:一是利用字節(jié)碼進(jìn)行特征提取,由于字節(jié)碼是中間語(yǔ)言,因此通過(guò)向量轉(zhuǎn)換可以去除源代碼中的冗余字符避免過(guò)度擬合;二是以LSTM算法模型為基礎(chǔ)構(gòu)建神經(jīng)網(wǎng)絡(luò)。該方案不僅利用深度學(xué)習(xí)模型提升了漏洞挖掘的精確性,還有效緩解了過(guò)度擬合的問(wèn)題。

基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)有效提升了漏洞挖掘的精準(zhǔn)度,并且不需要搭建環(huán)境,但是仍然存在一些問(wèn)題:一是基于機(jī)器學(xué)習(xí)的方式嚴(yán)重依賴于預(yù)定義特征的準(zhǔn)確性;二是數(shù)據(jù)集對(duì)基于機(jī)器學(xué)習(xí)的方法來(lái)說(shuō)非常重要,目前仍然缺乏高質(zhì)量且大數(shù)量的數(shù)據(jù)集[19];三是跨項(xiàng)目的問(wèn)題,不同項(xiàng)目的開(kāi)發(fā)環(huán)境不同,使用的開(kāi)發(fā)框架也不相同,導(dǎo)致漏洞特征也不相同,因此某個(gè)Web應(yīng)用程序的漏洞代碼并不能作為另一個(gè)應(yīng)用程序的機(jī)器學(xué)習(xí)的訓(xùn)練樣本。

3 SQL注入漏洞挖掘技術(shù)研究展望

如今,隨著各種網(wǎng)絡(luò)攻擊入侵技術(shù)的不斷更新,SQL注入形式也不斷翻新,導(dǎo)致越來(lái)越難以防御。經(jīng)過(guò)多年的研究,在傳統(tǒng)的SQL注入漏洞挖掘技術(shù)方面取得了顯著進(jìn)展,積累了豐富的理論知識(shí),但是受制于工作原理,在面對(duì)新型的SQL注入時(shí)效果并不理想。隨著人工智能技術(shù)的興起,研究人員將機(jī)器學(xué)習(xí)技術(shù)結(jié)合到SQL注入漏洞挖掘技術(shù)中,并取得了顯著成果,但是SQL注入變化較多,如何結(jié)合機(jī)器學(xué)習(xí)依然是一個(gè)開(kāi)放性問(wèn)題,面臨著諸多挑戰(zhàn),并且基于機(jī)器學(xué)習(xí)的方法還存在模型選擇難、缺乏統(tǒng)一評(píng)估標(biāo)準(zhǔn)等弊端。結(jié)合近幾年的研究趨勢(shì),SQL注入漏洞挖掘技術(shù)可以從以下幾個(gè)方向展開(kāi)研究。

3.1 規(guī)范化數(shù)據(jù)集建設(shè)

對(duì)于基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)而言,需要對(duì)應(yīng)數(shù)據(jù)集來(lái)進(jìn)行訓(xùn)練數(shù)據(jù)集的構(gòu)建。數(shù)據(jù)集就是具有漏洞的Web應(yīng)用程序代碼,然而現(xiàn)實(shí)中通常一款Web應(yīng)用程序存在漏洞的數(shù)量并不足以支撐機(jī)器學(xué)習(xí)所需。因此當(dāng)前需要一個(gè)統(tǒng)一的數(shù)據(jù)集,從而方便研究人員進(jìn)行相應(yīng)的訓(xùn)練數(shù)據(jù)集的構(gòu)建,并便于對(duì)機(jī)器學(xué)習(xí)模型的效果進(jìn)行比較。

3.2 面向平臺(tái)技術(shù)革新

隨著物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等技術(shù)的發(fā)展,對(duì)SQL注入漏洞挖掘技術(shù)的研究已經(jīng)由傳統(tǒng)Web應(yīng)用程序向新技術(shù)設(shè)施平臺(tái)擴(kuò)展。首先無(wú)論是物聯(lián)網(wǎng),還是云設(shè)備,亦或是其他大數(shù)據(jù)存儲(chǔ)設(shè)備,相比于傳統(tǒng)Web應(yīng)用程序數(shù)據(jù)庫(kù),數(shù)據(jù)量更大、流量更多,為了應(yīng)對(duì)這些變化,SQL注入漏洞挖掘技術(shù)的性能需要進(jìn)一步提升,實(shí)現(xiàn)功耗更低、實(shí)時(shí)性更強(qiáng);其次,伴隨新平臺(tái)出現(xiàn)的還有新型SQL注入漏洞,以往的SQL注入漏洞挖掘技術(shù)能否應(yīng)對(duì)依然存疑,因此針對(duì)新平臺(tái)的特點(diǎn)開(kāi)發(fā)新的SQL注入漏洞挖掘技術(shù)也是當(dāng)前需要關(guān)注的重要研究方向。

3.3 跨項(xiàng)目開(kāi)展漏洞挖掘

目前跨項(xiàng)目的問(wèn)題阻礙了機(jī)器學(xué)習(xí)在漏洞挖掘方面的應(yīng)用。由于各類Web應(yīng)用程序的開(kāi)發(fā)環(huán)境不同,使用的開(kāi)發(fā)框架也不同,導(dǎo)致不同Web應(yīng)用程序上漏洞的特征和分布也不同,不具備共性使得某個(gè)Web應(yīng)用程序的漏洞代碼并不能作為另一個(gè)Web應(yīng)用程序機(jī)器學(xué)習(xí)的訓(xùn)練樣本。遷移學(xué)習(xí)算法可能會(huì)在一定程度上解決上述問(wèn)題,尋找?guī)讉€(gè)類似的項(xiàng)目將它們存在的漏洞綜合起來(lái)作為數(shù)據(jù)集進(jìn)行訓(xùn)練,然后通過(guò)得到的模型對(duì)相應(yīng)的Web應(yīng)用程序進(jìn)行預(yù)測(cè)。結(jié)合遷移學(xué)習(xí)解決跨項(xiàng)目帶來(lái)的漏洞數(shù)據(jù)少的問(wèn)題也是未來(lái)的研究重點(diǎn)。

4 結(jié) 語(yǔ)

SQL注入漏洞是Web應(yīng)用程序中數(shù)量最多、影響范圍最廣的安全漏洞之一,對(duì)網(wǎng)絡(luò)安全造成了嚴(yán)重威脅,如何挖掘SQL注入漏洞是安全領(lǐng)域重點(diǎn)關(guān)注的研究方向。本文首先介紹了SQL注入的基本概念及不同類型SQL注入的攻擊原理;然后,詳細(xì)闡述了SQL注入漏洞挖掘技術(shù);最后,總結(jié)并討論了SQL注入漏洞挖掘技術(shù)的未來(lái)發(fā)展方向。

參考文獻(xiàn)

[1] CNVD.漏洞列表[EB/OL]. (2021-12-31)[2022-10-06]. https://www.cnvd.org.cn/flaw/list?flag=true.

[2] OWASP. The open web application security project [EB/OL]. [2022-10-06]. http://www.owasp.org.cn/OWASP-CHINA/owasp-project/OWASPTop102017v1.1.pdf.

[3] CLARKE J. SQL注入攻擊與防御[M]. 2版.施宏斌,譯.北京:清華大學(xué)出版社,2014.

[4] CSDN. What is an SQL injection attack? The harm and protection of SQL injection attack [EB/OL]. (2021-05-26)[2022-10-06]. https://blog.csdn.net/qq_2213188715/article/details/117290807.

[5]劉祎璠. 基于靜態(tài)分析的SQL注入漏洞檢測(cè)方法研究[D].長(zhǎng)沙:湖南大學(xué),2015.

[6]胡建偉,趙偉,閆崢,等.基于機(jī)器學(xué)習(xí)的SQL注入漏洞挖掘技術(shù)的分析與實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全,2019,19(11):36-42.

[7] MEDEIROS I,NEVES N,CORREIA M. Detecting and removing Web application vulnerabilities with static analysis and data mining [J]. IEEE transactions on reliability,2015,65(1):54-69.

[8] LIVSHITS V B,LAM M S. Finding security vulnerabilities in java applications with static analysis [C]// Proceedings of the 14th conference on USENIX Security Symposium. Baltimore,USA:USENIX Association,2005,14:18.

[9] WANG M,JUNG C,AHAD A,et al. Spinner: automated dynamic command subsystem perturbation [C]// Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security. [S.l.]:ACM,2021:1839-1860.

[10]尤楓,馬金慧,張雅峰.基于Chopping的Web應(yīng)用SQL注入漏洞檢測(cè)方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2018,27(1):86-91.

[11] JOHNSON B,SONG Y,MURPHY-HILL E,et al. Why don't software developers use static analysis tools to find bugs? [C]// 2013 35th International Conference on Software Engineering(ICSE). San Francisco,CA,USA:IEEE,2013:672-681.

[12] WANG J,PHAN R C W,WHITLEY J N,et al. Augmented attack tree modeling of SQL injection attacks [C]// 2010 2nd IEEE International Conference on Information Management and Engineering. Chengdu,China :IEEE,2010:182-186.

[13]田偉. 模型驅(qū)動(dòng)的Web應(yīng)用SQL注入安全漏洞滲透測(cè)試研究[D].天津:南開(kāi)大學(xué),2012.

[14]成曉利. Web應(yīng)用SQL注入漏洞測(cè)試系統(tǒng)的研究與實(shí)現(xiàn)[D]. 成都:西南交通大學(xué),2013.

[15] BOYD S W,KEROMYTIS A D. SQLrand: preventing SQL injection attacks [C]// International Conference on Applied Cryptography and Network Security. Berlin,Heidelberg:Springer,2004:292-302.

[16] SHI C,ZHANG T,YU Y,et al. A new approach for SQL-injection detection [M]// Instrumentation,Measurement,Circuits and Systems. Berlin,Heidelberg:Springer,2012:245-254.

[17] ZHANG K. A machine learning based approach to identify SQL injection vulnerabilities [C]// 2019 34th IEEE/ACM International Conference on Automated Software Engineering(ASE). San Diego,CA,USA:IEEE,2019:1286-1288.

[18]郭寧. 基于深度學(xué)習(xí)的漏洞挖掘關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2020.

[19]白鑫玉. SQL注入攻擊檢測(cè)技術(shù)研究[D].北京:北京交通大學(xué),2021.

猜你喜歡
動(dòng)態(tài)分析機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
基于污點(diǎn)傳播動(dòng)態(tài)分析的Android安全系統(tǒng)研究
基于組合評(píng)價(jià)法的企業(yè)融資效率動(dòng)態(tài)綜合評(píng)價(jià)
基于機(jī)器學(xué)習(xí)的圖像特征提取技術(shù)在圖像版權(quán)保護(hù)中的應(yīng)用
基于網(wǎng)絡(luò)搜索數(shù)據(jù)的平遙旅游客流量預(yù)測(cè)分析
前綴字母為特征在維吾爾語(yǔ)文本情感分類中的研究
基于支持向量機(jī)的金融數(shù)據(jù)分析研究
會(huì)計(jì)準(zhǔn)則改革動(dòng)態(tài)及相關(guān)研究
數(shù)據(jù)庫(kù)
據(jù)題類析高中物理動(dòng)態(tài)問(wèn)題的部分解題技巧
考試周刊(2016年4期)2016-03-14 09:35:14
静宁县| 电白县| 珠海市| 颍上县| 海林市| 姜堰市| 五河县| 乌鲁木齐市| 北票市| 青田县| 海淀区| 密云县| 黄陵县| 津市市| 孙吴县| 玉林市| 广平县| 时尚| 金塔县| 绥滨县| 驻马店市| 英吉沙县| 伊川县| 且末县| 清流县| 绍兴市| 远安县| 新兴县| 顺昌县| 黑山县| 临邑县| 松滋市| 海安县| 桓仁| 洛宁县| 鄂托克前旗| 濮阳县| 通榆县| 潍坊市| 沐川县| 拉萨市|