謝鑫 任春輝 陳新宇
摘要:數(shù)據(jù)是一個企業(yè)最重要的資產(chǎn)之一,關(guān)乎企業(yè)的生存發(fā)展。SQL注入攻擊被開放式Web應(yīng)用程序安全項目(OWASP)列為十大網(wǎng)絡(luò)應(yīng)用程序風(fēng)險榜的榜首,危害性、普遍性及嚴(yán)峻形勢不言而喻。提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的SQL注入檢測方法并與傳統(tǒng)的檢測方法進(jìn)行對比,可以將SQL注入語句轉(zhuǎn)化為二維矩陣,該方法可以針對Web應(yīng)用的SQL注入行為進(jìn)行有效檢測,基于無規(guī)則匹配的特點使其可以識別新的攻擊且更難以繞過。
關(guān)鍵詞:深度學(xué)習(xí);神經(jīng)網(wǎng)絡(luò);卷積神經(jīng)網(wǎng)絡(luò);網(wǎng)絡(luò)安全;SQL注入
中圖分類號:TP391.4文獻(xiàn)標(biāo)志碼:A文章編號:1008-1739(2020)03-69-3
0引言
數(shù)據(jù)作為企業(yè)的重要資產(chǎn),其價值也逐年提高,幾乎每個企業(yè)的數(shù)據(jù)都會保存在數(shù)據(jù)庫里面,以方便內(nèi)部員工或者用戶查詢使用。對企業(yè)來說,正常的使用查詢是沒有問題的,但是互聯(lián)網(wǎng)世界繽紛復(fù)雜,背后總存在很多別有用心的人用各種工具掃描網(wǎng)站,試圖找出漏洞。所以任何網(wǎng)站都不要抱僥幸心理,任何一點疏忽都有可能成為黑客竊取數(shù)據(jù)的大門。當(dāng)企業(yè)數(shù)據(jù)被泄露時,損失的不僅僅是經(jīng)濟(jì)利益,也包括公眾聲望,用戶大量流失,有的甚至面臨法律訴訟,引發(fā)高層震蕩等。隨著互聯(lián)網(wǎng)的發(fā)展,出現(xiàn)了越來越多的Web應(yīng)用,很多Web應(yīng)用會收集用戶個人信息,由于數(shù)據(jù)庫里存放大量的寶貴數(shù)據(jù),就自然而然成為了被攻擊的目標(biāo),因此出現(xiàn)越來越多的SQL注入攻擊。
1 SQL
SQL注入攻擊是指構(gòu)造特殊的字符串作為參數(shù),通過Web表單遞交或者輸入域名或者頁面請求的查詢字符串而傳入Web應(yīng)用,這些特殊的字符串往往包含SQL語法里的一些可執(zhí)行的語句,讓W(xué)eb應(yīng)用錯把數(shù)據(jù)當(dāng)成了代碼執(zhí)行,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,其主要原因是Web應(yīng)用沒有精確地過濾用戶的輸入數(shù)據(jù),導(dǎo)致數(shù)據(jù)庫被入侵。SQL注入是Web開發(fā)中最常見的一種安全漏洞,犯罪分子可能會利用它來非法訪問用戶的敏感數(shù)據(jù),如客戶信息、個人數(shù)據(jù)、商業(yè)機密及知識產(chǎn)權(quán)等。
SQL注入攻擊被開放式Web應(yīng)用程序安全項目(OWASP)作為十大網(wǎng)絡(luò)應(yīng)用程序風(fēng)險榜的榜首,一直以來都是網(wǎng)絡(luò)安全研究的重點。近年來,相關(guān)研究者通過研究SQL注入的威脅、攻擊類型以及攻擊方式等提出了各種各樣的方法用于SQL注入的檢測,將SQL查詢語句進(jìn)行規(guī)范化是常用的一種預(yù)處理方式。
根據(jù)查詢語句按照一定方式進(jìn)行分割,統(tǒng)計每個詞出現(xiàn)的頻率[1]也是一種數(shù)據(jù)預(yù)處理的方式,在此基礎(chǔ)上更好的特征篩選是統(tǒng)計特殊字符和特殊語句。將提取的特征向量化之后,使用傳統(tǒng)機器學(xué)習(xí)方法進(jìn)行分類識別,常用的有樸素貝葉斯[1-2]、決策樹[1,3]和支持向量機(SVM)[4-5]。
CNN[6]仿造生物體視覺認(rèn)知的形成過程機制搭建,是一種深度前饋神經(jīng)網(wǎng)絡(luò)。近年來,CNN被廣泛應(yīng)用于計算機視覺和自然語言處理效果方面。本文提出了一種基于CNN和海量Web日志的SQL注入檢測方法,將CNN應(yīng)用于Web應(yīng)用的SQL注入檢測。實踐結(jié)果表明,此方法具有很好的效果,其識別準(zhǔn)確率很高。
2 CNN模型
SQL注入形式多樣,不可避免地出現(xiàn)新的攻擊方法繞過傳統(tǒng)檢測。針對這種普遍存在的問題,提出了一種基于CNN的SQL注入檢測方法,此方法主要解決識別無法用傳統(tǒng)方法識別的SQL注入攻擊,其可作為傳統(tǒng)SQL檢測方法的一種輔助方法。
2.1整體模型
CNN的模型結(jié)構(gòu)如圖1所示。
對輸入的預(yù)處理數(shù)據(jù)進(jìn)行2次卷積,卷積核尺寸為3×3。然后依次輸入池化層、卷積層和池化層,池化層之后進(jìn)行dropout正則化處理,然后將輸出降維成一維向量再輸入全連接層,再進(jìn)行正則化處理,最后進(jìn)行分類。
2.2數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理步驟如下:
①統(tǒng)計每條樣本的平均長度,即字符數(shù)量,以確定矩陣行數(shù)近似等于平均長度,比如長度即為3。
②使用Word2vec方法將樣本進(jìn)行詞向量化訓(xùn)練,得到一個詞向量化模型,此模型保存了每個字符對應(yīng)的向量。向量化維度值不宜大于樣本平均長度,并且以2的次方為宜,比如16,32,64等。以單個字符作為一個向量單位,無需對其進(jìn)行url解碼,解碼后會大大增加字符數(shù)量。
③將樣本按照由步驟②的方法得到模型進(jìn)行向量化,若模型中沒有樣本中出現(xiàn)的字符,則用1向量填充,即行向量每個元素值都取1;每條樣本均可轉(zhuǎn)化為一個二維矩陣,列數(shù)即為每個字符確定的向量維度,行數(shù)即為樣本字符數(shù)量。
④將由步驟③獲得的二維矩陣轉(zhuǎn)為矩陣,若行數(shù)小于指定值,則在最下方一直補0向量至其為指定大小矩陣;若行數(shù)大于指定值,則去掉最后若干行使其變?yōu)橹付ù笮【仃嚒?/p>
3實驗仿真
3.1數(shù)據(jù)集
共約448萬條無重復(fù)的生產(chǎn)環(huán)境中的Web日志,其中約128萬條SQL注入攻擊日志,300萬條正常日志,均為Web日志中已標(biāo)記好的具有查詢語句的url訪問記錄。包括正常和SQL注入的,如http://www.example.com/path1/path2/? query#fragment,具有query參數(shù)的url,即“?”后面、“#”前面的字符串(一般情況下格式為key1=value1&key2=value2…)。隨機選取20萬條作為訓(xùn)練集(正負(fù)樣本各約10萬條),剩下的作為測試集,測試集和訓(xùn)練集之間沒有交集。
實驗設(shè)備是筆記本電腦,編程語言使用Python3,使用基于Tensorflow-Gpu的keras框架,GPU為NVIDIAGTX1050Ti。
3.2實驗結(jié)果
損失函數(shù)值曲線如圖2所示,損失函數(shù)值隨著訓(xùn)練次數(shù)的增加逐漸趨于穩(wěn)定,收斂在0.01左右。
混淆矩陣如表1所示,從表1中可以看出,TP和TN值均遠(yuǎn)遠(yuǎn)高于FP和FN。
如表2和圖3所示,正確率、精確率、召回率、1和AUC均高于0.999,這些數(shù)據(jù)表明模型的分類性能非常出色,ROC曲線近似矩形。
作為對比,使用了傳統(tǒng)的機器學(xué)習(xí)方法進(jìn)行分類,比較其正確率和1值,包括SVM[4-5],樸素貝葉斯[1-2],決策樹[1-3]和隨機森林。從表3可以看出,CNN的正確率和1值均高于其他方法。
4結(jié)束語
現(xiàn)有的SQL注入檢測主要采用正則匹配進(jìn)行識別,采用正則技術(shù)識別準(zhǔn)確率高,速度快,但是不能識別新的攻擊,不可避免地出現(xiàn)新的繞過方法以避開正則?;贑NN的SQL注入識別自動提取SQL注入的隱藏共有特征,識別出繞過正則的SQL注入攻擊流量,且速度快。傳統(tǒng)的機器學(xué)習(xí)方法需要人為篩選特征,而好的特征不易得到,特征的好壞直接影響到識別準(zhǔn)確率。基于CNN的SQL注入識別基于單個字符進(jìn)行向量化,詞量較少,但可保留query語句所有信息,詞量少則可以降低訓(xùn)練難度和訓(xùn)練成本。一個好的模型完全可以替代原有的正則識別方法,還可以實時更新模型。下一步將研究攻擊類型的細(xì)分,實現(xiàn)多分類模型,而不僅僅局限于SQL注入攻擊識別。
參考文獻(xiàn)
[1] LODEIRO-SANTIAGO M, CABALLERO-GIL C, CABALLERO-GIL P. Collaborative SQL-injections Detection System with Machine Learning[C]//Proceedings of the 1st International Conference on Internet of Things and Machine Learning,ACM, 2017:45.
[2] SANTOSO J,YUNIARNO E M,HARIADI M. Large Scale Text Classification Using Map Reduce and Naive Bayes Algorithm for Domain Specified Ontology Building[C]//2015 7th International Conference on Intelligent Human-Machine Systems and Cybernetics,IEEE,2015:428-432.
[3] HANMANTHU B, RAM B R,NIRANJAN P. SQL Injection Attack Prevention based on Decision Tree Classification[C]// 2015 IEEE 9th International Conference on Intelligent Systems and Control (ISCO), IEEE,2015:1-5.
[4] MCWHIRTER P R,KIFAYAT K,SHI Q,et al. SQL Injection Attack Classification through the Feature Extraction of SQL Query Strings Using A Gap-weighted String Subsequence Kernel[J].Journal of Information Security and Applications, 2018,40:199-216.
[5] UWAGBOLE S O,BUCHANAN W J,F(xiàn)AN L.Applied Machine Learning Predictive Analytics to SQL Injection Attack Detection and Prevention[C]//2017 IFIP/IEEE Symposium on Integrated Network and Service Management(IM).IEEE,2017:1087-1090.
[6] KHAN A,SOHAIL A, ZAHOORA U,et al.A Survey of the Recent Architectures of Deep Convolutional Neural Networks[J].arXiv preprint arXiv:1901.06032, 2019.