王鈴銅 王慧玲 徐苗 綦小龍



摘 要:跨站腳本(cross site scripting,XSS)攻擊是Web安全中最嚴重的風險之一。隨著Web服務、API等Web技術的廣泛使用,以及AJAX、CSS和HTML5等新編程風格的出現,XSS攻擊的威脅變得更加嚴重,因此如何處理XSS攻擊安全風險已成為Web安全研究的重要關注點。通過對近年來XSS攻擊檢測和防御技術的調研,根據XSS攻擊是否具有隱蔽性,首次從非對抗和對抗兩個角度綜述了XSS攻擊檢測和防御的最新技術。首先,從非對抗攻擊檢測和對抗攻擊檢測兩個方面探討分析了基于機器學習從數據中學習攻擊特征、預測攻擊的方法,以及基于強化學習識別或生成對抗樣本策略來優化檢測模型的方法;其次,闡述了非對抗攻擊防御基于規則過濾XSS攻擊、基于移動目標防御(MTD)隨機性降低攻擊成功率和基于隔離沙箱防止XSS攻擊傳播的方法;最后,分別從樣本特征、模型特點和CSP的局限性、上傳功能的廣泛性等方面提出了XSS攻擊檢測和防御未來需要考慮的問題并作出展望。
關鍵詞:XSS攻擊;機器學習;非對抗攻擊檢測;對抗攻擊檢測;非對抗攻擊防御
中圖分類號:TP393.08?? 文獻標志碼:A
文章編號:1001-3695(2024)03-002-0652-11
doi:10.19734/j.issn.1001-3695.2023.06.0286
Review of cross-site scripting attack detection and defence techniques
Wang Lingtonga,b,Wang Huilinga,b,Xu Miaoa,b,Qi Xiaolonga,b
(a.School of Network Security & Information Technology,b.Key Laboratory of Intelligent Computing Research & Application,Yili Normal University,Yining Xinjiang 835000,China)
Abstract:Cross site scripting attack,also called XSS attack,is one of the most serious risks in Web security.With the widespread use of Web technologies such as Web services,APIs,and the emergence of new programming styles such as AJAX,CSS and HTML5,the threat of XSS attacks has become more serious.Therefore,how to deal with the security risk of XSS attacks has become an important concern in Web security research.By investigating the literature on XSS attack detection and defence in recent years,this paper reviewed the latest techniques for XSS attack detection and defence from both non-adversarial and adversarial perspectives,based on whether the XSS attack was stealthy or not.Firstly,from the aspects of non-confrontational attack detection and confrontational attack detection,this paper explored and analysed the methods of learning attack features from data and predicting attacks based on machine learning and optimising the detection model based on reinforcement learning to identify or generate confrontational sample strategies.Secondly,it elaborated the methods of non-confrontational attack defence to filter the XSS attacks based on rules,to reduce the success rate of attacks based on the randomness of the moving targets defence(MTD) ,and to isolation sandbox-based approach to prevent the propagation of XSS attacks.Finally,this paper presented the future issues to be considered and outlooks of XSS attack detection and defence in terms of sample characteristics,model features and limitations of CSP,and the wide range of uploading functions,respectively.
Key words:XSS attack;machine learning;non-adversarial attack detection;adversarial attack detection;non-adversarial attack defence
0 引言
跨站腳本攻擊又叫做XSS攻擊,是1999年由知名的Web安全數據庫與安全研究組織(Open Web Applications Security Project,OWASP)報告的一種針對用戶層面的惡意代碼注入型攻擊。XSS攻擊是由攻擊者向用戶的Web頁面植入惡意的script代碼,當用戶點擊該頁面后達到攻擊用戶的目的。在OWASP每四年報告的年度十大Web應用程序安全漏洞中,XSS攻擊都位于前十,其中在2021年OWASP公布的最新top10榜單中位列第三位[1]。XSS攻擊一旦攻擊成功,就會作出竊取cookie[2,3]、植入木馬[4]、直接獲取用戶信息[5]等危害用戶的行為。
為此,如何有效防范XSS攻擊備受研究者的關注。當前,XSS處理技術主要有XSS檢測技術和XSS攻擊防御技術,XSS檢測技術主要有XSS漏洞檢測技術和XSS攻擊檢測技術。其中,漏洞檢測技術旨在從源頭上檢測XSS攻擊;攻擊檢測技術旨在捕獲漏洞檢測不完備時的攻擊,是檢測的最后一道防線。現有的XSS攻擊檢測研究主要有兩條路線:a)面向Web頁面的漏洞進行檢測,判斷其是否存在XSS攻擊漏洞;b)面向攻擊行為進行檢測,通過機器學習方法檢測當前的用戶特征是否為XSS攻擊。
XSS漏洞檢測技術是指使用合適的方法或工具通過檢查Web應用程序的源代碼,檢測Web安全編碼在實際使用過程中是否存在漏洞,研究者一般將XSS漏洞檢測技術分為三大類[6]:
a)靜態分析。該方法在用戶使用Web應用程序前,通過Web源代碼與XSS安全漏洞特征庫的匹配分析判斷其是否存在漏洞。當檢測到XSS攻擊漏洞風險時,靜態分析工具報告異常行為以供開發人員查看和修復。靜態分析方法中最具代表性的是XSS-secure XSS檢測框架[7]和基于單元測試的檢測工具[8],這類靜態分析方法可以有效檢測出異常代碼片段的位置,極大提高了XSS攻擊漏洞的檢測率。然而,該方法也存在許多局限性:由于靜態分析需要檢查并分析Web程序的源代碼,而大多數Web應用程序的制造公司是不愿意將源代碼分享出來的,這就為靜態分析造成了很大阻礙[9]。靜態代碼分析工具也無法處理一些網站在加載時出現的動態代碼,同時在服務器上的靜態分析工具并沒有辦法分析存在于客戶端的DOM型XSS攻擊代碼。
b)動態分析。該方法著重在Web應用程序運行時動態分析從程序中提取的實時數據,向服務器發送相應請求從而檢查并分析程序是否具有XSS攻擊漏洞。動態分析方法最具代表性的有基于動態污染分析的TT-XSS檢測框架[10]和基于兩次爬山掃描的XSS攻擊檢測系統[11],這類分析方法的優勢是不需要像靜態分析那樣提前知道Web應用程序的源代碼就可以檢測出XSS攻擊的漏洞。動態代碼分析工具也可以分析網頁中的動態代碼,進一步優化了靜態分析工具檢測XSS攻擊漏洞的弊端。但動態分析也存在一些問題:由于是在運行時分析應用程序的實時數據,隨著XSS有效負載越來越多,動態分析的方法檢測的時間就會大大增加,使得這些工具在實際的應用場景中難以被有效使用。
c)混合分析方法。該方法利用動態分析方法和靜態分析方法各自的優點,先靜態分析Web應用程序,檢測出XSS攻擊漏洞,然后動態分析對漏洞進行驗證,通過兩者的結合降低了XSS攻擊漏洞的漏報率。總的來說,這種混合分析方法不僅可以檢測到網站的動態代碼,還可以在網站XSS負載加大時極大地減少檢測XSS攻擊漏洞的時間,提升了XSS攻擊漏洞的檢測效率。但其中一些混合分析方法僅適用于單一語言,而XSS攻擊可用多種語言實現代碼的注入,使得混合分析方法在實際應用過程中難以有效使用。
雖然這些方法在防范XSS攻擊上取得了一定的成績,但這三種檢測XSS攻擊的方法都存在各自不可避免的缺陷,同時漏洞檢測技術在檢測未知的XSS攻擊漏洞時性能表現不佳;此外,代碼混淆、動態代碼生成等技術也為漏洞檢測造成了阻礙。XSS攻擊防御也面臨同樣的問題:由于攻擊策略的快速發展,傳統的基于黑白名單、正則表達式的方法已經不能有效防御所有XSS攻擊。
為此,研究者將能進行自我學習的機器學習技術應用到了包括XSS攻擊檢測的網絡安全任務中以改善漏洞檢測的不足。通過增量式學習、持續學習等機器學習技術從數據中構建自適應決策模型,大大提升了對未知和新型XSS攻擊檢測的能力。同時,研究者將CSP、MTD等新興技術用于XSS攻擊防御任務中以解決傳統方法不能有效防御所有XSS攻擊的問題。
目前,XSS攻擊檢測和防御領域主要有以下綜述文獻:Sarmah等人[6]綜述的傳統XSS攻擊檢測方法,根據檢測機制,主要闡述了基于傳統檢測方法部署點的分類模型;Chen等人[12]根據XSS攻擊識別策略對多種機器學習算法進行了相應的闡述和比較,闡述了其優勢以及在實際XSS攻擊檢測中面臨的問題;Stency等人[13]從各種性能指標上分析了基于深度學習的XSS攻擊檢測方法,通過對比得出了每種深度學習檢測方法的局限性,并指出使用基于深度學習技術的人工智能方法在開發高效的XSS入侵檢測上意義重大。
Vijayalakshmi等人[14]根據XSS攻擊檢測和防御方法的部署點對XSS攻擊檢測和防御技術做了一個系統的綜述,主要對客戶端和服務器端使用的基于靜態分析以及動態分析的XSS攻擊檢測方法作了詳細介紹,并闡述了服務器端和客戶端的XSS攻擊防御方法。
上述綜述都是從非對抗XSS攻擊角度考慮,分別闡述了傳統XSS攻擊檢測方法和智能XSS攻擊檢測方法,對XSS攻擊防御方法提及較少,且沒有整體對最新XSS攻擊檢測與防御技術進行系統的闡述;并且就筆者所知,當前沒有相關文獻闡述XSS對抗攻擊的檢測技術。為此,本文根據XSS攻擊是否具有隱蔽性,從非對抗和對抗兩個角度對新興的XSS攻擊檢測和防御技術進行全面和系統的綜述。本文主要貢獻如下:a)對XSS攻擊進行全面的回顧(包括新型XSS攻擊),并根據其攻擊媒介對XSS攻擊進行分類總結;b)從非對抗和對抗兩個角度闡述了最新的基于機器學習的XSS攻擊檢測方法,并根據其使用動機、特征提取的類別、優勢和局限性進行了系統的綜述;c)從非對抗攻擊防御角度出發,根據其研究動機、優勢和局限性對基于CSP、MTD等最新防御XSS攻擊的方法進行了全面的分析和對比;d)分別從樣本特征、模型特點和CSP的局限性、上傳功能的廣泛性等方面提出了XSS攻擊檢測和防御未來需要考慮的問題,為XSS攻擊檢測和防御的進一步研究提供參考。
1 XSS攻擊概述
基于機器學習的XSS攻擊檢測技術面向攻擊行為進行檢測,通過使用機器學習方法來分析用戶的特征,進而判定是否為XSS攻擊。在這個任務流程中,XSS攻擊特征的重要性不可忽視,攻擊特征影響檢測任務的性能。由于XSS攻擊存在多種類型,可以使用不同的編碼方式和惡意代碼注入點來實現惡意代碼的注入。所以一種類型的XSS攻擊特征并不能代表全部類型的XSS攻擊,不同的XSS攻擊特征表現也存在多樣性。
1.1 XSS攻擊的類型
隨著Web技術的快速發展,出現了越來越多的新型XSS攻擊,JavaScript型XSS攻擊(JSM-XSS)、XSS蠕蟲(WXSS)以及變異的XSS攻擊(MXSS)等新型XSS攻擊相繼被研究者發現;同時XSS攻擊的攻擊媒介也呈現出多樣性,如Web應用程序、瀏覽器第三方擴展和Web應用程序的第三方框架等。本文根據XSS攻擊的攻擊媒介將現有的XSS攻擊大致分為基于Web應用程序的XSS攻擊和基于第三方的XSS攻擊、基于協同的XSS攻擊。表1總結了XSS攻擊的類型。
1.1.1 基于Web應用程序的XSS攻擊
基于Web應用程序的XSS攻擊是由攻擊者向Web應用程序注入惡意script代碼,針對Web應用程序自身的漏洞而進行的攻擊,通常是編寫該應用程序的開發人員由于沒有進行防范措施而出現的代碼型漏洞。在已有的研究中,有以下五種攻擊屬于這一類別:
a)反射型XSS攻擊(RXSS)。通常攻擊者會將惡意的script代碼注入到URL中,通過某種方式由用戶接收并點擊惡意URL;此時用戶的瀏覽器向攻擊者的服務器發起請求,服務器收到并作出響應。將惡意script代碼返回到用戶瀏覽器經由瀏覽器解析后,RXSS[15]攻擊成功。
b)存儲型XSS攻擊(SXSS)。首先是由攻擊者將惡意script代碼上傳到易受攻擊的Web網站的服務器中,服務器會將惡意的script代碼永久地保存,由用戶無限次進行觸發。每當用戶在易受攻擊的Web網頁上點擊時,瀏覽器會向服務器發起請求,服務器響應后瀏覽器解析執行,SXSS[15]攻擊完成。
c)DOM型XSS攻擊(DXSS)。主要針對本身存在DOM[16]漏洞的易受攻擊的Web頁面。攻擊者會將惡意的script代碼注入到URL中,通過某種方式由用戶接收并點擊惡意URL;瀏覽器收到響應解析執行后由前端JavaScript取出惡意script代碼并反饋給瀏覽器執行,因此DXSS也是一種特殊的反射型XSS攻擊。與RXSS和SXSS不同,DXSS[15]不經過服務器,是前端的漏洞。
d)JavaScript型XSS攻擊(JSM-XSS)。JSM-XSS是一種新型的腳本模仿的XSS攻擊。攻擊者通過Web應用程序,利用在程序上已經執行的腳本發起JSM-XSS。研究表明,在應用程序注入合法的腳本也可能是對Web應用程序有害的行為[17],且這種行為難以被檢測工具檢測。
e)XSS蠕蟲(WXSS)。WXSS是一種新型的具有強大自我復制能力的蠕蟲型XSS攻擊。XSS蠕蟲具有廣泛傳播的能力,可以通過Web應用程序在用戶之間傳來傳去,在未被檢測到消滅之前它會一直傳播,因此對于用戶它更加危險。XSS蠕蟲危險且十分隱蔽,在2005年發現的Samy蠕蟲就是XSS蠕蟲,在被發現之前的一天時間里便傳播了100多萬人[18]。中國社交網絡新浪微博也曾遭受過XSS蠕蟲的攻擊,遭受XSS蠕蟲攻擊的用戶會自動地向其他用戶發送毒私信,在用戶之間進行相互傳播,短短1 h之內就有三萬多名用戶的信息遭到竊取[19]。
1.1.2 基于第三方的XSS攻擊
基于第三方的XSS攻擊主要利用瀏覽器上的第三方擴展以及Web應用程序的第三方框架的漏洞實施攻擊,而不針對Web應用程序本身。這一類別包括:
a)腳本小工具型XSS攻擊(CR-XSS)。這種XSS攻擊于2013年被Lekies等人[20]發現,攻擊者通常在攻擊前會提前了解Web應用程序上的第三方腳本小工具,通過向目標應用程序注入HTML標記引發腳本小工具的執行來實現CR-XSS。
b)通用XSS攻擊(UXSS)。UXSS是一種通過瀏覽器或者瀏覽器擴展的漏洞向Web頁面注入惡意代碼的XSS攻擊[21]。UXSS不需要Web頁面具有XSS攻擊漏洞,它可以滲透到沒有安全問題的Web頁面去創造漏洞,而原先的Web頁面是不具備XSS攻擊漏洞的,這使得UXSS成為XSS攻擊中危害性最大的攻擊類型之一。
1.1.3 基于協同的XSS攻擊
基于協同的XSS攻擊需要同時滿足在Web應用程序和第三方均存在漏洞的情況下攻擊者才會攻擊成功,如果有任一方沒有存在漏洞,攻擊者就會攻擊失敗。這一類別包括:
a)跨API腳本(XAS)。XAS最早在2013年被發現,由Zhang等人[22]在2015年提出。XAS主要針對Web應用程序,這些易受攻擊的Web應用程序會向第三方開發人員提供restful API。攻擊者向Web應用程序注入惡意的script代碼,并通過調用API訪問Web應用程序用戶數據信息。惡意script代碼通過瀏覽器被用戶觸發并執行,XAS便攻擊成功。
b)變異的XSS攻擊(MXSS)。在2013年,Heiderich等人[23]首次提出MXSS這種變異的XSS攻擊,它是由攻擊者向用戶瀏覽器注入惡意數據與易受攻擊的Web應用程序中的innerHTML屬性進行關聯后插入瀏覽器中的DOM進而實施攻擊。任何服務器端和客戶端的檢測工具都無法檢測到這種惡意數據,因為檢測工具主要是檢測惡意script代碼,而此惡意數據不包含任何可執行的代碼,所以會被檢測工具忽略而攻擊成功。
c)內容嗅探XSS攻擊(CS-XSS)。CS-XSS是攻擊者通過利用瀏覽器對文件內容產生誤解,在訪問者的瀏覽器上運行JavaScript代碼發起的XSS攻擊。由于JavaScript的同源策略,CS-XSS將使用Web應用程序的特權運行。
1.2 XSS攻擊特征
在XSS攻擊檢測任務流程中,XSS攻擊特征的重要性不可忽視,機器學習根據特征對數據樣本進行分類,沒有提取到的特征將逃避攻擊檢測。在XSS攻擊檢測的研究中,XSS攻擊特征呈現出多樣性,對XSS攻擊數據集進行特征提取的類型大致可以分為基于URL、基于HTML、基于JavaScript、基于SNS、XSS攻擊有效載荷和XSS攻擊流量幾種。其中,研究者主要針對基于URL、基于HTML、基于JavaScript、XSS攻擊有效載荷和XSS攻擊流量的特征進行深入研究,其表現的XSS攻擊類型是OWASP報告的反射型XSS攻擊(RXSS)、存儲型XSS攻擊(SXSS)、DOM型XSS攻擊(DXSS)三種基本的XSS攻擊。對于新型XSS攻擊,基于SNS的攻擊特征為XSS蠕蟲的專屬特征。關于XSS攻擊特征類型總結如表2所示。
1.3 基于機器學習的XSS攻擊檢測任務流程
基于機器學習的XSS攻擊檢測任務流程一般為準備XSS攻擊數據集、進行特征處理、模型訓練和類別判定。
a)數據集。機器學習算法的表現與使用數據集的質量息息相關,在XSS攻擊檢測的研究中存在標準數據集和合成數據集兩類數據集。標準數據集是由國際公認的安全研究組織發布的數據集,如加拿大網絡安全研究所的CICIDS系列數據集,但此數據集有關XSS攻擊的數量十分有限且數據存在嚴重的類別不平衡現象;合成數據集一般是由研究者自己在網站搜集然后組合,研究者從GitHub、Kaggle、XSSed等網站搜集XSS攻擊和正常的樣本,通過組合搜集樣本來構成實驗所用數據集。研究者的XSS攻擊數據集來源如表3所示。其中,M表示惡意的,B表示良性的,MB表示混合的。
b)特征處理。特征決定了機器學習模型的性能上限,處理好XSS攻擊特征對于機器學習檢測模型至關重要。在XSS攻擊的檢測中,攻擊流量數據集存在嚴重的類別不平衡現象,因此需要通過采樣方法對數據進行處理。對于XSS攻擊有效載荷形式數據集,攻擊者會對其進行編碼來躲避檢測,所以要先對有效載荷進行解碼;其次,有效載荷中的數字、域名等信息不影響檢測,需要對其進行泛化;最后,由于有效載荷是文本形式,需要運用自然語言處理方法將其分詞然后轉換為向量。但是可能轉換后特征維度過大,導致計算量大,出現訓練時間長的問題,因此降低特征維度也是必不可少的。
c)模型訓練。使用學習算法學習一個能夠很好刻畫訓練數據分布的模型。在訓練階段,對給定的XSS攻擊數據集進行特征清洗、預處理得到其特征表示,然后建立模型對數據樣本的分布進行學習;在測試階段,將測試數據的特征輸入到模型中,然后模型對其進行類別判定。
2 XSS攻擊檢測技術
傳統的XSS攻擊檢測方法在檢測過程中對未知的XSS攻擊無法很好決策,導致較高的漏報率。因此,研究者使用基于機器學習的XSS攻擊檢測方法來彌補傳統檢測方法的不足。根據XSS攻擊是否具有隱蔽性,本文將機器學習的檢測方法分為基于非對抗性XSS攻擊和基于對抗性XSS攻擊兩類。
2.1 基于非對抗性XSS攻擊
2.1.1 單一機器學習方法
單一機器學習是指使用一種機器學習方法完成XSS攻擊的檢測,這種方法適用于通過注入惡意JavaScript代碼實現的XSS攻擊。代表性的方法如下:
Goswami等人[24]基于屬性聚類提出了一種基于K-means的無監督方法At-Attribute聚類用于在客戶端和服務器端體系結構中檢測基于JavaScript的XSS攻擊。該算法通過將帶有類標簽的XSS攻擊數據集應用于信息增益和卡方檢驗等不同的特征選擇算法中,選出與XSS攻擊最相關的攻擊特征,之后使用基于K-means的At-Attribute聚類算法對最終的特征進行屬性聚類。該算法比較容易實現,僅需要很少的知識就可以高精度地檢測XSS攻擊。
文獻[25]將決策樹算法應用于XSS攻擊檢測中,提高對基于JavaScript代碼的可視化內容的XSS攻擊檢測準確率。該方法從獲取的可視化內容的請求代碼中提取惡意XSS攻擊的特征向量,通過最大化獲取每個點上所獲得維度的隨機子樣本之間的信息,將葉子節點的數據劃分到正確的類別中。使用決策樹算法,可以通過數據集標簽檢測到那些利用可視標簽進行攻擊的XSS攻擊,并且該算法強大的可解釋性對XSS攻擊檢測技術的發展有著重要意義。
傳統的機器學習方法無法檢測到XSS攻擊的微小突變體,而深度神經網絡在數據發生微小變化的情況下也能學習到XSS攻擊的真實面貌。為此,Mokbal等人[26]提出了一種基于人工神經網絡(ANN)的多層感知器(MLP)深度學習模型MLPXSS。該模型在特征提取上,使用BeautifulSoup庫與HTML5Lib庫,將XSS攻擊的HTML、JavaScript和URL特征轉換成數字特征后傳入MLPXSS中,使用網格搜索法中的10倍交叉驗證的方法對模型的超參數進行優化,從淺層的MLP模型到深層的MLP模型設置不同的隱藏層神經元數量、數據批量大小以及優化器,以求最優的模型。使用不同的數據集與不同的機器學習算法進行比較后,證明MLP模型的泛化性能有一定提高。
Mereani等人[27]致力于可解釋人工智能(XAI)[28]的研究,提出了一種從KNN分類器中提取規則的技術。由于每一個KNN分類器輸入和輸出的特征值都是布爾類型,所以該技術將訓練好的KNN分類器定義成一個布爾函數,提取的規則是布爾函數,每個布爾變量對應XSS攻擊數據集中的一個特征,這些規則是清晰可解釋的。該方法利用布爾函數的可解釋性解釋KNN檢測模型,并且與傳統KNN檢測模型相比檢測時間縮短且性能相差不大。
為了改善機器學習檢測模型難以從用戶正常輸入的數據中獲取特征的問題,顧兆軍等人[29]基于一類樣本提出了一種新的單分類支持向量機檢測方法OCSVM。首先,該方法使用n-gram對XSS攻擊載荷進行分詞,然后使用TF-IDF算法對分詞集合里的詞進行向量化,最后選擇適當的SVM核函數和優化參數來構建檢測模型,通過對模型進行參數優化達到最優的檢測模型。該方法結合n-gram和TF-IDF算法對特征進行向量化,提升了相較于傳統文本使用TF-IDF分詞方法的分詞效率,并且該方法無須對樣本進行標記便能很好地解決單類樣本分類問題。
為了改善在XSS攻擊檢測中假陽性率和假陰性率高的問題,Mokbal等人[30]將自然語言處理中的平均詞嵌入技術用于SVM檢測模型中,提出了一種基于平均詞嵌入的檢測方法NLP-SVM。該方法使用詞嵌入技術,將XSS攻擊有效載荷中的每個詞轉換成數字形式,以便得到每個詞的向量;之后,對每個XSS攻擊有效載荷中每個詞的向量進行平均后輸入到SVM模型中。相比于傳統SVM使用10倍交叉驗證獲取最優參數的方法,NLP-SVM模型對XSS攻擊具有更強的檢測能力。
2.1.2 基于特征融合的深度學習方法
單一機器學習經由研究者對特征進行分析選擇,將信息量大的特征輸入到計算機由人工進行數據預處理,需要較高的先驗知識量,檢測效果在很大程度上依賴于預定義特征的準確性,具有很強的主觀性。深度學習神經網絡能更加智能地學習與XSS攻擊相關的抽象特征,在一定程度上選擇了與XSS攻擊相關性高的特征。為了挖掘XSS攻擊的相關特征,研究者將長短期記憶網絡(LSTM)、卷積神經網絡(CNN)、門控循環單元(GRU)、圖卷積網絡(GCN)以及殘差網絡(ResNet)各自組合在一起形成深度學習融合模型,在特征提取上進行更加深入的研究。深度學習融合模型能夠融合各自提取的特征,更加有效地學習XSS攻擊特征的時空依賴性[31]。
為了解決XSS攻擊檢測中小樣本問題,Liu等人[32]受到使用半監督的圖卷積網絡可以有效提取圖數據的特征[33]以及容易從模糊的相鄰詞中找到特征信息的啟發,將圖卷積網絡和殘差網絡結合起來,提出了一種基于圖卷積網絡的XSS攻擊檢測方法GraphXSS。該方法通過改進傳統的圖卷積網絡,在原本兩三層的圖卷積網絡增加一個殘差網絡隱藏層,將殘差網絡隱藏層的前一層輸出的特征矩陣和之后層輸出的特征矩陣相加作為新的特征矩陣傳遞到第三層進行計算,形成了更優的特征提取策略。該算法利用圖卷積網絡對小樣本下的XSS攻擊載荷進行快速識別。Kadhim等人[34]將CNN與LSTM相結合來檢測XSS攻擊。該方法將三個CNN進行串聯,用以提高CNN在CNN-LSTM網絡體系中特征提取精度;然后將提取到的特征信息輸入到LSTM網絡中,學習XSS攻擊特征相關的上下文信息。其優點是將兩者提取到的特征相結合形成更高階的特征,進而提高對XSS攻擊的檢測能力。
由于LSTM在訓練時參數量過于龐大,訓練所需時間和內存消耗都十分巨大。Yang等人[35]提出了一種基于CNN的CGRU神經網絡模型,該模型針對由惡意URL造成的Web攻擊進行檢測。首先,CGRU模型使用CNN提取URL中特有的惡意關鍵字特征,并用GRU將CNN中的池化層進行替換,GRU保證了上層卷積神經網絡處理過的高階特征中的上下文關系不丟失,也進一步從高階特征中提取具有代表性的基于時間序列的特征。與CNN-LSTM[33]將兩類網絡進行串聯不同,CGRU模型通過在CNN中嵌入GRU模塊替代原本的池化層以進一步加強XSS攻擊數據高階特征。
傳統的CNN使用全連通層來把握XSS攻擊數據的URL全局特征,且參數較多會導致模型的復雜度上升,訓練時間也會相應增加。為此,Yan等人[36]對卷積神經網絡進行改進,將殘差網絡與卷積神經網絡相結合,提出了MRBN-CNN模型來檢測XSS攻擊。該方法將ResNet中的殘差塊MRB組合到NIN型卷積神經網絡中,該模型由五個使用不同卷積核的MRB并聯和代替全連接層的兩個1×1卷積層串聯組成,MRB用來分析XSS攻擊URL特征中單詞的語義及位置關系,更加全面地提取了XSS攻擊的全局特征,而1×1卷積層在一定程度上減少了參數。該模型的復雜度較低,對特征的提取更加全面,提升了檢測XSS攻擊的準確性和效率。為了解決單一深度學習方法提取XSS攻擊數據時空特征不全面的問題,林雍博等人[37]提出一種基于CNN和GRU的深度學習融合模型ResNet_GRU,其建立了一個字符級字典對XSS攻擊有效載荷進行編碼,極大地保留了樣本的初始特征信息;然后利用CNN和GRU分別提取XSS攻擊序列的時間和空間特征,同時引入殘差框架加快網絡收斂和緩解梯度彌散問題。該模型有效挖掘了XSS攻擊數據的時空特征,提升了XSS攻擊的檢測準確率。
由于XSS攻擊數據可以看做是序列數據,XSS攻擊序列前后具有很強的關聯性。而普通單向神經網絡只能提取從前往后的XSS攻擊數據特征信息,這意味著它只能處理XSS攻擊的單向依賴,從而忽略了XSS攻擊序列的前后語義信息。為了解決這個問題,研究者使用雙向神經網絡,從前后兩個方向提取XSS攻擊的語義特征,進一步挖掘了XSS攻擊相關特征。
在電子郵件場景下的XSS攻擊極難被檢測且影響巨大,Fang等人[38]基于注意力機制和雙向循環神經網絡(RNN)提出了一種用來檢測電子郵件中XSS攻擊的深度學習方法。傳統的神經網絡之間神經元不能相互傳遞信息,而RNN上一個神經元可以向下一個神經元傳遞,Bi-RNN在此基礎上加入了一個可以反向傳播的機制。該算法由兩個RNN組成,不僅從前往后保留了XSS攻擊預測詞的上文信息,而且從后往前提取了預測詞的下文信息,并通過全局注意力機制幫助模型更好地優化權重參數,使其達到最優的模型。該方法使用雙向RNN更好地提取了XSS攻擊特征之間的關聯特征,使提取到的特征更優,而注意力機制則是使模型更優。
傳統的檢測方法依賴于專家知識確定Script代碼是否惡意,容易出錯且十分耗時。為此,Song等人[39]提出了基于雙向長短期記憶網絡Bi-LSTM的XSS攻擊檢測模型。該模型通過構造程序依賴圖(PDG)獲取XSS攻擊等惡意JavaScript攻擊代碼的語義信息,并通過一系列JavaScript去模糊工具對數據進行去模糊處理;然后使用正向和反向兩個LSTM提取XSS攻擊的上下文信息,充分保留了XSS攻擊的前后信息,以更優的特征來提高Bi-LSTM模型的檢測準確率。JavaScript去模糊處理會篩選那些由攻擊者制造的偽裝成正常JavaScript代碼的惡意攻擊代碼,降低了模型的漏檢率。
Bi-LSTM在檢測XSS攻擊時存在長期語義依賴問題,即一個標記的XSS攻擊信息的上下文表示在很大程度上受到句子中靠近它的標記的影響。Hu等人[40]將自注意力機制應用于Bi-LSTM中,提出了一種多通道特征融合的XSS攻擊檢測模型C-BLA。該模型融合兩個通道提取的特征,最后再進行分類。通道1使用不同卷積核大小的CNN對XSS攻擊的局部特征進行提取,通道2使用Bi-LSTM從前向和后向兩個方向對XSS攻擊上下文信息進行充分提取,并結合自注意力機制對Bi-LSTM在XSS攻擊檢測中存在的語義長期依賴問題加以改善。
2.1.3 基于集成體系的集成學習方法
單一機器學習方法自身都有著不可避免的缺陷,并且在檢測XSS攻擊的過程中這些方法無法適應不斷進化且復雜多變XSS攻擊,檢測精度也不穩定[41]。研究者通過實驗證明,一階段的分類器并不能很好地區分純文本[42]或者不能搜集更多的證據。而Web應用程序的輸入可以是文本或腳本,且不同Web階段也可以再產生不同的特征。單一機器學習方法和深度學習方法都不能很好地處理這些情況,為此,研究者對集成學習技術進行深入研究。
隨著社交網絡服務(SNS)的興起,XSS攻擊對其威脅也與日俱增,由此出現了一種在社交網站網頁上的新型XSS攻擊——XSS蠕蟲。Rathore等人[43]針對基于SNS網頁的XSS蠕蟲進行深入研究,使用了一種集成學習方法XSS-Classifier對XSS蠕蟲檢測,該方法對XSS攻擊的URL、HTML以及XSS蠕蟲獨有的SNS特征進行提取,并利用10個分類器對XSS攻擊數據進行模型的訓練,在有XSS蠕蟲攻擊特征的加入下,集成學習方法random forest和ADTree獲得了比其他單一機器學習分類器更好的性能。
為了挖掘XSS攻擊相關特征,研究者通過組合多個分類器來構建比單一機器學習更穩定的XSS攻擊檢測體系,利用集成體系對XSS攻擊進行多次特征提取,通過組合不同分類器提取的XSS攻擊特征既可以整體把握XSS攻擊特征,也可以處理XSS攻擊數據集不平衡的問題。
Mereani等人[42]以結合各個分類器的優點提升對XSS攻擊的檢測精度為目的,構造了一個用于檢測XSS攻擊的集成系統,該系統使用級聯的思想,將系統第一與二階段進行聯動,第一階段的輸出作為第二階段的輸入。決策樹作為系統的第一階段,通過該階段來區分輸入系統的XSS攻擊數據是文本還是腳本;在第二階段使用多種分類器組成堆疊體系對來自第一階段的基于腳本特征的XSS攻擊數據進行特征提取,并選擇經過實驗比較后性能最好的多項式核支持向量機(SVM-P)作為元分類器對來自堆疊體系的XSS攻擊特征進行訓練。該系統通過堆疊體系來提升對XSS攻擊的特征提取,這種組合分類器思想提升了對XSS攻擊特征的整體把握。
現有的XSS攻擊檢測方法一般對Web請求和響應兩個階段其中一個進行提取特征,如果這一階段提供的特征不夠充分,就可能識別不出XSS攻擊。為此,Zhang等人[44]提出了一種集成學習方法來檢測XSS攻擊,該方法將兩個高斯混合模型(GMM)進行集成,分別用于訓練請求、響應中的XSS攻擊有效載荷和正常的有效載荷。然后,兩個GMM模型同時在包含XSS攻擊數據和正常數據的同一數據集上進行訓練,形成對照。如果結果相同則表示該兩個GMM模型有一個識別錯誤,此操作可有效減少對XSS攻擊的漏檢,該模型基于兩個階段對XSS攻擊進行檢測,通過挖掘響應中的信息來解決Web請求數據特征信息不全面的局限。
與以上研究者對特征處理的方法不同,其他研究者結合真實世界信息如威脅情報來對XSS攻擊的特征進行補充,以此來檢測隱藏的XSS攻擊;或者在特征提取上使用融合特征選擇方法來選擇最優的XSS攻擊特征。
現有XSS攻擊檢測模型缺乏對結果的解釋,而貝葉斯網絡模型對結果有良好的可解釋性,但傳統的貝葉斯網絡需要大量高質量的數據來對貝葉斯網絡進行結構學習,而在XSS攻擊場景下很難滿足此條件。為此,Zhou等人[45]提出了基于貝葉斯網絡組合領域知識和威脅情報(ENSEM-BLE)進行推理的集成學習方法。該方法使用重采樣的技術學習多個貝葉斯網絡基分類器,在推理中融合基于威脅情報的補償規則進行決策,降低了誤報率;最后根據貝葉斯網絡中節點對輸出節點的影響進行重要性排序,依據該順序面向用戶對預測結果作出解釋。
在現有的XSS攻擊檢測中,針對假陽性率研究較多而對假陰性率研究甚少。為降低對XSS攻擊的漏檢,提高對XSS攻擊的檢測率,Mokbal等人[46]基于極端梯度Boosting提出了一種用于檢測XSS攻擊的集成學習方法XGBXSS。該方法采用Boosting學習的思想,選擇決策樹作為基本分類器,各個分類樹排列有序,每棵樹都向之前的樹學習以縮小前一棵決策樹在檢測XSS攻擊可能犯下的錯誤,從而降低對XSS攻擊的漏檢。在特征提取上使用基于信息增益(IG)和翹曲方法(SBS)的混合特征選擇來對大型XSS攻擊數據集進行特征維數約減,從而選擇最優特征子集,此操作解決了數據集存在數據維度過大導致模型復雜度上升、訓練時間過長的問題。根據以上研究對基于非對抗性XSS攻擊檢測方法總結如表4所示。
2.2 基于對抗性XSS攻擊
攻擊者通過向原始XSS攻擊數據加入察覺不到的數據以欺騙機器學習分類器,這些XSS攻擊對抗樣本人眼無法分辨[47],以上基于機器學習檢測XSS攻擊的方法容易受到XSS對抗攻擊的影響,不能夠對XSS攻擊作出正確的決策。為了避免XSS對抗攻擊對XSS攻擊檢測模型的影響,研究者針對對抗性XSS攻擊作了深入研究。一般采用強化學習的方法,利用其試錯策略識別或生成XSS對抗攻擊。
研究者通過強化學習有效挖掘對抗樣本,并將對抗樣本標記為惡意樣本對XSS攻擊檢測模型進行優化,進而壓縮檢測模型的對抗樣本空間,提高對XSS攻擊的檢測精度。Fang等人[48]提出了一種基于強化學習檢測XSS對抗攻擊的方法RLXSS,該方法包括對抗攻擊模型和再訓練模型。首先,對抗攻擊模型中的黑白盒檢測模型通過調用網頁檢測API,對XSS對抗攻擊進行識別,逃過黑白盒檢測模型的樣本將傳輸給基于DDQN的學習代理,并根據環境狀態選擇最優的逃逸行為;其次,修改后的樣本將其重新輸入黑白盒模型進行檢測,根據是否逃逸成功來給予獎勵,否則繼續尋找最優逃逸策略,逃逸成功的保存為XSS對抗攻擊樣本;最后,通過將對抗樣本標記為惡意樣本,重新訓練檢測模型。交替訓練檢測模型和對抗攻擊模型,在檢測模型保持良好檢測能力的同時不斷提高對對抗攻擊的防御能力,此方法可以挖掘到逃脫黑白盒模型檢測的XSS對抗攻擊,并用其來優化XSS攻擊檢測模型。
Zhang等人[49]基于蒙特卡羅樹搜索算法(MCTS)提出了一種可以生成XSS攻擊對抗樣本的方法MCTS-T,該方法提出改進蒙特卡羅樹搜索算法中的UCB算法選擇XSS攻擊的最佳動作序列來生成XSS攻擊對抗樣本,并使用GAN對機器學習檢測模型LSTM和XGBoost進行優化。在GAN中通過MCTS-T提供的最佳動作序列生成XSS對抗樣本,將它們標記為XSS攻擊,分別對LSTM和XGBoost模型進行訓練;重復生成和訓練的過程,直到XSS攻擊檢測模型能檢測到XSS對抗攻擊為止。使用該方法的XSS攻擊檢測模型能夠獲得適應XSS對抗攻擊的最優模型結構,并成功抵御XSS對抗攻擊。
與以上研究不同,下列研究著重關注生成XSS攻擊對抗樣本。通過改進相應的繞過策略來提升XSS攻擊的逃逸率,以提高對抗攻擊模型對抗樣本的生成質量。
為了提高惡意樣本的置信度以及用更多策略生成XSS對抗攻擊樣本,Wang等人[50]利用軟Q學習算法構建XSS對抗攻擊模型,該模型針對XSS攻擊的JavaScript和HTML特征分別制定了相應的轉義策略。首先,XSS攻擊載荷依次放入基于HTML和JavaScript特征的對抗攻擊模型中,由XSS攻擊檢測環境識別XSS攻擊樣本的HTML或JavaScript部分;然后將獎勵和狀態輸出到軟Q學習HTML轉義代理或JavaScript代理,軟Q學習轉義代理根據狀態選擇轉義動作,并根據XSS攻擊檢測環境輸出的獎賞反饋進行學習。
為了解決現有生成XSS攻擊對抗樣本轉義率低的問題,Chen等人[51]提出基于soft actor-critic(SAC)的強化學習框架來生成XSS對抗攻擊樣本。該框架由對抗攻擊模型和檢測模型構成,對抗攻擊模型使用基于SAC的強化學習代理,檢測模型使用CNN、MLP和LSTM網絡。首先,對XSS攻擊向量設計了不同的變異機制以此來提高逃逸率,將XSS攻擊樣本輸入檢測模型中進行判斷,如果是XSS攻擊則交給對抗攻擊模型;然后由智能體根據檢測模型的反饋選擇合適的逃逸策略,直到繞過檢測模型。該框架使用SAC避免了軟Q學習算法的復雜性,大大提升了生成XSS對抗攻擊的效率,并且逃逸率也是目前為止最高的。
根據以上研究,對上述基于對抗性XSS攻擊的檢測方法總結如表5所示。
2.3 小結
對于非對抗性XSS攻擊,單一機器學習方法使用一種學習方法從數據中構建決策模型來完成XSS攻擊的檢測,這種方法適用于注入惡意JavaScript代碼的XSS攻擊;深度學習憑借自動學習數據特征的能力,通過深度學習模型之間的不同組合,形成擁有更好的特征提取機制的深度學習融合模型來挖掘XSS攻擊的相關特征,改善了單一機器學習方法由于特征提取性能低導致決策模型檢測精度不高的問題;而集成學習方法通過組合多個分類器來構建更穩定的XSS攻擊檢測體系,解決了基于單一機器學習方法和深度學習方法的一階段分類器不能很好區分純文本或者不能搜集更多證據的問題。
對于對抗性XSS攻擊一般采用強化學習的方法,利用其試錯策略來識別或生成XSS對抗攻擊樣本,基于這些樣本對XSS攻擊檢測模型進行再訓練,壓縮了檢測模型的對抗樣本空間,提高了對XSS攻擊的檢測精度。
根據XSS攻擊是否具有隱蔽性,表6對上述基于機器學習的XSS攻擊檢測方法進行了總結。
3 XSS攻擊防御技術
XSS攻擊檢測技術旨在XSS攻擊發生時通過機器學習方法檢測出XSS攻擊,而XSS攻擊防御技術作為解決XSS攻擊的方法,是指使用一定的規則或策略阻止XSS攻擊腳本的注入和傳播,保護系統免受實時的XSS攻擊。現有的XSS攻擊防御技術主要針對非對抗性XSS攻擊進行防御,關于XSS攻擊防御技術大致可分為規則過濾、移動目標防御(MTD)和隔離沙箱三類。
3.1 基于規則過濾
規則過濾是防止包括XSS攻擊在內的網絡攻擊的一種常見的方法,該方法簡單且容易實現。通過建立XSS攻擊規則庫,與規則庫進行匹配分析來防止XSS攻擊。在現有的XSS攻擊防御中,基于規則過濾的方法大致有黑名單或白名單的過濾、正則表達式的過濾、內容安全策略的過濾和上傳過濾。
3.1.1 基于黑名單或白名單過濾
基于黑名單或白名單的過濾是通過設置黑名單列表,在黑名單列表里面的腳本將被阻止執行;或設置白名單列表,不在列表里的腳本將被阻止執行。
動態代碼生成技術會使XSS攻擊語法發生微小變化,從而引起對XSS攻擊的誤判。Mitropoulos等人[52]提出了一種基于上下文指紋的腳本白名單XSS攻擊客戶端防御方法,該方法在瀏覽器的JavaScript引擎中部署了一層腳本攔截層,將每一個到達瀏覽器的腳本與被訪問的Web網站或頁面的有效腳本白名單列表進行對比,不在白名單列表中的腳本將被阻止執行。當需要在服務器端添加或修改腳本元素時,有一個新的指紋生成階段,與指紋不匹配的腳本將被阻止執行。該方法使用指紋可以很容易地為腳本添加新的元素,具有很強的魯棒性,并且開發人員無須修改Web應用程序的代碼來支持該方法的執行。
Gupta等人[53]提出了一種基于黑名單的可以自動發現XSS攻擊向量的服務器端XSS攻擊防御框架XSS-explorer。XSS-explorer構建了與Web應用程序每個腳本注入點相關的XSS攻擊向量庫,并使用混合分析查找XSS攻擊,先靜態分析文件的所有注入點,再使用動態分析注入惡意向量并觀察導致的行為。服務器會分析包含有效負載的HTTP請求,并與XSS攻擊向量庫進行匹配,匹配成功的請求將被阻止。該框架加快了XSS攻擊向量的發現頻率,并且向量庫會隨著XSS攻擊向量的發現而不斷更新。Chaudhary等人[54]提出了一種基于黑名單防御社交網絡平臺上XSS攻擊的方法XSSPro,該方法將JavaScript代碼隔離在單獨的文件中進行操作,然后通過Levenshtein距離相似度算法對JavaScript腳本代碼進行解碼,最后將提取的腳本與XSS攻擊向量庫進行匹配。如果匹配成功就使用XSS過濾API對腳本進行消毒,安全的腳本將被保留并傳遞給用戶。此方法能夠有效抵御使用內置代碼語言新特性所導致的XSS攻擊,且誤報率較低。
為了解決開發人員不具備必要的專業知識和充足的資源從XSS攻擊的源頭對XSS攻擊進行防御的問題,Pazos等人[55]提出了一種基于黑名單的Firefox客戶端防御擴展XSnare,該擴展構建了一個簽名庫,當瀏覽器擴展接收到HTTP響應后,XSnare會分析潛在的惡意文檔,然后擴展從客戶端本地數據庫加載簽名到其檢測器;檢測器分析來自Web網頁的HTML字符串,并匹配適用于文檔的簽名。這些簽名在文檔中指定一個或多個“注入點”,這些“注入點”對應于DOM中可能注入有害內容的區域;然后該擴展對其中的惡意內容進行消毒,并將干凈的HTML文檔呈現在瀏覽器上,該擴展使用的簽名庫減少了從發生零日攻擊到開發人員將補丁應用到瀏覽器上的時間。
3.1.2 基于正則表達式過濾
由于在防御XSS攻擊的實際應用場景中不可能列出所有良性腳本和XSS攻擊腳本,基于黑名單或白名單的過濾方法不是一個很好的XSS攻擊解決方案,在防御XSS攻擊的過程中難以被有效使用。基于正則表達式的過濾是使用正則表達式來描述XSS攻擊,而不是設置黑名單或白名單來阻止或識別列表里的XSS攻擊,基于此方法的過濾器一般部署在服務器端或客戶端。
為了防止CS-XSS,Gebre等人[56]基于內容嗅探算法的多樣性設計了一個服務器端的過濾器。該過濾器將能夠進行XSS攻擊的HTML元素和屬性進行精準識別,并用正則表達式的方式表現出它們的序列,憑借正則表達式提出了自動匹配輸入文本中正則表達式的策略。過濾器根據其策略來檢查用戶上傳的文件,以阻止帶有CS-XSS的文件上傳至服務器中,以此來保護可能將非HTML文件視為HTML文件的瀏覽器。
在XSS攻擊防御方法的研究中,缺乏對移動Web應用程序的研究。為了減少移動設備Web應用程序中易被忽視的XSS攻擊,Javed等人[57]提出了一種部署在移動客戶端的基于正則表達式的過濾器,通過對文獻[58]的正則表達式進行三處改進提出一種新的正則表達式過濾策略:使用腳本標記處理XSS向量、使用onerror、onload等事件處理程序對XSS向量進行處理和使用JavaScript URL匹配XSS向量。其正則表達式策略既可以部署在服務器端的防火墻中,又可以作為客戶端的JavaScript函數。應用新的正則表達式過濾策略的過濾器計算速度更快、易于維護,并且可以處理代碼混淆技術生成的XSS攻擊,大大加強了移動設備防御XSS攻擊的能力。
3.1.3 基于內容安全策略過濾
內容安全策略(CSP)[59]是一個新增的安全層,其具有許多策略指令,可以幫助檢查和減輕XSS攻擊及其他數據注入攻擊。CSP允許服務器管理員按照既定的規則執行腳本,從而減少甚至消除攻擊向量。帶有CSP的瀏覽器將只執行從白名單域中接收到的文件的腳本,不執行其他腳本。
瀏覽器的算法和內容具有多樣性,使得Web站點過濾異常困難。為此,Jim等人[60]提出了一種瀏覽器強制策略BEEP來防止腳本注入,其本質是一種基于白名單的過濾,網站在Web頁面嵌入策略,該策略只執行白名單列表中的腳本;該策略容易執行,不會產生誤報,瀏覽器支持Beep只需要進行很小的本地化修改。
由于不安全的服務器端JavaScript的生成和攻擊者對腳本源的控制可能會導致XSS攻擊,這種情況CSP無法很好解決,為此,Johns等人[61]提出了一種對CSP擴展的方案PreparedJS。該方案提出了腳本模板和腳本校驗和,通過腳本模板,數據的占位符用特定的語法標記;腳本校驗和是在腳本模板上計算的一個加密哈希,對于瀏覽器接收到的每個腳本,瀏覽器計算相應腳本模板的校驗和,如果校驗和包含在策略允許的腳本校驗和集合中便允許執行。該方案能夠有效緩解XSS攻擊,且開銷較低。
為了防止DXSS,Iqbal等人[62]提出了一種基于瀏覽器和策略混合的保護機制PoliDOM,它可以防止對瀏覽器生成的DOM對象進行非法更改。PoliDOM由DOM安全策略(DSP)和DOM監控模塊(DMM)組成。DSP允許應用開發人員在HTML上指定安全策略來提供服務器端控制,通過HTTP頭傳遞到Web瀏覽器,由安裝在瀏覽器中的DOM監控模塊強制執行。DMM分析每個傳入的DOM修改請求,并根據開發人員設定的安全策略允許或阻止請求。由DMM監控DOM的變化解決了傳統依賴JavaScript代碼監控代碼易被混淆的問題。
在當前XSS攻擊防御的研究中,CSP因其魯棒性和強大被研究者廣泛關注。以上的研究,CSP依賴于安全人員的手動生成,因而存在人為主觀因素導致的潛在錯誤。為了解決這個問題,研究者將目光關注到自動生成CSP的技術中。
簡單地為Web應用程序啟用CSP會影響Web應用程序的行為,并可能破壞其功能。為了解決這個問題,Fazzini等人[63]提出了一種自動為Web應用程序添加CSP的自動化技術AutoCSP,通過動態污染分析來確定被允許加載到Web應用程序的動態生成的HTML頁面上的內容,并推斷出一個策略,該策略會阻止潛在的不可信元素而允許可信元素。最后,它會自動修改Web應用程序的服務器端代碼,以便使用適當的CSP生成Web頁面。此方案能夠自動生成CSP,且具有較低的開銷。
為了解決現有XSS攻擊防御中在服務器端采用CSP較少的問題,Pan等人[64]提出了一種可以同時部署在客戶端和服務器端的自動化方案CSPAutoGen。CSPAutoGen為每個域訓練模板,并根據模板自動生成CSP;然后動態地重寫傳入的網頁以應用那些生成的CSP,將重寫的網頁提供給客戶端瀏覽器;最后,在客戶端運行階段,由瀏覽器強制執行CSP,以確保不執行惡意腳本。CSPAutoGen設計了一個模板機制用以區分正常和異常的腳本,并且可以處理所有的內聯和動態腳本,具有較低的誤報。
為了解決CSP低可擴展性的問題,Xu等人[65]提出了一種基于JavaScript和CSP的自動化JSCSP。JSCSP通過分析用戶實時訪問的頁面自動生成相應的安全策略,然后實施該策略。實施時會暫時阻止接收到頁面的DOM,生成更安全的DOM,并檢查策略規則防止Web網頁在客戶端執行注入的惡意代碼,然后啟用原始DOM。JSCSP能夠自動生成策略,并且可以防御MXSS和UXSS等新型XSS攻擊。
3.1.4 基于上傳過濾
當下隨著社交網絡的興起,具有上傳功能的Web應用程序也日益增多。上傳過濾是一種針對Web應用程序上傳功能來防御CS-XSS攻擊的方法,被部署在服務器端,當有文件上傳到服務器中,它會掃描文件判斷是否具有惡意腳本,檢查到惡意腳本就清除,或者直接拒絕文件的上傳。
XSS攻擊防御通常關注HTML文檔而忽略了攻擊者可能利用瀏覽器中的內容嗅探算法來發動CS-XSS。為此,Barth等人[66]提出了一種基于內容嗅探算法的上傳過濾器。通過將Internet Explorer 7、Firefox 3、Safari 3.1和谷歌Chrome四種瀏覽器使用的內容嗅探算法進行比較發現,HTML簽名對構造CS-XSS至關重要,進而實現了一個由HTML簽名組成的上傳過濾器。上傳文件時,將文件內容與簽名進行匹配,然后服務器會阻止匹配成功的文件進行上傳。
Barth等人實現的過濾器只分析文件的初始字節,然而攻擊的有效負載可能存在于文件中的任何位置。為此,Barua等人[67]提出了一種基于HTML和JavaScript解析器的服務器端內容嗅探攻擊檢測機制。其中的MIME解析器對文件中的MIME類型進行檢測,上傳策略檢查器對檢測結果進行決策,如果無法檢測到MIME類型或者不在白名單的列表中,則拒絕文件的上傳。為了避免誤報,對上傳策略檢查器決策出的正常文件使用HTML和JavaScript解析器對文件內容進行分析。HTML解析器分析文件內容并進行標記,出現標記表明該文件可能包含惡意內容。然后,JavaScript解析器檢查標記中是否存在惡意的JavaScript代碼,若存在則阻止文件的上傳。
3.2 基于移動目標防御
移動目標防御(MTD)是一種新興的保護傳統信息技術系統的防御策略[68],與過濾方法阻止XSS攻擊進行攻擊不同,MTD更多地關注通過其隨機性降低受到XSS攻擊的風險。通過不斷改變Web應用程序的配置參數來減少攻擊者獲得的知識,利用多樣性策略來防止攻擊者設計新的XSS攻擊向量。
為了解決可疑數據在Web應用程序運行時改變可信代碼結構的問題,Nadji等人[69]提出了一種可以在瀏覽器中實現的客戶端-服務器端的方案,在服務器端,通過Web服務器使用隨機化的標記方法將不信任的數據與受信任的Web應用程序代碼分開;在瀏覽器端,對文檔的結構進行重構,然后瀏覽器將Web網頁解析為它的初始解析樹,并強制解析樹以識別文檔結構中的不可信數據。一旦識別出可疑數據,就初始化隔離數據并進行動態跟蹤,該方案通過對可疑數據進行隔離來防御XSS攻擊,具有較低的誤報率。
為了解決使用白名單策略無法防止針對白名單的攻擊問題,Athanasopoulos等人[70]提出了基于指令集隨機化的XSS攻擊防御框架xJS。其主要思想是在運行時將JavaScript代碼進行轉換,然后在瀏覽器上再轉回原本的代碼。他們使用異或操作來轉換靜態HTML文檔中的JavaScript代碼,在請求HTML文檔時,Web頁面上的每個代碼都帶有一個解密密鑰;然后通過HTTP響應頭傳回客戶端。在客戶端瀏覽器上,加密的代碼將再次與傳輸的密鑰進行異或運算,以還原成初始代碼。xJS通過將客戶端代碼與攻擊者注入的可疑代碼進行分隔來達到防御XSS攻擊的目的,具有較小的計算開銷。
現有的防御策略使用同源策略對多個Web應用程序進行隔離,但從可信服務器接收到的惡意內容會被當成可信內容,并允許惡意代碼訪問。為此,Van Gundy等人[71]提出了一種基于MTD隨機化的解決方案Noncspaces,其核心思想是,通過服務器準確識別和標記不受信任的內容,客戶端實施相應策略來防止XSS攻擊。首先,服務器使用一個函數隨機生成字符串作為HTML標記的前綴,以響應每個HTTP請求,使得每個注入的內容將很容易被瀏覽器識別;其經由服務器傳輸,并通過瀏覽器的安全策略對惡意內容進行阻止。該方案實現簡單,不易產生假陽性。
針對現有XSS攻擊防御方法中需要修改瀏覽器代碼或兼容性不足的問題,Niakanlahiji等人[72]提出了一種主動的移動目標防御機制WebMTD。該機制使用runtimeId屬性標記Web應用程序中所有的HTML元素,并向Web應用程序添加兩個用JavaScript編寫的安全檢查。瀏覽器通過調用這些檢查來驗證添加的標記,沒有runtimeId屬性或具有不同runtimeId值的新添加元素被認為是惡意的,并被自動刪除。該機制依靠現代瀏覽器的內置特性,隨機分配runtimeId屬性的值以區分應用程序代碼和注入代碼。該方案無須Web開發人員參與或修改瀏覽器代碼即可完成,且不會產生誤報。
3.3 基于隔離沙箱
沙箱是一種防御XSS攻擊的隔離技術,通過建立一個虛擬的空間將運行中的Web應用程序進行隔離,以防止XSS攻擊的相互傳播。
為了防范WXSS,Cao等人[73]提出了一種基于沙箱技術的方法PathCutter,通過阻止WXSS經由DOM訪問不同的視圖和對服務器的未經授權的HTTP請求這兩種傳播途徑來防御WXSS。首先,將每個Web應用程序的內容按照特定的規則將其劃分成不同且獨立的視圖;然后,將視圖封裝在一個偽域中,通過兩個域名實現隔離。由于同源策略的原因,攻擊者在獲得了一個視圖的控制后就不能訪問另一個視圖。
根據以上研究,對XSS攻擊防御方法總結如表7所示。
4 結束語
由于攻擊策略的快速發展,傳統的檢測和防御方法不再有效。本文對近年來XSS攻擊檢測和防御技術進行了全面的調研和回顧,針對XSS攻擊檢測技術各類機器學習代表性方法和XSS攻擊防御技術各類防范XSS攻擊方法的使用動機、優勢、局限性進行了深入的探討。
在XSS攻擊檢測和防御技術的研究中,本文分別從樣本特征、模型特點和CSP的局限性、上傳功能的廣泛性等方面提出了XSS攻擊檢測和防御未來需要考慮的問題,為XSS攻擊檢測和防御進一步研究提供參考。
4.1 XSS攻擊檢測未來研究方向
4.1.1 基于XSS攻擊檢測模型
a)有限且不平衡的數據集。在現有公開的XSS攻擊數據源中,數據集十分有限且數據存在嚴重的類別不平衡現象。不平衡的數據會導致模型過分擬合于樣本量大的數據,從而大大降低了XSS攻擊檢測的準確率。為此,可以使用數據增強的方法來對數據進行相應的擴充,從而降低數據類別的不平衡性,也可以嘗試使用對過多類別的數據進行欠采樣、對過少類別進行過采樣的方法以及使用機器學習中的遷移學習等用于XSS攻擊數據集來改善模型的檢測性能也是未來的研究熱點。
b)模型的可解釋性。機器學習算法的目的是為了提升模型的泛化性能,模型的可解釋性有助于更深入地了解模型,在面對新的數據和樣本時有更好的泛化性能。在XSS攻擊檢測技術的研究中,對模型的可解釋性進行研究的文獻很少。為此,應在模型的可解釋性方面進行深入研究,可以采用特征降維的方法來增強對數據的可解釋性,也可以嘗試將因果推理、對比學習等加入XSS攻擊檢測模型中來增強模型的可解釋性也是未來的研究熱點。
c)對抗魯棒性。研究者通過有效地挖掘對抗樣本并將對抗樣本標記為惡意樣本,對XSS攻擊檢測模型進行再訓練。但經過對抗訓練的網絡輸出往往是相對置信度的,這種網絡對于正常樣本的性能往往是更差的。所以,在未來的XSS攻擊檢測研究中,如何平衡模型的對抗魯棒性和模型的泛化性能是重要的研究關注點。可以嘗試將數據增強、集成學習等加入XSS對抗攻擊檢測中也是未來的研究熱點。
4.1.2 基于XSS攻擊類型
a)對抗性XSS攻擊。機器學習檢測XSS攻擊的方法容易受到XSS對抗攻擊的影響,從而造成對XSS攻擊的漏檢。黑客尋找XSS攻擊對抗樣本的目的是為了攻擊XSS攻擊檢測模型,而白客則旨在發現和修補檢測模型的缺陷。因此,探索XSS對抗攻擊無論是對攻擊者還是防御者都意義重大。而研究者針對XSS對抗攻擊的研究較少,未來可對XSS對抗攻擊進行深入研究。
b)新型XSS攻擊。近年來,隨著Web技術的不斷革新,出現JavaScript型XSS攻擊、XSS蠕蟲等新型XSS攻擊。其中對人們危害較大的是XSS蠕蟲,通過其自我復制的能力在用戶之間相互傳播。而在現有的XSS攻擊檢測中,研究者對三種基本類型的XSS攻擊異常“偏愛”,所以未來可針對新型XSS攻擊進行深入研究。
4.2 XSS攻擊防御未來研究方向
a)更加理想的CSP。在當前XSS攻擊防御的研究中,CSP因其魯棒性和強大被研究者廣泛關注。但在大多數防御的研究中,CSP依賴于安全人員的手動生成,因而存在人為主觀因素導致的潛在錯誤;另外CSP的有效性受到挑戰,它們容易受到CR-XSS的攻擊。因此,為了達到更好的XSS攻擊防御效果,可利用在線學習實時調整CSP以應對環境的變化,也可引入MTD技術的隨機性對CSP進行更多改進來達到更加理想的CSP。
b)更多的上傳過濾技術。當下,隨著社交網絡的興起,具有上傳功能的Web應用程序也日益增多,然而研究者對基于上傳功能的XSS攻擊防御技術上傳過濾關注較少。為此,可探索更多的基于機器學習的自適應上傳過濾技術來防御XSS攻擊。
c)新型XSS攻擊。由于攻擊策略的快速發展,新型XSS攻擊涌現。在當前XSS攻擊防御的研究中,只有少數研究者對新型XSS攻擊CS-XSS、WXSS進行防御研究。所以,未來可探索更多針對新型XSS攻擊的防御技術。
d)對抗性XSS攻擊。由于對抗攻擊是針對檢測模型進行的攻擊,并使用了欺騙和誘導的技術,防御對抗攻擊存在一定難度。就筆者所知,在現有XSS攻擊防御研究中,尚未發現針對對抗攻擊的研究。為此,可以嘗試將知識遷移和降噪技術運用于對抗攻擊防御中來提升模型的泛化性能和抗干擾能力也是未來的研究熱點。
參考文獻:
[1]OWASP.Top 10 Web application security risks[EB/OL].[2023-04-15].https://owasp.org/www-project-top-ten/.
[2]Rodríguez G E,Torres J G,Flores p,et al.Cross-site scripting(XSS) attacks and mitigation:a survey[J].Computer Networks,2020,166(1):106960.
[3]Al-Mekhlafi Z G,Mohammed B A.Using genetic algorithms to optimized stacking ensemble model for phishing websites detection[C]//Proc of the 3rd International Conference on Advances in Cyber Security.Singapore:Springer,2021:447-456.
[4]Barde S.Blockchain-based cyber security[M]//Agrawal R,Gupta N.Transforming Cybersecurity Solutions Using Blockchain.Singapore:Springer,2021:55-69.
[5]Gupta M K,Govil M C,Singh G.Predicting cross-site scripting(XSS) security vulnerabilities in Web applications[C]//Proc of the 12th International Joint Conference on Computer Science and Software Engineering.Piscataway,NJ:IEEE Press,2015:162-167.
[6]Sarmah U,Bhattacharyya D K,Kalita J K.A survey of detection me-thods for XSS attacks[J].Journal of Network and Computer Applications,2018,118(9):113-143.
[7]Gupta S,Gupta B B.XSS-secure as a service for the platforms of online social network-based multimedia Web applications in cloud[J].Multimedia Tools and Applications,2018,77(2):4829-4861.
[8]Mohammadi M,Chu B,Lipford H R.Detecting cross-site scripting vulnerabilities through automated unit testing[C]//Proc of IEEE International Conference on Software Quality,Reliability and Security.Piscataway,NJ:IEEE Press,2017:364-373.
[9]Liu Miao,Zhang Boyu,Chen Wenbin,et al.A survey of exploitation and detection methods of XSS vulnerabilities[J].IEEE Access,2019,7:182004-182016.
[10]Wang Ran,Xu Guangquan,Zeng Xianjiao,et al.TT-XSS:a novel taint tracking based dynamic detection framework for DOM cross-site scripting[J].Journal of Parallel and Distributed Computing,2018,118(8):100-106.
[11]Liu Miao,Wang Bin.A Web second-order vulnerabilities detection method[J].IEEE Access,2018,6:70983-70988.
[12]Chen XiaoLong,Li Mohan,Jiang Yu,et al.A comparison of machine learning algorithms for detecting XSS attacks[C]//Proc of the 5th International Conference on Artificial Intelligence and Security.Cham:Springer,2019:214-224.
[13]Stency V S,Mohanasundaram N.A study on XSS attacks:intelligent detection methods[J].Journal of Physics:Conference Series.IOP Publishing,2021,1767:012047-012056.
[14]Vijayalakshmi K,Syed Mohamed E.Case study:extenuation of XSS attacks through various detecting and defending techniques[J].Journal of Applied Security Research,2021,16(1):91-126.
[15]OWASP.Types of XSS[EB/OL].[2023-04-15].https://owasp.org/www-community/Types_of_Cross-Site_Scripting#Types_of_Cross-Site_Scripting.
[16]Da Rocha H.Learn Chart.js:create interactive visualizations for the Web with Chart.js 2[M].Birmingham:Packt Publishing,2019.
[17]Wagner D,Soto P.Mimicry attacks on host-based intrusion detection systems[C]//Proc of the 9th ACM Conference on Computer and Communications Security.New York:ACM Press,2002:255-264.
[18]Gupta S,Gupta B B.Cross-site scripting(XSS) attacks and defense mechanisms:classification and state-of-the-art[J].International Journal of System Assurance Engineering and Management,2017,8:512-530.
[19]IT168.新浪微博遭遇跨站攻擊蠕蟲侵襲[EB/OL].(2011-06-29)[2023-04-15].https://safe.it168.com/a2011/0629/1210/000001210645.shtml.(IT168.Sina Weibo suffers XSS worm attack[EB/OL].(2011-06-29)[2023-04-15].https://safe.it168.com/a2011/0629/1210/000001210645.shtml.)
[20]Lekies S,Kotowicz K,GROβ S,et al.Code-reuse attacks for the Web:breaking cross-site scripting mitigations via script gadgets[C]//Proc of ACM SIGSAC Conference on Computer and Communications Secu-rity.New York:ACM Press,2017:1709-1723.
[21]Fooying.通用跨站腳本攻擊(UXSS)[EB/OL].(2014-09-02).https://www.fooying.com/uxssl.(Fooying.Universal cross-site scripting(UXSS)[EB/OL].(2014-09-02).https://www.fooying.com/uxssl.)
[22]Zhang Yuqing,Liu Qixu,Luo Qihan,et al.XAS:cross-API scripting attacks in social ecosystems[J].Science China Information Sciences,2015,58:1-14.
[23]Heiderich M,Schwenk J,Frosch T,et al.mXSS attacks:attacking well-secured Web-applications by using innerHTML mutations[C]//Proc of ACM SIGSAC Conference on Computer & Communications Security.New York:ACM Press,2013:777-788.
[24]Goswami S,Hoque N,Bhattacharyya D K,et al.An unsupervised method for detection of XSS attack[J].International Journal of Network Security,2017,19(5):761-775.
[25]Kas?m .Malicious XSS code detection with decision tree[J/OL].Journal of Polytechnic,2020,23(1).https://www.doi.ory/10.2339/politeknik.470332.
[26]Mokbal F M M,Dan W,Imran A,et al.MLPXSS:an integrated XSS-based attack detection scheme in Web applications using multilayer perceptron technique[J].IEEE Access,2019,7:100567-100580.
[27]Mereani F A,Howe J M.Rule extraction from neural networks and other classifiers applied to XSS detection[C]//Proc of the 11th International Joint Conference Computational Intelligence.Cham:Springer,2021:359-386.
[28]Buijsman S.Defining explanation and explanatory depth in XAI[J].Minds and Machines,2022,32(3):563-584.
[29]顧兆軍,李志平,張禮哲.基于單分類支持向量機的XSS攻擊檢測研究[J].計算機應用與軟件,2021,38(6):299-305.(Gu Zhaojun,Li Zhiping,Zhang Lizhe.XSS attack detection based on OCSVM[J].Computer Applications and Software,2021,38(6):299-305.)
[30]Mokbal F M M,Wang Dan,Wang Xiaoxi.Detect cross-site scripting attacks using average word embedding and support vector machine[J].International Journal of Network Security,2022,4(1):20-28.
[31]Hwang Y M,Park S,LEE H O,et al.Deep learning for human activity recognition based on causality feature extraction[J].IEEE Access,2021,9:112257-112275.
[32]Liu Zhonglin,Fang Yong,Huang Cheng,et al.GraphXSS:an efficient XSS payload detection approach based on graph convolutional network[J].Computers & Security,2022,114(3):102597-102607.
[33]Marcheggiani D,Titov I.Encoding sentences with graph convolutional networks for semantic role labeling[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2017:1506-1515.
[34]Kadhim R W,Gaata M T.A hybrid of CNN and LSTM methods for securing Web application against cross-site scripting attack[J].Indonesian Journal of Electrical Engineering and Computer Science,2021,21(2):1022-1029.
[35]Yang Wenchuan,Zuo Wen,Cui Baojiang.Detecting malicious URLs via a keyword-based convolutional gated-recurrent-unit neural network[J].IEEE Access,2019,7:29891-29900.
[36]Yan Huyong,Feng Li,Yu You,et al.Cross-site scripting attack detection based on a modified convolution neural network[J].Frontiers in Computational Neuroscience,2022,16:981739.
[37]林雍博,凌捷.基于殘差網絡和GRU的XSS攻擊檢測方法[J].計算機工程與應用,2022,58(10):101-107.(Lin Yongbo,Ling Jie.XSS attack detection method based on residual network and GRU[J].Computer Engineering and Applications,2022,58(10):101-107.)
[38]Fang Yong,Xu Yijia,Jia Peng,et al.Providing email privacy by preventing Webmail from loading malicious XSS payloads[J].Applied Sciences,2020,10(13):4425.
[39]Song Xuyan,Chen Chen,Cui Baojiang,et al.Malicious JavaScript detection based on bidirectional LSTM model[J].Applied Sciences,2020,10(10):3440.
[40]Hu Tianle,Xu Chonghai,Zhang Shenwen,et al.Cross-site scripting detection with two-channel feature fusion embedded in self-attention mechanism[J].Computers & Security,2023,124(1):102990.
[41]Li Xinghua,Zhu Mengyao,Yang L T,et al.Sustainable ensemble learning driving intrusion detection model[J].IEEE Trans on Dependable and Secure Computing,2021,18(4):1591-1604.
[42]Mereani F A,Howe J M.Preventing cross-site scripting attacks by combining classifiers[C]//Proc of the 10th International Joint Conference on Computational Intelligence.San Francisco:SCITEPRESS,2018:135-143.
[43]Rathore S,Sharma P K,Park J H.XSSClassifier:an efficient XSS attack detection approach based on machine learning classifier on SNSs[J].Journal of Information Processing Systems,2017,13(4):1014-1028.
[44]Zhang Jingchi,Jou Y T,Li Xiangyang.Cross-site scripting(XSS) detection integrating evidences in multiple stages[C]//Proc of the 52nd Hawaii International Conference on System Sciences.2019:7166-7175.
[45]Zhou Yun,Wang Peichao.An ensemble learning approach for XSS attack detection with domain knowledge and threat intelligence[J].Computers & Security,2019,82(5):261-269.
[46]Mokbal F M M,Wang Dan,Wang Xiaoxi,et al.XGBXSS:an extreme gradient boosting detection framework for cross-site scripting attacks based on hybrid feature selection approach and parameters optimization[J].Journal of Information Security and Applications,2021,58(5):102813.
[47]Li Yao,Cheng Minhao,Hsieh C J,et al.A review of adversarial attack and defense for classification methods[J].The American Statistician,2022,76(4):329-345.
[48]Fang Yong,Huang Cheng,Xu Yijia,et al.RLXSS:optimizing XSS detection model to defend against adversarial attacks based on reinforcement learning[J].Future Internet,2019,11(8):177-189.
[49]Zhang Xueqin,Zhou Yue,Pei Songwen,et al.Adversarial examples detection for XSS attacks based on generative adversarial networks[J].IEEE Access,2020,8:10989-10996.
[50]Wang Qiuhua,Yang Hui,Wu Guohua,et al.Black-box adversarial attacks on XSS attack detection model[J].Computers & Security,2022,113(2):102554.
[51]Chen Li,Tang Cong,He Junjiang,et al.XSS adversarial example attacks based on deep reinforcement learning[J].Computers & Security,2022,120(9):102831.
[52]Mitropoulos D,Stroggylos K,Spinellis D,et al.How to train your browser:preventing XSS attacks using contextual script fingerprints[J].ACM Trans on Privacy and Security,2016,19(1):article No.2.
[53]Gupta S,Gupta B B.Robust injection point-based framework for modern applications against XSS vulnerabilities in online social networks[J].International Journal of Information and Computer Security,2018,10(2-3):170-200.
[54]Chaudhary P,Gupta B B,Choi C,et al.XSSPro:XSS attack detection proxy to defend social networking platforms[C]//Proc of the 9th International Conference on Computational Data and Social Networks.Cham:Springer,2020:411-422.
[55]Pazos J C,LéGaré J S,Beschastnikh I.XSnare:application-specific client-side cross-site scripting protection[J].Empirical Software Engineering,2023,28(5):1-37.
[56]Gebre M T,Lhee K S,Hong M P.A robust defense against content-sniffing xss attacks[C]//Proc of the 6th International Conference on Digital Content,Multimedia Technology and Its Applications.Pisca-taway,NJ:IEEE Press,2010:315-320.
[57]Javed A,Schwenk J.Towards elimination of cross-site scripting on mobile versions of Web applications[C]//Proc of the 14th International Workshop on Information Security Application.Cham:Springer,2014:103-123.
[58]Wassermann G,Su Zhendong.Static detection of cross-site scripting vulnerabilities[C]//Proc of the 30th International Conference on Software Engineering.New York:ACM Press,2008:171-180.
[59]Stamm S,Sterne B,Markham G.Reining in the Web with content security policy[C]//Proc of the 19th International Conference on World Wide Web.New York:ACM Press,2010:921-930.
[60]Jim T,Swamy N,Hicks M.Defeating script injection attacks with browser-enforced embedded policies[C]//Proc of the 16th International Confe-rence on World Wide Web.New York:ACM Press,2007:601-610.
[61]Johns M.Script-templates for the content security policy[J].Journal of Information Security and Applications,2014,19(3):209-223.
[62]Iqbal J,Kaur R,Stakhanova N.PoliDOM:mitigation of DOM-XSS by detection and prevention of unauthorized DOM tampering[C]//Proc of the 14th International Conference on Availability,Reliability and Security.New York:ACM Press,2019:article No.17.
[63]Fazzini M,Saxena P,Orso A.AutoCSP:automatically retrofitting CSP to Web applications[C]//Proc of the 37th International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2015:336-346.
[64]Pan Xiang,Cao Yinzhi,Liu Shuangping,et al.CSPAutOGen:black-box enforcement of content security policy upon real-world websites[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2016:653-665.
[65]Xu Guangquan,Xie Xiaofei,Huang Shuhan,et al.JSCSP:a novel policy-based XSS defense mechanism for browsers[J].IEEE Trans on Dependable and Secure Computing,2020,19(2):862-878.
[66]Barth A,Caballero J,Song D.Secure content sniffing for Web brow-sers,or how to stop papers from reviewing themselves[C]//Proc of the 30th IEEE Symposium on Security and Privacy.Piscataway,NJ:IEEE Press,2009:360-371.
[67]Barua A,Shahriar H,Zulkernine M.Server side detection of content sniffing attacks[C]//Proc of the 22nd IEEE International Symposium on Software Reliability Engineering.Piscataway,NJ:IEEE Press,2011:20-29.
[68]Potteiger B,Zhang Zhenkai,Cheng Long,et al.A tutorial on moving target defense approaches within automotive cyber-physical systems[J/OL].Frontiers in Future Transportation,2022.https:www.doi.org/10.3389/ffutr.2021.792573.
[69]Nadji Y,Saxena P,Song D.Document structure integrity:a robust basis for cross-site scripting defense[C]//Proc of the 16th Annual Network and Distributed System Security Symposium.San Diego:Internet Society,2009.
[70]Athanasopoulos E,Pappas V,Krithinakis A,et al.xJS:practical XSS prevention for Web application development[C]//Proc of USENIX Conference on Web Application Development.Berkeley,CA:USENIX Association,2010:1-13.
[71]Van Gundy M,Chen Hao.Noncespaces:using randomization to defeat cross-site scripting attacks[J].Computers & Security,2012,31(4):612-628.
[72]Niakanlahiji A,Jafarian J H.WebMTD:defeating cross-site scripting attacks using moving target defense[J].Security and Communication Networks,2019,2019:article ID 2156906.
[73]Cao Yinzhi,Yegneswaran V,Porras P A,et al.PathCutter:severing the self-propagation path of XSS JavaScript worms in social Web networks[C]//Proc of the 19th Annual Network & Distributed System Security Symposium.San Diego:Internet Society,2012:1-14.