李魯群 徐孟達
摘 ? 要:隨著互聯(lián)網(wǎng)世界Web2.0時代的到來,網(wǎng)絡空間的開放程度在逐漸地提高,隨之而來的是PC端網(wǎng)絡交互的安全性受到極大的威脅。在開放式Web應用安全項目基金會(OWASP)歷年發(fā)布的十大最關鍵Web應用安全風險中,跨站腳本攻擊和注入漏洞一直高居前十位。文章在跨站腳本攻擊語句的文本特性描述和分詞基礎上,將 Word2Vec和LSTM相結(jié)合,并在LSTM輸入前端,對詞向量引入權重優(yōu)化處理,對跨站腳本攻擊檢測的方法進行了研究。
關鍵詞:跨站腳本攻擊;Word2vec;長短時記憶神經(jīng)網(wǎng)絡;自然語言處理;Web安全
中圖分類號:TP391 ? ? ? ? ?文獻標識碼:A
Abstract: With the advent of the era of Web2.0, the openness of cyberspace has been greatly improved. While the security of PC terminal network interaction has been greatly threatened. Among the most critical Web application security risks published over the years by the open Web application security project foundation (OWASP), cross-site scripting attacks and injection vulnerabilities have been among the top ten. Articles in cross-site scripting statements based on text characterization and participles, combining Word2Vec and LSTM, and, therefore, in LSTM input front weight vector is introduced into the optimization, the method to detect a cross-site scripting attack is studied.
Key words: cross-site scripting; Word2vec; long-short term memory network; natural language process; web security
1 引言
在互聯(lián)網(wǎng)快速發(fā)展的今天,人們生活的便利性空前提升,隨之而來的網(wǎng)絡安全問題卻日益嚴重。其中,跨站腳本攻擊(Cross-site Scripting, XSS)對網(wǎng)絡應用以及用戶的隱私安全帶來極大威脅。攻擊者利用網(wǎng)站沒有對用戶提交數(shù)據(jù)進行充分處理或過濾不足的缺陷,將惡意腳本代碼嵌入到 Web 頁面中,使訪問過該頁面的其他用戶,會被執(zhí)行相應的嵌入代碼,最終使得攻擊者能盜竊用戶的重要資料,竊取用戶的隱私信息[1]。
根據(jù)創(chuàng)宇云防御平臺的網(wǎng)絡攻防數(shù)據(jù)顯示,2018年網(wǎng)絡安全(云安全)態(tài)勢中嚴重及高危漏洞中,跨站腳本占比達到27.24%,對互聯(lián)網(wǎng)用戶造成了持續(xù)威脅。因此,需要通過新的防御方法快速、準確識別惡意的跨站腳本,減少其對網(wǎng)頁帶來的危害。
2 跨站腳本攻擊
跨站腳本攻擊類型主要分為三類:反射型、存儲型和文檔對象型[2]。
(1)反射型攻擊。攻擊者嵌入惡意腳本至統(tǒng)一資源定位器,則惡意信息存儲于URL內(nèi)。當用戶訪問該URL鏈接時,后端服務器響應用戶的請求并返回腳本,當信息返回到用戶瀏覽器界面時,惡意腳本開始執(zhí)行,收集受害者的敏感信息,并發(fā)送給攻擊者。
(2)存儲型攻擊。存儲型攻擊也稱為持久性攻擊。該攻擊類型持續(xù)的時間長,危害大。攻擊者會事先將惡意腳本保存到有漏洞的服務器或者數(shù)據(jù)庫中,由于沒有仔細過濾,使得惡意腳本可以長期存儲在其中,等到用戶瀏覽含有此惡意腳本代碼的Web頁面并進行內(nèi)容交互時,惡意代碼極容易被觸發(fā),隨后執(zhí)行惡意攻擊。
(3)文檔對象型攻擊。這是一個平臺中立和語言中立的接口,使得程序和腳本可以動態(tài)訪問和更新文檔的內(nèi)容、結(jié)構(gòu)以及樣式。它在用戶瀏覽器內(nèi)完成惡意代碼的提取操作并執(zhí)行惡意攻擊行為。
3 相關工作
大多數(shù)學者對跨站腳本的自然語言處理研究分為兩方面:跨站腳本語義詞向量分析模型構(gòu)建和詞向量處理結(jié)合深度學習技術。
Bengio等人[3]通過網(wǎng)絡的分布式學習優(yōu)勢,借助分布式方法加快遞歸神經(jīng)網(wǎng)絡語言模型的計算速度。該模型可以根據(jù)本文的上下文關系信息進行分析,提高了語言的處理能力和分析能力。Piotr等人[4]在Mikolov發(fā)明的Word2vec詞向量模型的基礎上,提出了字符級向量融合的詞向量構(gòu)建方法,在保證效果的同時提升了訓練及預測效率。
Shanly等人[5]提出了改進的Skip-gram算法,將XSS攻擊詞向量形成表格的形式進行檢測,提高了XSS漏洞檢測的準確率。張思聰?shù)热薣6]建立了基于最大熵模型的XSS攻擊檢測模型,但僅對于反射型XSS攻擊的檢測效果較好。Liu等人[8]在惡意網(wǎng)頁分類中對數(shù)據(jù)進行清洗填補等操作,并使用機器學習方法預測惡意樣本信息,獲得了較好的結(jié)果,但樣本數(shù)據(jù)較少,容易產(chǎn)生誤差。
4 跨站腳本文本特點分析
本文分析數(shù)據(jù)集當中的惡意跨站腳本語句,為了保證數(shù)據(jù)安全,去除了URL鏈接中的Host、Path等信息,只保留了惡意腳本的主要部分。經(jīng)過分析發(fā)現(xiàn),惡意腳本攻擊語句的攻擊形式復雜多樣。本文從文本特點的角度,來闡述跨站腳本代碼的注入與繞過等惡意方法。
4.1 惡意腳本代碼注入
(1)使用含腳本標簽的直接注入
瀏覽器網(wǎng)頁引用最多的就是“<”“>”標記,用于操作符合HTML語法規(guī)則的標簽。其中,最具代表性的是"。對于對跨站腳本數(shù)據(jù)敏感的人來說,第一時間想到的惡意腳本語句就是""。
在嵌入式詞向量過程中,考慮到處理的詞數(shù)量較大,所以本文采用詞向量窗口大小為5進行計算。隨后為了獲得更好的詞表示效果,結(jié)合樣本數(shù)據(jù)特征,采用128維的向量來表示每一個單詞。同時,避免維度太大造成過擬合問題,需要對數(shù)據(jù)進行降維操作,本文采用隨機梯度下降算法,優(yōu)化計算結(jié)果。
6 長短時記憶網(wǎng)絡
長短時記憶網(wǎng)絡(Long-Short Term Memory, LSTM)是循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Networks, RNN)的改進,增加了網(wǎng)絡的短期記憶能力,對于時間及狀態(tài)序列要求高的模型具有很好的計算效果。
6.1 LSTM的基本結(jié)構(gòu)
如圖7所示是改進的LSTM模型。
模型中符號×代表前一網(wǎng)絡狀態(tài)記憶數(shù)據(jù)與當前網(wǎng)絡狀態(tài)遺忘門矩陣的運算;符號+代表當前的輸入數(shù)據(jù)進行求和運算;符號σ代表非線性函數(shù)Sigmoid,用于控制門控單元[9]。
基本的LSTM單元包含三個輸入信號,前一個LSTM單元的輸出結(jié)果h(t-1),前一個LSTM單元的記憶狀態(tài)c(t-1)以及當前時刻的輸入值Xt。LSTM單元中的3個門,分別決定3個輸出狀態(tài)。其中,遺忘門將詞編碼集合計算的權重與前一個時刻的狀態(tài)c(t-1)的乘積,來確定保留到當前狀態(tài)c(t)的數(shù)據(jù)量,輸入門 可以確定當前時刻的輸入值Xt,可以保存到當前狀態(tài)c(t)的數(shù)據(jù)量,輸出門 決定當前狀態(tài)c(t)可以輸出到當前結(jié)果值ht的數(shù)據(jù)量[9]。
6.2 LSTM模型分析
長短時記憶網(wǎng)絡按照詞集狀態(tài)和時間序進行連續(xù)運算,得到如圖8所示的運算模型。該模型在連續(xù)運算過程的輸入狀態(tài)中增加了狀態(tài)權重的優(yōu)化步驟。
在前一個狀態(tài)數(shù)據(jù)輸出以后,當前時刻的輸入值為Xt。計算同Xt距離相近的若干詞編碼及詞距離均值。將作為狀態(tài)權重優(yōu)化與遺忘門、前一個時刻狀態(tài)c(t-1)進行計算。以此得到權重優(yōu)化后的單元輸出狀態(tài)。
權重優(yōu)化步驟對LSTM的輸入數(shù)據(jù)進行驗證,得到高相關度的輸入值,有利于LSTM神經(jīng)網(wǎng)絡的計算。
7 實驗與分析
7.1 實驗數(shù)據(jù)集
本文使用的數(shù)據(jù)集是從網(wǎng)站中收集到的關于惡意跨站腳本的數(shù)據(jù)。其中為了保證實驗的安全以及數(shù)據(jù)優(yōu)化,從中刪除了影響惡意腳本表示的Host、Path等無效數(shù)據(jù),保留了能代表惡意腳本形式和效果的數(shù)據(jù)。
本文收集到正常腳本數(shù)據(jù)498條,包含正常的URL鏈接請求、頁面跳轉(zhuǎn)等樣本;惡意腳本數(shù)據(jù)639條,包含腳本標簽直接注入、惡意HTML標簽屬性值、層疊樣式表(Cascading Style Sheets)注入、惡意大小寫轉(zhuǎn)換、關鍵字拆分、標簽嵌套繞過等惡意信息,如表4所示。本文采用70%的數(shù)據(jù)作為訓練集樣本,30%的數(shù)據(jù)作為測試集樣本。
7.2 評價指標
本文LSTM的分析屬于二分類問題,對于輸出的二分類結(jié)果表示使用如表5所示的評價類型。
其中,TN表示正常腳本被分類為正常腳本的情況;FN表示惡意腳本被分類為正常腳本的情況;TP表示惡意腳本被分類到惡意腳本的情況;FP表示正常腳本被分類到惡意腳本的情況[10]。
7.3 實驗結(jié)果
本文使用LSTM神經(jīng)網(wǎng)絡計算方法計算了數(shù)據(jù)分類的準確率、召回率以及F1值,并使用本文數(shù)據(jù)結(jié)合常規(guī)的機器學習檢測方法、人工神經(jīng)網(wǎng)絡檢測方法進行對比,得到如表6所示的實驗結(jié)果。
繪制結(jié)果曲線,如圖9所示。
從表6及圖9可以發(fā)現(xiàn),長短時記憶神經(jīng)網(wǎng)絡和人工神經(jīng)網(wǎng)絡的實驗結(jié)果,明顯地優(yōu)于機器學習的決策樹檢測方法。這得益于神經(jīng)網(wǎng)絡檢測方法擁有較好的非線性計算能力以及狀態(tài)跟蹤能力,能夠跟隨數(shù)據(jù)狀態(tài)和時序狀態(tài)及時調(diào)整網(wǎng)絡的運算結(jié)構(gòu),因此能得到較好的實驗結(jié)果。而本文方法在召回率和F1值方面,明顯地優(yōu)于常規(guī)的人工神經(jīng)網(wǎng)絡檢測方法,在于本文對LSTM方法的改進,增加了輸入階段狀態(tài)權重優(yōu)化計算,對數(shù)據(jù)的輸入嚴格把控,起到了明顯的效果。
8 結(jié)束語
本文針對Web網(wǎng)頁的惡意跨站腳本攻擊進行分析,闡述了惡意腳本攻擊的形式有惡意腳本代碼注入和惡意腳本代碼繞過兩種。其中的漏洞攻擊方式,結(jié)合具體的實例進行分析,然后本文從跨站腳本攻擊語句的文本特性出發(fā),結(jié)合Word2Vec詞向量方法對跨站腳本的主要信息(Payload)進行分析和處理,將收集到的數(shù)據(jù)進行篩選整理,并用Skip-gram詞向量處理方法將數(shù)據(jù)轉(zhuǎn)換成詞向量的形式,保證了惡意腳本語句的語義信息,具有上下文的可解釋性。再利用改進的LSTM神經(jīng)網(wǎng)絡技術,驗證惡意腳本和正常腳本的分類效果,最終獲得了較高的召回率和F1值。由此,證明了本文使用的檢測方法的有效性。
本文所統(tǒng)計到的數(shù)據(jù)量較小,惡意腳本格式統(tǒng)計不足,導致神經(jīng)網(wǎng)絡計算所需數(shù)據(jù)量不足。如果后續(xù)增加惡意腳本數(shù)據(jù)的統(tǒng)計和分析,在詞向量基礎上使用神經(jīng)網(wǎng)絡檢測算法,對于分類結(jié)果的統(tǒng)計可能會有更好的效果。
參考文獻
[1] Category: OWASP Top Ten Project.[EB/OL].https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project,2017.
[2] 曹黎波,曹天杰.基于動態(tài)測試的XSS漏洞檢測方法研究[J].計算機應用與軟件,2015,32(08):272-275.
[3] Bengio Y, Ducharme R, Vincent P, etal. A neural probabilitics language model[J]. Journal of Machine Learning Research, 2016, 3(6):1137-1155.
[4] Piotr B, Edouard G, Armand J, etal. Enriching Word Vectors with Subword Information[J].2016.
[5] Shanly C, Cui J, Mhagama R. A XSS attack detection method based on skip list[J]. International Journal of Security and Its Applications, 2016(6):95-106.
[6] 張思聰,謝曉堯,景鳳宣,徐洋.基于最大熵模型的XSS攻擊檢測模型[J].武漢大學學報(理學版),2016,62(02):177-182.
[7] 張昊祎.基于語義分析和神經(jīng)網(wǎng)絡的WebShell檢測方法[J].網(wǎng)絡空間安全,2019,10(02):17-23.
[8] Jianhua Liu, Mengda Xu, Xin Wang, etal. A Markov Detection Tree-Based Centralized Scheme to Automatically Identify Malicious Webpages on Cloud Platforms[J].IEEE Access,2018,6(1):74025-74038.
[9] 余萬里,韋玉梅,李魯群.基于多模型融合的人體行為識別模型[J].計算機工程與設計,2019,40(10):3030-3036.
[10] 喬珂巖.基于深度學習Webshell檢測方法研究與應用[D].上海:上海師范大學,2019.