◆馬寶強(qiáng) 何俊江 王運(yùn)鵬
對(duì)抗機(jī)器學(xué)習(xí)攻擊下的SQL注入檢測(cè)方法
◆馬寶強(qiáng) 何俊江 王運(yùn)鵬
(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 四川 610065)
SQL注入是一種常見的Web安全漏洞,其利用方式簡(jiǎn)單,破壞力強(qiáng)。對(duì)抗機(jī)器學(xué)習(xí)是一種針對(duì)檢測(cè)模型的攻擊方法,通過改變檢測(cè)樣本的內(nèi)容和結(jié)構(gòu),從而使得檢測(cè)模型大大降低對(duì)其檢測(cè)的效果?,F(xiàn)如今有許多針對(duì)SQL注入檢測(cè)模型的研究,然而多數(shù)研究未考慮對(duì)抗樣本下的檢測(cè)效果和防御手段,這種危害巨大的攻擊手段配合對(duì)抗機(jī)器學(xué)習(xí)對(duì)Web應(yīng)用的安全產(chǎn)生了巨大威脅。為保障檢測(cè)模型的健壯性,預(yù)防該攻擊手段的潛在危害,本文通過分析現(xiàn)有的和本文提出的對(duì)抗機(jī)器學(xué)習(xí)方法所產(chǎn)生的對(duì)抗樣本,提出了一種新的檢測(cè)方法。首先,針對(duì)MySQL數(shù)據(jù)庫(kù),文本加入了抗語法干擾的預(yù)處理操作。隨后,本文通過SQL語法解析方法對(duì)SQL注入樣本進(jìn)行token化處理,防止語義干擾。最后引入word2vec和LSTM方法對(duì)SQL注入樣本進(jìn)行檢測(cè)。通過實(shí)驗(yàn)證明,本文所提出的檢測(cè)方法大大緩解了對(duì)抗機(jī)器學(xué)習(xí)所產(chǎn)生的危害,針對(duì)對(duì)抗樣本的檢測(cè)率僅下降了3.18%。
DDoS攻擊流量;LSTM;MLP;結(jié)果融合;邏輯回歸
現(xiàn)如今,Web應(yīng)用系統(tǒng)廣泛應(yīng)用于各行各業(yè)。由于此法的安全問題越來越受到工業(yè)界和學(xué)術(shù)界的重視,在這些Web安全問題中,SQL注入是一種破壞力強(qiáng)、利用簡(jiǎn)單、影響面大的漏洞之一。根據(jù)國(guó)家信息安全漏洞庫(kù)的數(shù)據(jù)[1],SQL注入漏洞占到互聯(lián)網(wǎng)所報(bào)告的所有Web漏洞的11.67%。
對(duì)抗機(jī)器學(xué)習(xí)是近年來的一個(gè)熱點(diǎn)研究問題,它通過修改輸入樣本的結(jié)構(gòu)和內(nèi)容,導(dǎo)致分類器產(chǎn)生錯(cuò)誤的分類結(jié)果[2]。大量研究證明,對(duì)抗學(xué)習(xí)可以影響到圖像識(shí)別[3]、自然語言處理[4]、惡意軟件檢測(cè)[5]等多個(gè)領(lǐng)域。這種方法配合SQL注入攻擊手段將會(huì)給現(xiàn)有的檢測(cè)方法帶來潛在危害,攻擊者可能通過這種手段繞過安全檢測(cè)產(chǎn)品。因此,研究對(duì)抗機(jī)器學(xué)習(xí)下的SQL注入檢測(cè)方法已經(jīng)迫在眉睫。
近年來大量國(guó)內(nèi)外專家學(xué)者提出了多種針對(duì)SQL注入漏洞的檢測(cè)方法。
例如,文獻(xiàn)[6]通過N-gram和TFID(Term Frequency Inverse Document Frequency)來將SQL語句文本中的特征詞進(jìn)行向量化操作,在此基礎(chǔ)上使用SVM對(duì)輸入的特征向量進(jìn)行檢測(cè),在數(shù)據(jù)集上取得了較好的效果。文獻(xiàn)[7]通過使用word2vec將文本進(jìn)行向量化,通過長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)獲取詞向量的上下文結(jié)構(gòu),模型取得了很好的效果。除了LSTM,其他文獻(xiàn)[8]使用了CNN的方式進(jìn)行檢測(cè)。
上述研究未討論針對(duì)對(duì)抗機(jī)器學(xué)習(xí)下的檢測(cè)方法,無法保證對(duì)抗機(jī)器學(xué)習(xí)環(huán)境中模型的健壯性。
針對(duì)上述問題,本文使用了SQL語法分析技術(shù),將輸入的樣本進(jìn)行序列化處理。隨后通過詞嵌入方法和深度學(xué)習(xí)模型進(jìn)行檢測(cè),取得了較好的檢測(cè)效果和健壯性。
本文檢測(cè)方法如圖1所示。
圖1 檢測(cè)方法架構(gòu)圖
在樣本輸入檢測(cè)模型前,本文首先對(duì)其進(jìn)行預(yù)處理,以減少語法干擾的影響。隨后,本文基于SQL語法分析技術(shù)對(duì)預(yù)處理后的樣本進(jìn)行序列化處理。通過抗語法干擾的預(yù)處理和語義分析方法,模型可以抵抗語法干擾和語義干擾。在獲取到序列化數(shù)據(jù)后,本文通過word2vec對(duì)序列數(shù)據(jù)進(jìn)行詞嵌入。最后,通過長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)對(duì)向量化的樣本進(jìn)行檢測(cè),把輸出層的結(jié)果作為最后的檢測(cè)結(jié)果。
2015年北京師范大學(xué)與重慶市教育委員會(huì)、重慶市江北區(qū)人民政府協(xié)同共建“重慶市教師教育創(chuàng)新實(shí)驗(yàn)區(qū)”,旨在通過創(chuàng)建“大學(xué)—政府—教師進(jìn)修學(xué)院—中小學(xué)?!钡暮献骰锇殛P(guān)系,構(gòu)建高質(zhì)量的教師專業(yè)發(fā)展支持體系,為探索新型教師專業(yè)發(fā)展模式提供實(shí)踐基礎(chǔ)。
本文中的預(yù)處理方法主要針對(duì)對(duì)抗樣本的語法干擾方法,包括URL解碼、內(nèi)斂執(zhí)行解碼、語法干擾冗余去除。具體步驟如表1所示。
表1 樣本預(yù)處理
樣本(預(yù)處理前)樣本(預(yù)處理后) URL解碼1%26%261%3D11&&1=1 內(nèi)斂執(zhí)行/*!50000sleep(5)*/sleep(5) 冗余字符sleep 1.e(5)sleep(5)
通過利用sqlparse庫(kù),SQL語法解析器可以將樣本序列化為SQL語法中的opcode,將每個(gè)詞轉(zhuǎn)換為所其代表的數(shù)據(jù)結(jié)構(gòu),如關(guān)鍵字、函數(shù)、數(shù)據(jù)類型等,樣例如圖2所示。
圖2 樣本序列化樣例
通過預(yù)處理和序列化樣本,模型可以很好地對(duì)抗語義干擾和語法干擾。
通過word2vec方法,本文將序列后化的數(shù)據(jù)映射到一個(gè)向量空間中,以便后續(xù)的檢測(cè)。
LSTM是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)。圖3是一個(gè)典型的LSTM網(wǎng)絡(luò)結(jié)構(gòu)。一般來講,每個(gè)LSTM的神經(jīng)元由三個(gè)門結(jié)構(gòu)來控制信息狀態(tài),即:(1)遺忘門:決定神經(jīng)元需要丟棄和保留哪些信息;(2)輸入門:決定神經(jīng)元需要更新哪些信息;(3)輸出門:輸出神經(jīng)元的預(yù)測(cè)結(jié)果。
圖3 LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
由于LSTM門結(jié)構(gòu)的特性,該方法可以在自然語言處理中分析上下文結(jié)構(gòu)從而獲取準(zhǔn)確的效果。該方法也被廣泛應(yīng)用于各種入侵檢測(cè)模型中。
為了驗(yàn)證本文方法的有效性,本文設(shè)計(jì)了以下三部分實(shí)驗(yàn):
(2)使用本文所提出的模型對(duì)對(duì)抗樣本進(jìn)行檢測(cè);
(3)使用對(duì)抗樣本驗(yàn)證文獻(xiàn)[6]~[8]所提出模型的健壯性。
上述三部分實(shí)驗(yàn)的設(shè)計(jì)目的有兩個(gè)。
第一,實(shí)驗(yàn)(1)保證本文提出模型在正常環(huán)境下的可用性和有效性,并通過對(duì)比實(shí)驗(yàn)保證模型的檢測(cè)效果。
第二,實(shí)驗(yàn)(2)和實(shí)驗(yàn)(3)驗(yàn)證本文所提出模型針對(duì)對(duì)抗樣本下的有效性,并通過對(duì)比實(shí)驗(yàn)驗(yàn)證本文所提出模型的健壯性。
(1)開發(fā)平臺(tái):Arch Linux amd64;
(2)開發(fā)工具:Python3.8,Keras2.7.0,sqlparse0.4.2;
(3)實(shí)驗(yàn)數(shù)據(jù)集:攻擊樣本使用文獻(xiàn)[8]的數(shù)據(jù)集和本文作者先前研究所產(chǎn)生的對(duì)抗樣本。正常樣本使用爬蟲方法收集Alex最受歡迎的1000個(gè)站點(diǎn)的網(wǎng)絡(luò)請(qǐng)求。本文的訓(xùn)練集包含24076條攻擊樣本和34395條正常樣本,測(cè)試集包含10319條攻擊樣本和11596條正常樣本,對(duì)抗樣本的數(shù)量為11590條。本文所使用的數(shù)據(jù)集和對(duì)抗樣本可從https://github.com/UnnameBao/adversarial_example_for_sql獲取。
TP為SQL注入攻擊樣本被準(zhǔn)確檢測(cè)出的數(shù)目;FN為SQL注入攻擊樣本被錯(cuò)誤標(biāo)記為正常樣本的數(shù)目;FP為正常樣本被錯(cuò)誤判定為SQL注入攻擊樣本的數(shù)目;TN為正常樣本被正確標(biāo)記為正常的數(shù)目。
為驗(yàn)證模型對(duì)正常樣本的檢測(cè)效果,本文使用準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值四個(gè)指標(biāo)來對(duì)實(shí)驗(yàn)進(jìn)行評(píng)價(jià),定義如下。
為驗(yàn)證模型針對(duì)對(duì)抗樣本的檢測(cè)效果,本文使用檢測(cè)率(Detection Rate,DR)和逃逸率(Escape Rate,ER)來對(duì)實(shí)驗(yàn)進(jìn)行評(píng)價(jià),定義如下。
本文使用的通過實(shí)驗(yàn)調(diào)整LSTM的參數(shù)為:LSTM層使用128個(gè)神經(jīng)元,激活函數(shù)選擇sigmoid參數(shù);Dropout層dropout rate設(shè)置為0.5;輸出層使用softmax作為激活函數(shù)。Word2vec使用skip-gram模型,參數(shù)為:滑動(dòng)窗口大小為5,負(fù)采樣數(shù)量為64,訓(xùn)練輪數(shù)為5,嵌入向量大小為128。
對(duì)于文獻(xiàn)[6-8]所提的模型,本文選擇其提供的參數(shù)進(jìn)行設(shè)置。其中對(duì)于文獻(xiàn)[6],本實(shí)驗(yàn)選擇其效果最后的3-gram來進(jìn)行特征詞提取。
完成上述實(shí)驗(yàn)后,針對(duì)非對(duì)抗機(jī)器學(xué)習(xí)的檢測(cè)效果如表2所示。
表2 實(shí)驗(yàn)結(jié)果
模型AccuracyPrecisionRecallF1 本文方法99.94%99.98%99.89%98.28% 文獻(xiàn)[6]97.40%98.67%96.12%97.38% 文獻(xiàn)[7]99.98%99.98%99.96%99.98% 文獻(xiàn)[8]99.88%99.80%99.95%99.87%
通過上述實(shí)驗(yàn)結(jié)果,可發(fā)現(xiàn)本文所提出的方法針對(duì)非對(duì)抗機(jī)器學(xué)習(xí)樣本的檢測(cè)效果相對(duì)其他模型未有明顯降低,并且本文所提出模型的準(zhǔn)確率高達(dá)99.94%。
針對(duì)對(duì)抗機(jī)器學(xué)習(xí)的檢測(cè)效果如表3所示。
表3 實(shí)驗(yàn)結(jié)果
非對(duì)抗樣本對(duì)抗樣本ERDRERDR 本文方法0.11%99.89%3.29%96.71% 文獻(xiàn)[6]3.88%96.12%97.40%2.60% 文獻(xiàn)[7]0.04%99.96%97.87%2.13% 文獻(xiàn)[8]0.05%99.95%44.44%55.56%
通過上述實(shí)驗(yàn)結(jié)果,發(fā)現(xiàn)對(duì)抗樣本對(duì)本文提出的方法影響最小,針對(duì)對(duì)抗樣本的檢測(cè)率僅下降了3.18%,且本文對(duì)對(duì)抗樣本的檢測(cè)率高達(dá)96.71%。
本文提出了一種在對(duì)抗攻擊下的SQL注入檢測(cè)技術(shù)。經(jīng)過抗語法干擾的預(yù)處理后,攻擊樣本通過SQL語法解析生成token。通過對(duì)token進(jìn)行詞嵌入并使用LSTM算法進(jìn)行檢測(cè),本文提出的模型取得了良好的效果和健壯性。本文進(jìn)行了多個(gè)對(duì)比實(shí)驗(yàn)驗(yàn)證模型的有效性。實(shí)驗(yàn)結(jié)果證明,本文可以在非對(duì)抗攻擊下和對(duì)抗攻擊下均可以取得良好的檢測(cè)效果。
[1]國(guó)家信息安全漏洞庫(kù)[EB/OL].http://www.cnnvd.org.cn/.
[2]Finlayson S G,Bowers J D,Ito J,et al. Adversarial attacks on medical machine learning[J]. Science,2019,363(6433):1287-1289.
[3]Goodfellow I J,Pouget-Abadie J,Mirza M,et al. Generative Adversarial Networks[J]. Advances in Neural Information Processing Systems,2014,3:2672-2680.
[4]Behjati M,Moosavi-Dezfooli S M,Baghshah M S,et al. Universal Adversarial Attacks on Text Classifiers[C]// ICASSP 2019 - 2019 IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP). IEEE,2019.
[5]Peng X,Xian H,Lu Q,et al. Semantics aware adversarial malware examples generation for black-box attacks[J]. Applied Soft Computing,2021,109(3):107506.
[6]蘇林萍,劉小倩,陳飛,等. 基于N-Gram和TFIDF的SQL注入檢測(cè)方法[J]. 計(jì)算機(jī)與數(shù)字工程,2021,49(6):5.
[7]Li Q,Wang F,Wang J,et al. LSTM-Based SQL Injection Detection Method for Intelligent Transportation System[J]. IEEE Transactions on Vehicular Technology,2019,68(5):4182-4191.
[8]Luo A,Huang W,F(xiàn)an W . A CNN-based Approach to the Detection of SQL Injection Attacks[C]// 2019 IEEE/ACIS 18th International Conference on Computer and Information Science (ICIS). IEEE,2019.
國(guó)家重點(diǎn)研發(fā)計(jì)劃(2020YFB1805400);國(guó)家自然科學(xué)基金(U1736212、U19A2068、62002248、62032002);四川省重點(diǎn)研發(fā)項(xiàng)目(20ZDYF3145)
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2022年4期