跨站脚本攻击检测与防御技术综述
2024-05-24王铃铜王慧玲徐苗綦小龙
王铃铜 王慧玲 徐苗 綦小龙
摘 要:跨站腳本(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.