程琪芩,萬(wàn) 良+
1.貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴陽(yáng) 550025
2.貴州大學(xué) 計(jì)算機(jī)軟件與理論研究所,貴陽(yáng) 550025
隨著信息時(shí)代的不斷發(fā)展,網(wǎng)絡(luò)安全問(wèn)題日益受到人們的關(guān)注??缯灸_本(cross-site scripting,XSS)作為一種威脅網(wǎng)絡(luò)平臺(tái)安全的攻擊形式,對(duì)其進(jìn)行有效的檢測(cè)已成為當(dāng)今網(wǎng)絡(luò)安全領(lǐng)域的重要研究?jī)?nèi)容[1]。
XSS 攻擊的形成是由于攻擊者在客戶端注入了惡意代碼,從而達(dá)到竊取用戶敏感信息等攻擊目標(biāo)[2-3]。XSS攻擊主要分為三類:反射型XSS攻擊(又稱非持久型XSS 攻擊)、存儲(chǔ)型XSS 攻擊(又稱持久型XSS攻擊)和基于文檔對(duì)象模型(document object model,DOM)的XSS攻擊(又稱type-0 XSS攻擊)[4]。形式復(fù)雜多變的XSS攻擊導(dǎo)致了傳統(tǒng)檢測(cè)方法在檢測(cè)性能上存在不足,經(jīng)過(guò)混淆處理后的XSS 代碼更是成為提高檢測(cè)性能的一大難點(diǎn)[5]。
傳統(tǒng)的檢測(cè)技術(shù)有基于模糊測(cè)試技術(shù)[6]、基于黑盒技術(shù)[7]等,隨后又提出了基于機(jī)器學(xué)習(xí)[8]的檢測(cè)技術(shù)。文獻(xiàn)[9]分別構(gòu)造了檢測(cè)準(zhǔn)確率優(yōu)于其他決策樹的交替決策樹(alternating decision tree,ADTree)分類器和組合多個(gè)弱分類器的自適應(yīng)提升算法(adaptive Boosting,Adaboost)分類器用于XSS 檢測(cè),并在此基礎(chǔ)上建立了網(wǎng)頁(yè)數(shù)據(jù)庫(kù)。該方法前期采用了大量的人工特征提取工作,分類效果直接受提取特征好壞的影響。文獻(xiàn)[10]人工提取了25個(gè)關(guān)鍵特征,并使用10 種不同的機(jī)器學(xué)習(xí)分類器檢測(cè)XSS 攻擊,檢測(cè)效率良好。文獻(xiàn)[11]人工提取了18個(gè)特征,作為檢測(cè)惡意網(wǎng)頁(yè)的重要依據(jù)。文獻(xiàn)[12]耗費(fèi)時(shí)間提取特征后再使用樸素貝葉斯(naive Bayesian)、支持向量機(jī)(support vector machine,SVM)和J48 決策樹(J48 decision tree,J48DT)三種機(jī)器學(xué)習(xí)算法預(yù)測(cè)XSS 攻擊。隨著研究不斷深入,發(fā)現(xiàn)現(xiàn)有的Web 應(yīng)用XSS檢測(cè)技術(shù)還存在著以下不足:(1)需要手工提取特征,工作量大的同時(shí)主觀性很強(qiáng)[13];(2)XSS攻擊所注入的代碼常通過(guò)惡意混淆來(lái)躲避檢測(cè),可讀性低,不易檢測(cè)[14];(3)現(xiàn)有檢測(cè)技術(shù)未能很好地利用注入代碼中XSS的有關(guān)信息[2]。針對(duì)上述不足,一些研究學(xué)者開始使用自動(dòng)學(xué)習(xí)特征的深度神經(jīng)網(wǎng)絡(luò)來(lái)檢測(cè)XSS。文獻(xiàn)[15]將深度學(xué)習(xí)中的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long-short term memory,LSTM)運(yùn)用到漏洞檢測(cè)。文獻(xiàn)[16]在研究中采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)、LSTM、CNN-LSTM模型進(jìn)行漏洞檢測(cè)。實(shí)驗(yàn)結(jié)果表明,上述方法的預(yù)測(cè)精度要優(yōu)于傳統(tǒng)的多層感知器(multilayer perceptron,MLP)方法。文獻(xiàn)[17]使用LSTM網(wǎng)絡(luò)構(gòu)建XSS檢測(cè)模型,實(shí)驗(yàn)結(jié)果表明,基于LSTM的檢測(cè)方法能有效地應(yīng)用于XSS 檢測(cè)中,但其對(duì)于惡意混淆的XSS 檢測(cè)還不夠準(zhǔn)確。
結(jié)合上述文獻(xiàn)研究,本文提出了一種基于雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(bidirectional long-short term memory,BiLSTM)的跨站腳本檢測(cè)方法。LSTM 是一種帶有記憶單元的神經(jīng)網(wǎng)絡(luò),常用于處理序列問(wèn)題,能解決長(zhǎng)序列依賴的問(wèn)題,從而廣泛應(yīng)用在自然語(yǔ)言處理領(lǐng)域中。但是單向的LSTM 只能處理上文對(duì)下文的依賴問(wèn)題,而無(wú)法解決下文對(duì)上文的依賴,從而對(duì)于XSS 特征學(xué)習(xí)過(guò)程中,忽略了下文與上文語(yǔ)義關(guān)系,使得提取的特征不夠充分。在此基礎(chǔ)上本文借鑒雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(bidirectional recurrent neural network,BiRNN)雙向處理序列的特點(diǎn),選擇BiLSTM 來(lái)雙向?qū)W習(xí)XSS代碼,獲取更全面的XSS特征,提高檢測(cè)性能。首先,通過(guò)數(shù)據(jù)預(yù)處理,解決樣本數(shù)據(jù)惡意編碼混淆的問(wèn)題,提高XSS代碼的可讀性。其次,BiLSTM在經(jīng)典LSTM 的基礎(chǔ)上加強(qiáng)了對(duì)后文的依賴性的處理,能更全面地學(xué)習(xí)XSS的相關(guān)信息,得到更全面的抽象特征。最后,使用softmax 分類器對(duì)學(xué)習(xí)到的特征實(shí)現(xiàn)分類。實(shí)驗(yàn)結(jié)果表明,該方法具有良好的分類效果和泛化能力。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)能夠根據(jù)歷史信息保持記憶,使其可以利用距離特征預(yù)測(cè)當(dāng)前輸出。但是,RNN具有梯度消失的缺陷,不利于長(zhǎng)序列的處理。LSTM 是RNN 的一種變形,通過(guò)增加記憶單元來(lái)解決序列的長(zhǎng)期依賴問(wèn)題,以避免梯度消失。
LSTM的工作原理如圖1所示。LSTM有四個(gè)重要的組成部分[18]:細(xì)胞狀態(tài)、遺忘門、輸入門和輸出門。其中細(xì)胞狀態(tài)為L(zhǎng)STM的核心部分;遺忘門決定丟棄上一個(gè)細(xì)胞狀態(tài)ct-1傳遞到該細(xì)胞狀態(tài)ct的哪些信息;輸入門決定更新值it和更新候選細(xì)胞狀態(tài);通過(guò)遺忘門、輸入門以及細(xì)胞狀態(tài),此時(shí)得到了更新的ct,可以傳遞到下一個(gè)細(xì)胞狀態(tài)ct+1;輸出門決定輸出值ht。數(shù)學(xué)表達(dá)式如下:
更新遺忘門輸出ft:
式中,wf為遺忘門層的權(quán)值矩陣,bf為偏置向量,σ1(x)為遺忘門的激活函數(shù),表示sigmoid 函數(shù),用于計(jì)算ft。
Fig.1 Structure of LSTM圖1 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)結(jié)構(gòu)
更新輸入門輸出it并計(jì)算候選狀態(tài):
式中,wi為輸入門的權(quán)重矩陣,bi為偏置向量,σ2(x)為輸入門的激活函數(shù),表示sigmoid 函數(shù),用于計(jì)算it。wc為tanh層的權(quán)重矩陣,bc為偏置向量,tanh(x)為激活函數(shù),用于計(jì)算候選狀態(tài)。
更新細(xì)胞狀態(tài)ct:
更新輸出門輸出ht:
式中,wo為輸出門的權(quán)重矩陣,bo為偏置向量,σ3(x)為輸出門的激活函數(shù),表示sigmoid 函數(shù),用于計(jì)算ot。tanh(x)為tanh 層的激活函數(shù),用于計(jì)算輸出ht。
LSTM可以處理長(zhǎng)序列中存在的長(zhǎng)期依賴,但是單向LSTM只能從前向后獲取序列信息,而序列預(yù)測(cè)問(wèn)題可能由前面若干輸入和后面若干輸入共同決定,使序列中與預(yù)測(cè)結(jié)果相關(guān)的信息被充分應(yīng)用,使預(yù)測(cè)結(jié)果更加準(zhǔn)確。基于此,雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)應(yīng)運(yùn)而生。
BiLSTM主要包含兩部分:(1)自前向后的LSTM層(forward layer);(2)自后向前的LSTM 層(back-ward layer)。其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
Fig.2 Structure of BiLSTM圖2 BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)
BiLSTM 的核心思想[19]為:在t時(shí)刻,在Forward層自前向后正向計(jì)算一遍,得到并保存每個(gè)時(shí)刻向后隱含層的輸出;在Backward 層自后向前反向計(jì)算一遍,得到并保存每個(gè)時(shí)刻向前隱含層的輸出;最后在每個(gè)時(shí)刻結(jié)合Forward 層和Backward 層的輸出,得到最終的輸出
檢測(cè)方法的整體框架如圖3所示,首先利用爬蟲工具從XSSed 數(shù)據(jù)庫(kù)和DMOZ 數(shù)據(jù)庫(kù)收集大量數(shù)據(jù),再經(jīng)過(guò)數(shù)據(jù)預(yù)處理(見(jiàn)3.1節(jié))得到適應(yīng)神經(jīng)網(wǎng)絡(luò)輸入的標(biāo)準(zhǔn)數(shù)據(jù)集,最后構(gòu)建雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)模型(見(jiàn)3.2節(jié))進(jìn)行檢測(cè)分類。
檢測(cè)性能不僅受檢測(cè)方法的影響,很多時(shí)候良好的輸入數(shù)據(jù)能帶來(lái)更好的檢測(cè)性能。在此基礎(chǔ)上,本文對(duì)所收集的XSS 代碼數(shù)據(jù)和正常代碼數(shù)據(jù)進(jìn)行了預(yù)處理,分為數(shù)據(jù)清洗、分詞以及向量化三部分。
Fig.3 Overall architecture of detection method圖3 檢測(cè)方法的整體架構(gòu)
(1)數(shù)據(jù)清洗:為了提高輸入數(shù)據(jù)的質(zhì)量,優(yōu)化檢測(cè)方法的性能,本文對(duì)原始數(shù)據(jù)進(jìn)行了清洗工作。XSS 代碼主要通過(guò)編碼技術(shù)進(jìn)行惡意混淆來(lái)躲避檢測(cè),因此本文對(duì)數(shù)據(jù)進(jìn)行了解碼操作,實(shí)現(xiàn)XSS代碼的反混淆。圖4 顯示了混淆代碼經(jīng)過(guò)解碼還原為原始代碼的一個(gè)實(shí)例。經(jīng)過(guò)解碼后,對(duì)數(shù)據(jù)進(jìn)行去噪處理,主要是為了去除重復(fù)、不完整以及錯(cuò)誤的數(shù)據(jù)。
Fig.4 Instance of original codes decoded and restored by obfuscated codes圖4 混淆代碼經(jīng)過(guò)解碼還原為原始代碼的實(shí)例
(2)分詞:對(duì)數(shù)據(jù)進(jìn)行清洗后,為了降低向量化后的數(shù)據(jù)維度,本文先將代碼中的數(shù)字轉(zhuǎn)換為0,將鏈接如“http://www.baidu.com”轉(zhuǎn)換為“http://u”。然后利用XSS 代碼符合腳本語(yǔ)言的特點(diǎn),根據(jù)不同功能的分詞類別,設(shè)計(jì)了一系列自定義正則表達(dá)式對(duì)輸入的代碼數(shù)據(jù)進(jìn)行分詞,如表1 所示,分詞結(jié)果如圖5所示。
(3)向量化:本文根據(jù)詞頻-逆文件頻率(termfrequency-inverse document frequency,TFIDF)建立一個(gè)詞匯庫(kù),為每個(gè)詞設(shè)置一個(gè)數(shù)值id,每個(gè)詞出現(xiàn)頻率越高,對(duì)XSS的重要性越高,id越小。最后,根據(jù)詞匯庫(kù),將代碼轉(zhuǎn)換為數(shù)值型數(shù)據(jù),再利用深度學(xué)習(xí)中的word2vec 工具將已經(jīng)完成分詞的代碼轉(zhuǎn)換為向量,轉(zhuǎn)換結(jié)果如表2所示。由于神經(jīng)網(wǎng)絡(luò)的輸入長(zhǎng)度固定,而樣本的長(zhǎng)度不固定,選擇合適的向量維度極其重要。故根據(jù)樣例長(zhǎng)度,將長(zhǎng)度超過(guò)向量維度的進(jìn)行截?cái)?,長(zhǎng)度不足的用-1進(jìn)行填充,使所有的向量長(zhǎng)度一致。
Table 1 Tokenization表1 分詞
Fig.5 Tokenized result of sample圖5 樣例經(jīng)過(guò)分詞的結(jié)果
Table 2 Vectorization result表2 向量化結(jié)果
文獻(xiàn)[17]提出了使用LSTM 的深度學(xué)習(xí)檢測(cè)模型DeepXSS,但該模型對(duì)于XSS 下文對(duì)上文的信息依賴?yán)貌粔虺浞?。故而,本文提出了BiLSTM檢測(cè)模型,該模型包含了四個(gè)組成部分:輸入層、BiLSTM層、dropout層、輸出層。其中BiLSTM層是模型的核心部分,用于學(xué)習(xí)樣本的上下文信息,從而抽取有效特征,進(jìn)而將有效特征用于分類器分類預(yù)測(cè)跨站腳本。
3.2.1 模型設(shè)計(jì)
為了實(shí)現(xiàn)對(duì)XSS 的檢測(cè),本文構(gòu)建了一種基于BiLSTM的檢測(cè)模型,結(jié)構(gòu)自下而上如圖6所示。
Fig.6 Detection model based on BiLSTM圖6 基于BiLSTM的檢測(cè)模型
Input layer:輸入層。在本層中,數(shù)據(jù)以二階張量形式來(lái)表示,同時(shí)設(shè)置每次輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練樣本的個(gè)數(shù)(batch_size)。在數(shù)據(jù)預(yù)處理時(shí)預(yù)先訓(xùn)練了詞向量矩陣embedding,因此本模型不再使用embedding層。
BiLSTM layer:雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)層。利用BiLSTM 能捕獲數(shù)據(jù)的時(shí)序性和能解決長(zhǎng)程依賴問(wèn)題的優(yōu)點(diǎn),將其自動(dòng)學(xué)習(xí)XSS攻擊的抽象特征,使檢測(cè)性能更好。
Dropout layer:用來(lái)提高方法的泛化能力,避免過(guò)擬合。
Output layer:輸出層。輸出分類器的分類結(jié)果。
檢測(cè)模型具體步驟如下(以一個(gè)樣本Ri={x1,x2,…,x49,x50}為例):
步驟1提取抽象特征
(1)將Ri輸入到輸入層,得到輸入層輸出向量Ii={i1,i2,…,i49,i50}。
(2)將Ii作為BiLSTM 層的forward layer 的輸入,先經(jīng)過(guò)前向?qū)W習(xí)輸出最后一個(gè)時(shí)間步,作為與XSS相關(guān)的特征向量f={f1,f2,…,f63,f64}。
(3)將Ii作為雙向LSTM 層的backward layer 的輸入,先經(jīng)過(guò)后向?qū)W習(xí)輸出最后一個(gè)時(shí)間步,作為與XSS相關(guān)的特征向量b={b1,b2,…,b63,b64}。
(4)將前向?qū)W習(xí)到的特征f和后向?qū)W習(xí)到的特征b結(jié)合起來(lái),得到雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)提取出的抽象特征h=[f:b]={f1,f2,…,f63,f64,b1,b2,…,b63,b64}。
步驟2使用softmax分類器對(duì)抽象特征h進(jìn)行分類預(yù)測(cè)。
(1)利用dropout 使部分雙向長(zhǎng)短時(shí)記憶單元隨機(jī)失活,避免訓(xùn)練結(jié)果出現(xiàn)過(guò)擬合。將抽象特征h作為dropout 層的輸入,輸出為d={d1,d2,…,d127,d128},其中這128個(gè)值以dropout比率被置為0。數(shù)學(xué)公式如下:
其中,Bernoulli函數(shù)用于生成概率向量r∈(0,1),h以r的概率置零得到d。
(2)將抽象特征d輸入到softmax 函數(shù)中進(jìn)行分類預(yù)測(cè),得到表示為01或10的2維輸出。公式如下:
其中,ws和bs是softmax函數(shù)的權(quán)重與偏置,p∈(0,1)。
3.2.2 算法設(shè)計(jì)
原始數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)預(yù)處理,得到適應(yīng)神經(jīng)網(wǎng)絡(luò)輸入的標(biāo)準(zhǔn)訓(xùn)練集TrR={R1,R2,…,Rn}、標(biāo)準(zhǔn)測(cè)試集TeR={R1,R2,…,Rm},其中n、m分別為訓(xùn)練集和測(cè)試集的樣本數(shù),Ri(50×128維)代表每個(gè)樣本。BiLSTM檢測(cè)模型算法設(shè)計(jì)如下:
輸入:訓(xùn)練集TrR和測(cè)試集TeR。
輸出:通過(guò)分類器softmax 分類得到的分類結(jié)果TrY(2維)。
1.構(gòu)建BiLSTM網(wǎng)絡(luò)并初始化其權(quán)重和偏置;
2.構(gòu)建softmax分類器并初始化其權(quán)重和偏置;
3.將預(yù)處理后的訓(xùn)練集TrR作為輸入;
4.foriin epochs #epochs為訓(xùn)練迭代次數(shù)
5.將TrR作為輸入層的輸入,得到輸出TrI(50×128維);
6.將TrI作為BiLSTM 層的輸入,經(jīng)過(guò)forward layer學(xué)習(xí)得到抽象特征h1(64 維),經(jīng)過(guò)backward layer 學(xué)習(xí)得到抽象特征h2(64維),結(jié)合h1、h2后得到抽象特征h=[h1:h2](128維);
7.將抽象特征h作為softmax分類器的輸入,得到分類結(jié)果TrY(2維);
8.根據(jù)分類結(jié)果與實(shí)際標(biāo)簽的誤差,反向傳播調(diào)整參數(shù);
9.更新softmax分類器的權(quán)重和偏置;
10.更新BiLSTM網(wǎng)絡(luò)的權(quán)重和偏置;
11.end for
12.將測(cè)試集TeR作為訓(xùn)練好的檢測(cè)模型的輸入,輸出測(cè)試結(jié)果。
本文數(shù)據(jù)集中,惡意樣例來(lái)源于XSSed 數(shù)據(jù)庫(kù),經(jīng)過(guò)數(shù)據(jù)預(yù)處理得到27 252 條標(biāo)準(zhǔn)數(shù)據(jù);正常樣例來(lái)源于DMOZ 數(shù)據(jù)庫(kù),經(jīng)過(guò)數(shù)據(jù)預(yù)處理得到77 216條標(biāo)準(zhǔn)數(shù)據(jù)。實(shí)驗(yàn)中,將惡意樣例和正常樣例放在一起,運(yùn)用交叉驗(yàn)證中的train_test_split函數(shù),從樣本中以7∶3 的比例隨機(jī)選取訓(xùn)練集和測(cè)試集。數(shù)據(jù)集的分布情況如表3所示。
Table 3 Dataset distribution表3 數(shù)據(jù)集分布
本文實(shí)驗(yàn)使用的計(jì)算機(jī)配置為:處理器Intel?CoreTMi3-2367M CPU@1.40 GHz,內(nèi)存6 GB,64位win10操作系統(tǒng)。實(shí)驗(yàn)環(huán)境為Python 3.5.2、TensorFlow 1.12.0、Keras 2.2.4。
為了驗(yàn)證檢測(cè)方法的性能,本文使用了準(zhǔn)確率(precision)、召回率(recall)、F1值對(duì)模型評(píng)估。在本文的評(píng)估指標(biāo)中,將XSS作為正樣本,將正常樣例作為負(fù)樣本,評(píng)估指標(biāo)的混淆矩陣如表4所示。
Table 4 Evaluation index confusion matrix表4 評(píng)估指標(biāo)混淆矩陣
4.3.1 檢測(cè)方法分析
(1)向量維度
神經(jīng)網(wǎng)絡(luò)輸入向量的維度一致,而樣本的維度不一致,選擇一個(gè)合適的向量維度,才能充分利用樣本信息。若向量維度過(guò)短,會(huì)遺失大量有效信息,降低檢測(cè)準(zhǔn)確率;若向量維度過(guò)長(zhǎng),會(huì)增加大量計(jì)算,降低檢測(cè)實(shí)時(shí)性。為了得到合適的向量維度,本文比較了不同向量維度對(duì)準(zhǔn)確率和訓(xùn)練時(shí)間的影響,結(jié)果如圖7 所示??梢钥闯觯S度超過(guò)50 時(shí)準(zhǔn)確率變化不太明顯,但是訓(xùn)練時(shí)間幾乎成倍增長(zhǎng),維度為100 和50 的準(zhǔn)確率能達(dá)到最優(yōu),但是維度為50 的訓(xùn)練時(shí)間明顯低于維度超過(guò)50 的訓(xùn)練時(shí)間,從而選擇50作為向量維度能使檢測(cè)性能達(dá)到最優(yōu)。
Fig.7 Vector dimension圖7 向量維度
(2)優(yōu)化器
優(yōu)化函數(shù)是一種不斷調(diào)整參數(shù)使損失函數(shù)值loss越來(lái)越小,最終使預(yù)測(cè)值盡可能接近真實(shí)值的方法,而神經(jīng)網(wǎng)絡(luò)中的優(yōu)化器用來(lái)更新和計(jì)算模型訓(xùn)練與模型輸出的網(wǎng)絡(luò)參數(shù),使其逼近或達(dá)到最優(yōu)值。優(yōu)化器的不同,會(huì)導(dǎo)致?lián)p失函數(shù)值有所不同,為了找到最小化的損失函數(shù),本文對(duì)常見(jiàn)的優(yōu)化器Adam、SGD、RMSprop、Adagrad、Adadelta、Adamax進(jìn)行了對(duì)比實(shí)驗(yàn),損失函數(shù)關(guān)系曲線如圖8所示。從該圖可以看出,SGD優(yōu)化效果最差,而其他幾種優(yōu)化器優(yōu)化效果差異不明顯。故選擇了Adam 優(yōu)化檢測(cè)模型,使其能快速將損失函數(shù)收斂到一定值。
Fig.8 Optimizer圖8 優(yōu)化器
(3)分類器
分類器的作用是利用已知標(biāo)簽的訓(xùn)練數(shù)據(jù)來(lái)學(xué)習(xí)分類規(guī)則,然后對(duì)未知標(biāo)簽的數(shù)據(jù)進(jìn)行分類預(yù)測(cè)。分類器的選擇有很多,而本文采用BiLSTM 對(duì)XSS進(jìn)行檢測(cè),因此需要選擇適用于神經(jīng)網(wǎng)絡(luò)的分類器。LR 分類器和softmax 分類器是神經(jīng)網(wǎng)絡(luò)常用的分類器,LR分類器常用于二分類,也可以用多個(gè)二分類實(shí)現(xiàn)多分類,適用于非互斥的分類問(wèn)題,softmax分類器常用于多分類,也可以用于二分類,適用互斥的分類問(wèn)題。實(shí)驗(yàn)對(duì)比了這兩種神經(jīng)網(wǎng)絡(luò)分類器,結(jié)果如表5 所示??梢钥闯?,softmax 分類器的分類效果要優(yōu)于LR 分類器,故本文選擇softmax 分類器作為模型的分類器。
(4)實(shí)驗(yàn)結(jié)果
本文選擇向量維度為50、優(yōu)化器為Adam對(duì)模型進(jìn)行測(cè)試。首先分析各個(gè)參數(shù)對(duì)于網(wǎng)絡(luò)結(jié)構(gòu)以及性能的影響,然后根據(jù)實(shí)驗(yàn)結(jié)果調(diào)整參數(shù),直至檢測(cè)方法達(dá)到最優(yōu)。最終檢測(cè)模型的參數(shù)設(shè)置如表6所示。
Table 5 Classifier表5 分類器
Table 6 Parameter setting of model表6 模型參數(shù)設(shè)置
Fig.9 Training results圖9 訓(xùn)練結(jié)果
對(duì)經(jīng)過(guò)調(diào)整后的檢測(cè)方法進(jìn)行訓(xùn)練和測(cè)試,準(zhǔn)確率和損失函數(shù)變化曲線如圖9 所示。從這兩組圖像可以看出,準(zhǔn)確率曲線穩(wěn)步上升的同時(shí)損失函數(shù)曲線穩(wěn)步下降且兩者均收斂到一定值,表明檢測(cè)方法具有良好的訓(xùn)練效果,分類效果良好。
4.3.2 對(duì)比實(shí)驗(yàn)
為了驗(yàn)證模型的有效性和優(yōu)勢(shì),本文設(shè)計(jì)了兩組對(duì)比實(shí)驗(yàn):(1)機(jī)器學(xué)習(xí)對(duì)比實(shí)驗(yàn);(2)深度學(xué)習(xí)對(duì)比實(shí)驗(yàn)。
(1)機(jī)器學(xué)習(xí)對(duì)比實(shí)驗(yàn)
為了驗(yàn)證本文提出的檢測(cè)方法性能要優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)算法,且因文獻(xiàn)[9]所使用的數(shù)據(jù)集與本文的數(shù)據(jù)集都來(lái)源于相同數(shù)據(jù)庫(kù),所以將本文提出的檢測(cè)方法與文獻(xiàn)[9]中的ADTree、AdaBoost檢測(cè)方法進(jìn)行對(duì)比。ADTree分類器是一種基于Boosting的決策樹學(xué)習(xí)算法,它的分類性能要優(yōu)于其他決策樹。AdaBoost 針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練多個(gè)弱分類器,然后將弱分類器集合成一個(gè)強(qiáng)分類器,分類性能更優(yōu)。同時(shí),為了增加對(duì)比性,本文選擇XSS檢測(cè)中常用的SVM(support vector machine)分類器進(jìn)行對(duì)比實(shí)驗(yàn),SVM是一種按監(jiān)督學(xué)習(xí)方式對(duì)數(shù)據(jù)進(jìn)行二元分類的廣義線性分類器。實(shí)驗(yàn)中,運(yùn)用了sklearn 中的SVM算法對(duì)代碼樣本進(jìn)行分類。實(shí)驗(yàn)結(jié)果如表7 和圖10所示。可以看出,ADTree、AdaBoost 準(zhǔn)確率分別為93.8%和94.2%,SVM準(zhǔn)確率為98.9%,而本文所提出的方法準(zhǔn)確率高達(dá)99.7%,召回率高達(dá)98.1%,F(xiàn)1 值高達(dá)98.7%,性能明顯要優(yōu)于ADTree、AdaBoost、SVM這些傳統(tǒng)機(jī)器學(xué)習(xí)算法。
Table 7 Detection results of proposed method and machine learning methods表7 本文方法與機(jī)器學(xué)習(xí)方法的檢測(cè)結(jié)果
(2)深度學(xué)習(xí)對(duì)比實(shí)驗(yàn)
Fig.10 Comparison of proposed method with machine learning methods圖10 本文方法與機(jī)器學(xué)習(xí)方法對(duì)比
Table 8 Detection results of proposed method and similar deep learning methods表8 本文方法與類似深度學(xué)習(xí)方法檢測(cè)結(jié)果
Fig.11 Comparison of different deep learning detection methods圖11 不同深度學(xué)習(xí)檢測(cè)方法的對(duì)比
為了驗(yàn)證本文提出的檢測(cè)方法相對(duì)于其他深度學(xué)習(xí)檢測(cè)方法具有更好的檢測(cè)性能,將本文方法與RNN、LSTM和門循環(huán)單元(gated recurrent unit,GRU)進(jìn)行了對(duì)比實(shí)驗(yàn),結(jié)果如表8 和圖11 所示??梢钥闯?,深度學(xué)習(xí)中常見(jiàn)的RNN、LSTM、GRU 檢測(cè)方法對(duì)跨站腳本攻擊實(shí)現(xiàn)了良好的檢測(cè),但是相對(duì)于本文提出的BiLSTM 檢測(cè)方法,它們?cè)跍?zhǔn)確率、召回率和F1值都有所欠缺。同時(shí)可以看到本文方法與其他三種方法相比具有最低的誤報(bào)率(false positive rate,F(xiàn)PR)。圖12 繪制了四種方法的ROC 曲線(receiver operating characteristic curve),并計(jì)算出AUC(area under the curve)值??梢钥闯觯珺iLSTM網(wǎng)絡(luò)比單向的RNN、LSTM、GRU網(wǎng)絡(luò)更適用于跨站腳本檢測(cè)。
Fig.12 ROC curves圖12 ROC曲線
針對(duì)現(xiàn)如今復(fù)雜網(wǎng)絡(luò)中的XSS 攻擊問(wèn)題,本文提出一種基于雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的XSS 檢測(cè)方法。首先,由于XSS 通常采用編碼技術(shù)進(jìn)行惡意混淆,為了提高檢測(cè)精度,先對(duì)數(shù)據(jù)解碼;然后,通過(guò)數(shù)據(jù)預(yù)處理使其向量化作為神經(jīng)網(wǎng)絡(luò)的輸入;其次,采用BiLSTM 提取XSS 的抽象特征;最后,利用分類器根據(jù)抽象特征進(jìn)行分類,完成檢測(cè)。與三種傳統(tǒng)的機(jī)器學(xué)習(xí)方法相比,本文所提方法不需要人工提取XSS 代碼特征,大大降低了人力成本,并且得到了更好的檢測(cè)結(jié)果。與三種深度學(xué)習(xí)方法相比,本文方法更充分地利用了與XSS 相關(guān)的信息,在XSS 檢測(cè)上取得了更高的準(zhǔn)確率和更低的誤報(bào)率。本文提出的檢測(cè)方法可能面臨著以下挑戰(zhàn):一是BiLSTM提取的特征中有與XSS 相關(guān)性不高的信息,從而加大了模型計(jì)算量;二是模型可能對(duì)于其他類型的XSS 檢測(cè)性能不高。因此下一步將進(jìn)行針對(duì)這兩方面的研究:一是使用注意力機(jī)制對(duì)模型進(jìn)行改進(jìn),運(yùn)用注意力機(jī)制計(jì)算BiLSTM提取特征的注意力權(quán)重,使模型顯著關(guān)注與XSS相關(guān)性高的特征,從而優(yōu)化模型;二是收集其他類型XSS數(shù)據(jù),提高檢測(cè)模型的泛化能力。