丁雪川,張偉峰,方菽蘭,鄭黎黎
(1.成都市公安局,四川 成都 610000;2.成都賽博思安科技有限公司,四川 成都 610000)
由于腳本語言具有靈活多變的特性以及不同瀏覽器之間存在的差異性,導致XSS攻擊的利用方式復雜多變,傳統的基于規則匹配的檢測方法難以有效地進行XSS攻擊檢測和防御。隨著機器學習的不斷發展,已經有很多研究團隊將機器學習算法引入XSS攻擊檢測中[1-4]。然而傳統的機器學習算法很大程度上依賴于特征的選擇提取,由于人工提取特征具有不可避免的局限性,基于傳統機器學習的檢測方法難以有效地滿足具有混淆、復雜、多變等特征的XSS攻擊檢測需求。
深度學習算法可以自動化提取攻擊載荷特征,從而避免人為提取特征所不可避免的局限性問題,因此將深度學習算法應用于Web攻擊檢測必然成為研究的趨勢。針對編碼混淆的XSS攻擊難以檢測的問題,本文構建了一個基于深度學習的跨站腳本攻擊檢測模型,有效提高XSS攻擊檢測的準確率。
1)提出一種基于深度學習的跨站腳本攻擊檢測模型。該模型基于Word2Vec提取輸入數據保留語義特征的詞向量,并基于LSTM深度神經網絡算法自動提取XSS攻擊的深層次特征,有效地檢測跨站腳本攻擊。此外,針對經過編碼混淆的XSS檢測困難的問題,提出循環解碼器還原其原始形態,進一步提升檢測效果。
2)搭建實驗環境測試檢測模型,在真實數據集上,通過與傳統機器學習算法和常見安全防護軟件進行對比,實驗結果驗證了檢測模型的有效性。
針對編碼混淆的XSS攻擊難以檢測的問題,本文構建了一個基于深度學習的跨站腳本攻擊檢測模型。首先,根據XSS常見的編碼混淆技術,提出基于循環解碼器的數據清洗,將經過復雜編碼混淆后的攻擊向量解碼還原其原始數據狀態;其次,基于Word2Vec對預處理后的數據進行詞向量提取,將輸入數據構建為含有語義信息的詞向量序列表示;將跨站腳本攻擊檢測轉化為二分類,基于LSTM深度學習算法構架分類模型,根據惡意樣本和正常樣本訓練跨站腳本攻擊分類器作為攻擊檢測模型,實現跨站腳本檢測。
跨站腳本攻擊常用的編碼混淆技術包括:URL編碼、HTML編碼、Base64編碼、UTF-7編碼、Unicode編碼等,提出一種循環解碼器,循環解碼器對編碼混淆的輸入數據進行循環解碼處理,直到解碼后的結果不再變化為止,從而將經過混淆的攻擊向量還原為其原始的數據形式。
深度學習檢測算法不能直接處理文本形式的輸入,需要將原始URL請求文本數據轉化為詞向量的輸入形式。圖1是將文本輸入轉換為詞向量的流程圖,主要包括循環解碼、范化、分詞和量化幾個步驟。

圖1 詞向量提取流程
其中,循環解碼處理過程基于上一小節中提出的循環解碼器;范化處理的目的是降低無意義信息對檢測結果的影響,并減少分詞數量,主要包括:將函數輸入參數替換為“param_string”,將URL鏈接替換為“http://website”,數字替換為“0”;基于跨站腳本攻擊的語法特征,設計相應的正則表達式進行分詞提取,分詞類別主要包括開始標簽、結束標簽、觸發事件、標簽屬性、函數名稱、腳本類型以及特殊字符等,量化過程則是基于Word2Vec進行詞向量表示,從而得到輸入文本的詞向量。
基于跨站腳本攻擊惡意樣本數據構建攻擊詞典,將惡意樣本數據分詞后按照詞頻降序排序后取詞。隨著取詞數量的增長,樣本覆蓋率隨之增加,當取詞頻率達到TOP10000后,對應的樣本覆蓋率已經達到93.1%,但隨著取詞數量的成倍增長,后續樣本覆蓋率僅少量提升。最終設定樣本取詞頻為TOP10000的惡意樣本,從而構建跨站腳本攻擊的攻擊詞典。
為了客觀地選擇最優的Word2Vec訓練參數,對Size、Iter、Window、Nagative參數進行調優實驗。通過控制變量法,每次僅修改一個參數,并對比不同參數對LSTM檢測模型的召回率、精確率、準確率和F1值的影響,從而確定Word2Vec訓練參數。
為了客觀地評估論文提出的檢測模型,將檢測模型與WangRui[18]等人提出的基于AdTree和AdaBoost傳統機器學習算法檢測XSS進行對比實驗,該方法采用了和本文相同的XSS惡意樣本數據集和正常樣本數據集,此外還選擇了網站安全狗[19](版本:Apache版V4.0)和XSSChop[20](版本:b6d98f6更新日期:2019-01-25)進行對比實驗。
基于LSTM的跨站腳本攻擊檢測模型的準確率為99.5%、召回率為97.9%和F1值為98.7%。在精確率、召回率和F1值三個方面的表現均優于ADTree和AdaBoost傳統機器學習算法的檢測模型;論文提出的檢測模型在精確率方面雖然略低于網站安全狗和XSSChop,但三者的精確率均超過了99.5%;且論文提出的LSTM檢測模型在召回率和F1值方面都優越于網站安全狗和XSSChop。
綜上所述,論文提出的基于LSTM的檢測模型在精確率、召回率和F1值等方面具有明顯的優勢,證明了該模型能夠有效地識別跨站腳本攻擊。
針對編碼混淆的XSS攻擊難以檢測的問題,本文構建了一個基于深度學習的跨站腳本攻擊檢測模型,并證明其有效性。但是該研究仍然存在著一些問題和步驟,進一步研究和改進內容如下。
1)將檢測模型封裝為應用編程接口(API),提供可視化的Web檢測平臺。
2)深度研究其他跨站腳本攻擊編碼混淆方式,進一步豐富循環解碼器支持解碼的類型,優化解碼效率。
3)擴展應用場景,將基于深度學習的攻擊檢測模型應用到其他網絡安全領域,如SQL注入攻擊檢測和DDOS攻擊檢測等。