基于残差网络和GRU的XSS攻击检测方法

2022-05-19 13:27林雍博
计算机工程与应用 2022年10期
关键词:残差准确率样本

林雍博,凌 捷

广东工业大学 计算机学院,广州 510006

根据国家信息安全漏洞库(CNNVD)机构的统计,在2020年10月发布的漏洞类型分布中,XSS漏洞所占比例最大,约为8.89%[1]。XSS漏洞是由于Web服务端没有对用户输入的信息进行足够的检查和过滤,从而导致了潜在的安全威胁。XSS漏洞从1996年诞生直至演变至今,虽然有许多专家提出了不少防御技术,例如防病毒软件[2]、Web防火墙[3]和入侵检测设备[4]等,但是XSS漏洞数量总体仍在上升,这说明随着时代和技术的发展,XSS漏洞并没有得到较好的控制。面对这种情况,虽然无法在源头进行控制,但是可以在检测方面进行加强。近来就有不少利用机器学习来进行XSS攻击检测的例子。例如,文献[5]结合多层感知机(multilayer perceptron,MLP)较强学习能力和隐马尔可夫模型(hidden Markov model,HMM)对于时间序列强大处理能力对XSS攻击进行检测,相比于传统机器学习进一步提高了准确率。文献[6]利用长短期记忆网络(long short-term memory,LSTM)网络来构建XSS检测模型,实验结果表明,该方法能有效地进行XSS检测中,但对于恶意混淆[7]的XSS检测则还不够准确。文献[8-9]改进了基于支持向量机(support vector machine,SVM)分类器的XSS攻击检测技术,全面提取大量XSS样本特征,尤其是变形XSS攻击的特征,能够改善传统检测方法的不足,但还是有不低的误报率。

针对上述方法的不足,为了进一步改善检测性能,提升检测的准确率、效率和泛化能力,降低检测的误报率,本文提出了一种基于残差网络[10]和GRU(gate recurrent unit)的XSS攻击检测方法。

1 相关工作

XSS攻击是一种注入类型的攻击,通常指的是攻击者利用网页开发没有对用户提交数据进行转义处理或者过滤的缺陷,将恶意指令代码注入到网页,使用户加载并执行的一种攻击。当攻击者使用网络应用程序向不同的终端用户发送恶意代码(通常以浏览器端脚本的形式)时,就会发生XSS攻击。攻击者可以使用XSS向毫无戒备的用户发送恶意脚本,最终用户的浏览器没有办法知道该脚本不应该被信任,并会执行该脚本。因为它认为脚本来自于可信的源头,所以恶意脚本可以访问浏览器保留的任何Cookies、会话令牌或其他敏感信息,并与该网站一起使用,从而导致敏感信息的泄露。

传统的检测XSS攻击漏洞一般有两种方式:(1)基于静态分析的研究方法。这种方法是指在不运行程序源码的情况下,对目标代码进行分析,利用语义和词法分析等多种方法,从逻辑结构、数据处理过程等各方面对程序源码进行扫描,得到程序源码的反汇编代码。然后对拆解后的代码进行分析,挖掘程序源码中存在的安全隐患。例如,Cui等[11]采用基于数据库查询的方法,利用Datalog描述XSS缺陷。从可能出现XSS安全缺陷的方法入手,对数据流进行逆向分析,判断是否可以通过用户输入引入XSS缺陷来检测。由于可能导致XSS缺陷的方法数量远远少于可能引入污点数据的方法,采用反向分析法可以减少需要分析的方法数量,从而大大提高静态分析效率。(2)基于动态分析的研究方法。这种方法是通过模拟攻击者对目标进行渗透测试的方法,首先将特定的攻击脚本注入可疑注入点进行检测,然后根据服务器的响应结果判断目标程序是否存在跨站脚本漏洞。动态分析法主要分为五个步骤:收集可疑注入点;生成一组攻击脚本(即XSS payload);渗透测试;分析响应结果;生成分析报告。例如,文献[12]提出一种新的基于动态分析的跨站脚本漏洞检测模型,该方法根据负载单元的位置和功能类型,将攻击负载分为多个负载单元,并制定组合成完整攻击负载的规则。通过负载单元的组合测试和单独测试,将负载单元与旁路规则的组合放入检测点测试,并根据测试结果生成具有针对性的完整攻击负载。实验结果表明,该模型可以使用较少的测试请求来完成更多攻击负载的测试,在有效降低漏报率的情况下,还能保持较高的检测效率。此外,还可通过对用户提交的数据进行审查过滤来达到防止XSS攻击的作用。例如通过Web防火墙,设置白名单、黑名单等方式来进行防御,如对