1、第 12 卷第 5 期2023 年 9 月网络新媒体技术Vol.12 No.5Sep.2023基于深度学习的跨站脚本攻击检测技术的研究吴金宇1 陶文伟1 张富川1 江泽铭1 王依云1 赵宇珩2 王宝会2(1中国南方电网有限责任公司广州 5106232北京航空航天大学软件学院北京 100191)摘要:针对互联网应用的网络攻击。跨站点脚本 XSS 攻击是常见的针对 Web 应用程序的攻击种类。本文提出的基于深度学习的 XSS 检测模型,将 CNN 神经网络和 BiLSTM 神经网络序列化,融合两者优点学习样本的局部特征和上下文依赖特征,并通过 Attention 注意力机制加权计算来解决长序列效果
2、差的问题,并融合 BERT 预训练的特征向量加速模型训练,提高检测效果,从而实现 XSS 检测模型的构建。优化的模型能够自动的提取样本的特征信息并完成分类检测相对于传统的静态和动态检测方法及采用人工特征提取的机器学习算法相比,在准确率和误报率方面都有较大提升。准确率、召回率、精确度值超过目标值(98%),误报率低至 0.12%。关键词:跨站脚本攻击,深度学习,网络安全,检测技术,特征DOI:10.20064/ki.2095-347X.2023.05.005Detection Technology Research of Cross-site Scripting AttackBased on D
3、eep LearingWU Jinyu1,TAO Wenwei1,ZHANG Fuchuan1,JIANG Zeming1,WANG Yiyun1,ZHAO Yuheng2,WANG Baohui2(1China Southern Power Grid Co.,LTD,Guangzhou,510623,China,2College of Software,Beihang University,Beijing,100191,China)Abstract:Cross site scripting(XSS)attacks are common types of attacks against Web
4、 applications.The XSS detection model based ondeep learning proposed in this paper combines the advantages of CNN neural network and BiLSTM neural network,integrates the localfeatures and context dependent features of the learning samples with their advantages,solves the problem of poor effect of lo
5、ng se-quences through the weighted calculation of Attention mechanism,and accelerates the model training with the feature vector pre trainedby BERT to improve the detection effect,so as to realize the construction of XSS detection model.The optimized model can automati-cally extract the feature info
6、rmation of samples and complete classification detection.Compared with traditional static and dynamic de-tection methods and machine learning algorithms using artificial feature extraction,it has a greater improvement in accuracy and falsealarm rate.The accuracy rate,recall rate and precision value
7、exceed the target value(98%),and the false alarm rate is as low as0.12%.Keywords:cross-site scripting,deep learning,network security,detection technology,characteristics本文于 2022-11-28 收到,2022-12-21 收到修改稿。0引言随着互联网的发展,互联网应用给人们的生产、生活带来巨大便利,但伴随而来针对互联网应用的各种网络新媒体技术2023 年病毒,攻击威胁着互联网生态的安全,网络安全形势日益复杂,网络攻击事件和
8、个人信息泄露频频发生,全球网络战愈演愈烈,外部势力对关键基础设施的攻击逐年增加,国家、社会对网络安全越发重视。在众多网络攻击中跨站脚本(Cross-Site Scripting,XSS)攻击是常见的针对 Web 应用程序的攻击,攻击者可以在用户的浏览器中执行其预定义的恶意脚本,如劫持用户会话,插入恶意内容,重定向用户,使用恶意软件劫持用户浏览器,繁殖 XSS 蠕虫,甚至破坏网站、篡改路由器配置信息等。XSS 攻击频发严重危害用户及服务器的安全。XSS 具有攻击形式复杂多变,攻击频发的特点,多次被列为 Web 应用程序安全主要漏洞之一。在 2013年和 2017 年开放式 Web 应用程序安全项
9、目组织(Open Web Application Security Project,OWASP)公布的Web 应用前十大漏洞中,跨站脚本攻击位列其中1。北京奇虎科技有限公司发布的2019 年中国政企机构网络安全形势分析报告披露,在 2019 年 1 月到同年 6 月,XSS 漏洞被识别出次数为 51.9 万次,存在此漏洞的网站数量为 4.3 万个,属于高危漏洞,XSS 漏洞被识别出次数和漏洞网站数量均是最多的,排名高危漏洞第一2。因此,对于 XSS 攻击的检测尤为重要。1跨站脚本(XSS)攻击检测现状1.1跨站脚本攻击跨站脚本攻击,这类漏洞可以使用户在浏览器中执行其预定义的恶意脚本,针对用户和
10、 Web 服务都有不同的危害,例如劫持用户会话、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖 XSS 蠕虫,甚至破坏网站、修改路由器配置信息等。跨站脚本可以分为反射型跨站脚本攻击(非持续性 XSS)、存储型跨站脚本攻击(持久性 XSS)及 DOM(Document Object Model,DOM)型 XSS 3 种类。1.1.1反射型跨站脚本攻击反射型跨站脚本攻击一般存在于 GET 请求的页面中,是一种非持续的攻击,需要用户点击黑客构造的恶意信息载荷(payload)的链接才会触发。当用户访问一个带有 XSS 代码的 URL 请求时,服务器端接收数据后进行处理,会将带有 XSS
11、 的数据发送到浏览器,浏览器解析这段带有 XSS 代码的数据后,造成 XSS 漏洞,这个过程就像一次反射。交互的数据一般不会被存在数据库里,经常出现在查询类页面。反射型跨站脚本攻击流程:黑客发送带有 XSS 恶意脚本的链接给用户,一般会诱导用户点击;用户没有仔细识别链接而轻易点击了该链接,访问了正常目标服务器;网站将 XSS 同正常页面返回到用户浏览器;用户浏览器解析了网页中的 XSS 恶意代码,向恶意服务器发起了请求;黑客从自己搭建的恶意服务器中获取用户提交的信息。1.1.2存储型跨站脚本攻击存储型跨站脚本攻击是黑客将 XSS 代码植入到网站的数据库中,当攻击者成功攻击服务器数据库后,后续的
12、其他访问者均会受到跨站脚本攻击,因此也被称作持续性 XSS。例如黑客将 XSS 攻击写到网站的留言板,当用户访问留言板就会被触发。反射型与 DOM 型 XSS 执行都必须依靠用户手动触发,而存储型 XSS不需要用户点击便会触发,因此具有更高的隐蔽性和危害性。存储型跨站脚本攻击流程:黑客在目标服务器上构造 XSS 恶意脚本;用户在网站登录状态下,访问了目标服务器,查看了存在恶意脚本的页面;网站将 XSS 同正常页面返回到用户浏览器;用户浏览器解析了网页中的 XSS 恶意代码,向恶意服务器发起请求;黑客从自己搭建的恶意服务器中获取用户提交的信息。1.1.3DOM 型跨站脚本攻击DOM 型跨站脚本攻
13、击是基于文档对象模型的一种漏洞,不经过服务器端。DOM 是访问 HTML 的标准编程接口。DOM 型 XSS 也是通过 URL 传入参数去控制触发的,DOM XSS 与反射性 XSS、存储型 XSS 的主要435 期吴金宇 等:基于深度学习的跨站脚本攻击检测技术的研究区别在于 DOM 型 XSS 的恶意代码不需要服务端解析响应直接参与,触发 XSS 的是客户浏览器端的 DOM解析。DOM 型跨站脚本攻击流程:黑客发送带有 XSS 恶意脚本的链接给用户,一般会诱导用户点击;用户点击链接访问了 Web 服务器;Web 服务器向受害者发送 HTTP 响应;XSS 在受害者客户端执行,然后将用户的 c
14、ookie 等信息发送给黑客。1.2检测现状网络安全的攻击和防御是相互对抗但又不断相互演进的过程,随着 XSS 攻击技术的逐步升级演化,其对应的检测手段和技术也在不断更新发展。目前针对 XSS 攻击的检测主流方法可以分为 5 类:静态检测、动态检测、混合检测、机器学习检测方法和深度学习检测方法3。静态检测、动态检测和混合检测的方法是传统的 XSS 检测技术,随着机器学习方法的出现,许多研究者通过人工特征选择将大量机器学习检测算法应用到网络安全领域。近年来,由于深度学习方法在图像、自然语言处理等问题上的突破性表现,网络安全领域的研究者纷纷将深度学习和网络安全相结合进行检测,其检测效率和检测效果都
15、有较大幅度的提升。(1)静态检测方法。静态检测方法4,5是在不运行代码的情况下,采用语法分析、词法分析等技术手段对程序文件进行扫描从而生成程序的反汇编代码6。(2)动态检测方法。动态检测的方法和静态检测不同,静态检测主要通过分析源码中的漏洞进行检测,而动态检测主要分析代码在运行时的行为来找寻漏洞,动态检测方法相比静态检测具有更高的检出率。(3)混合检测方法。混合检测方法利用了静态特征值和动态特征值来进行检测。(4)机器学习检测方法。机器学习技术很早就被提出,从上世纪 80 年代开始复兴,一些专家学者将机器学习应用到了 XSS 攻击检测中取得了较好的检测效果。相对于动态检测方法,机器学习的检测方
16、法不需要运行代码进行动态分析,但需要进行人工特征选取,主观性强,特征选择的质量直接影响检测的效果,而且人工特征工程对于网络专家的工作量也很大。(5)深度学习检测方法。Liang J 等人通过训练 2 个循环神经网络(Recurrent Neural Network,RNN)来检测异常的 Web 请求,能够区分正常和异常的请求,实验结果证明该种方法比人工特征选择的机器学习方法准确率更高,在误报率等方面也更有优势7。Li Zhen 等人将长短时记忆网络(Long Short Term Memory Network,LSTM)运用到了 Web 漏洞检测中取得了较好的检测结果8。Wu F 等人通过卷积
17、神经网络(Convolutional Neural Network,CNN)来提取特征,然后使用 Softmax 函数对 Web 异常和正常请求进行分类9。姜天等人通过 fastText 方法来对恶意 URL 进行分类,通过数据预处理和词嵌入将样本转化为多维向量,通过隐藏层对词向量进行叠加平均后输出分类,取得了 97.86%的准确率10。URL 作为 Web 应用程序的唯一入口经常被黑客攻击利用,XSS 在恶意 URL 中占比很高。目前攻击者对 XSS 的攻击及防检测的手段不断更新,通过代码混淆和攻击逻辑复杂化大大提高了检测的难度。(1)XSS 攻击代码混淆复杂化。攻击者会通过多种编码手段对攻
18、击代码进行编码,例如使用 Base64、ASCII、Unicode 和 UTF-8 等编码形式来躲避浏览器的过滤,或者在攻击代码中插入一些不影响代码运行的空白随机字符来进行代码混淆,多种混淆手段的运用会直接影响检测的效果。(2)XSS 攻击逻辑的复杂化。JavaScript 脚本语言与文本语言相似,存在着上下文的语义,攻击者在构造攻击代码时会使用多种功能一致的函数相互替换,例如通过 let x=alert替代 alert()来实现 JavaScript 的弹窗功能的代码,或者通过插入条件分支或循环来复杂代码结构、攻击形式和逻辑,越复杂越难以检测。攻击53网络新媒体技术2023 年逻辑复杂化导致
19、相应的语义复杂化,也加大了检测的难度11。2基于深度学习 XSS 检测算法的研究2.1深度学习 XSS 检测传统检测技术以分析安全问题和设定固定规则的研究方法变得效率低下,例如需要大量的安全专家从威胁中提取特征,并通过特征编码来检测威胁,或是依靠固定规则或黑白名单过滤的检测方法,这些技术都存在检测效率低,规则更新不及时等问题12。以机器学习和深度学习为基础的新技术传统安全检测技术提供了新的思路。通过人工特征选择的机器学习技术,特征选择依赖于网络安全专家的个人能力,主观性强,提取的特征质量直接影响模型的检测效果,后续模型的更新成本很高,该种方法的检测准确率在 96%左右,在误报率、漏报率等指标上
20、表现一般。由于网络安全的流量庞大,小概率发生正常流量被拦截都会直接影响用户体验,所以对误报率、漏报率的要求很高,在这几项关键指标上仍需提高13。目前以深度学习为基础的新技术给表现逐渐乏力的传统安全检测技术提供了新的思路与方向,通过大量的数据集进行特征学习,更好的把握攻击样本的特征,极大的提升了检测效果。目前己经有部分研究将深度学习技术应用于 Web 攻击检测,但仍处于探索阶段,具有较大的研究前景。2.2基于深度学习 XSS 检测算法2.2.1数据集深度学习对数据集的数量有很高的要求,数据集的质量和规模直接影响模型的训练效果。目前暂没有发现直接针对 XSS 的权威的数据集,因此研究采用的恶意样本
21、小部分来自于 Github 个人上传的 XSS 样本,大部分爬取于 XSSed 和 Exploit-db 网站,正常样本主要来自 DOMZ 等网站14。恶意样本主要收集于 XSSed 网站,XSSed 由 KF 和 DP 于 2007 年创建,是全球最大的 XSS 样本提交网站,可以验证所有提交的 XSS 易受攻击的网站样本。正常的样本主要收集于开放式分类目录网站 DMOZ,该网站由来自世界各地的志愿者共同建设和维护。本文利用爬虫工具从 DMOZ 数据库爬取了 30 余万条 ht-tp,get 样本。为保证数据安全,数据集去除了 URL 中的 host、path 等信息,仅保留 payload
22、 部分。另从 XSSed网站和 Exploit-db 共收集了 6 万多条 XSS 恶意样本。2.2.2数据预处理模型的检测效果受检测模型算法等影响,质量好的数据集能更好地提取出特征。XSS 样本载荷主要通过 URL 编码、Base64 编码、Unicode 编码等技术进行恶意混淆,因此,首先需要对样本数据进行逐次解码操作来反混淆,经过解码后,对数据集进行去噪处理,去除无效、残缺、重复、错误的数据。经过数据清洗后的数据集将作为训练测试用的标准数据集。此外进行特征提取的神经网络需要输入向量,而搜集的样本数据集为文本形式,所以还需要转换为神经网络能够输入的向量形式。对所收集的 XSS 样本数据和正
23、常样本数据进行了数据预处理,数据预处理分为数据清洗、分词以及向量化 3 个部分。数据清洗主要对数据中的噪声数据进行去除,对样本进行解码操作等。分词主要是对数据样本按照预定的正则规则进行分词操作。向量化主要通过工具算法将文本数据转化为神经网络能够输入的向量形式。本文使用 Python 中的自然语言处理工具包 NLTK(Natural Language Toolkit)和正则表达式进行分词操作,NLTK 自带语料库,能够实现分类、分词等功能。文本形式的数据不能直接进行特征提取的神经网络,所以需要将文本数据进行向量化表示,文本向量化的方式由独热(One-Hot)编码、词频-逆文件频率(Term Fr
24、equency-Inverse Document Frequency,TF-IDF)方法和 Word2Vec 等方法。(1)独热编码也被称为一位有效编码15,词表示为一个很长的向量,向量长度为词汇表的长度,每个词只有一个维度的值为 1,其他都为 0,独热编码的优点是将离散特征映射到欧式空间,有利于特征之间的距离635 期吴金宇 等:基于深度学习的跨站脚本攻击检测技术的研究或者相似度的计算,但这种方法存在 2 个问题:一是向量极其稀疏,由于需要表示的词较多的话词向量的维度会很高,对应的特征空间也很大,表现出高维稀疏的特点,一般需要结合主成分分析法(Principal Compo-nent Ana
25、lysis,PC)等方法来降维使用16;二是词与词之间是相互独立的,即使语义上接近的词也是完全独立。(2)TF-IDF 算法是一种加权计算方法17,通过计算字词在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。(3)Word2Vec 模型是为了解决独热编码高维稀疏的问题18,该模型主要分为连续词袋模型(CBOW)和使用中心词预测其周边的词(Skip-Gram)2 种模型。这 2 种模型结构包含了输入层、隐藏层和输出层,CBOW 通过给出上下文来预测中间值出现的概率,而 Skip-Gram 则是给出中间值输出上下文中词出现的概率。CBOW 训练速度快,Skip-
26、Gram 的向量表示更准确19。独热编码向量存在高维稀疏的问题,TF-IDF 虽然能过滤掉一些常见的却无关紧要的词语,同时保留影响整个文本的重要词语,但丢失了文本上下文之间的联系。为了更好地获得样本中上下文之间语义信息,本文使用 Word2Vec 模型转换词向量。本文取 XSS 样本中出现次数最多的 3 000 个词组成词汇表,其他的词标记为“UKN”,使用 gensim 模块的 Word2vec 类建模。图 1CBOW 和 Skip-Gram 的模型结构图经过 Word2vec 类将文本转换为词向量后,由于维度很高不利于后续的神经网络训练和收敛,因此使用t-SNE 算法进行降维,t-SNE
27、是一种效果优异的数据降维和可视化算法。数据通过 t-SNE 算法降维后得到二维的可视化结果。特征值及其向量分布在二维空间上,在低维的图上显示效果更明显,从图 1 中可见相似的词语或词语间有语义关系的距离近,汇聚在一起。2.2.3检测模型(1)评价指标。为了更加科学客观地评价模型的分类效果,使用了以下 5 个评价指标多角 度、科 学 合 理 地 对 模 型 进 行 评 估。XSS 攻击样本作为正样本,正常请求样本作为负样本,定义的混淆矩阵如表 1 所示。表 1混淆矩阵表预测为正样本(XSS)预测为负样本(normal)实际为正样本(XSS)TPFN实际为负样本(normal)FPTN准确率(Ac
28、curacy rate,ACC):表示预测正确的样本数占所有样本数的比例,见式(1)。ACC=1-errors_sumsum()100%(1)召回率(Recall,R):表示实际正样本数占预测正样本数的比例,即实际正样本中被正确找出的能力,见式(2)。R=TPTP+FN 100%(2)精确率(Precision,P):表示预测正确的正样本数占预测为正样本的所有样本数的比例,即在找出的正样本中找对的能力,见式(3)。P=TPTP+FP 100%(3)误报率(False Positive Rate,FPR),表示错误预测为正样本的负样本数占所有负样本的比例,见式(4)。FPR=FPTN+FP 10
29、0%(4)F1 值(F1 score,F1),是召回率和精确率的调和平均数,取值在 0-1 之间,综合考虑了模型的召回率和73网络新媒体技术2023 年精确率,能够综合评价模型检测性能,见式(5)。F1=2 P RP+R(5)(2)CNN 模型。卷积神经网络是深度学习的经典算法之一,具有卷积和深度结构的前馈神经网络。目前在计算机视觉和自然语言处理方向上有许多应用。LeNet-5 是较早提出的卷积神经网络,其网络结构由输入层、卷积层、池化层、全连接层和输出层 5 层组成20。首先是卷积层,卷积可以看作是“滑动平均”的推广,滑动平均是指按照点距或线距移动窗口,重复此移动方法,直到完成整幅图滑动。通
30、过一个卷积核 Filter 在图片上均匀的滑动,对全图进行卷积计算完成卷积图像(Convolved Image)。CNN 的卷积按照卷 积函数的不 同可以分 为一维卷积(Conv1D)、二维卷 积(Conv2D)和 三 维 卷 积(Conv3D),Conv1D 的输入的数据是一维的,适合文本等序列数据,常被用于自然语言处理;Conv2D 的输入是二维的,适合二维的图片输入,常被用于图像处理识别、计算机视觉等领域;Conv3D 的输入是三维的,常被用于医学检测(CT 造影)和视频处理领域(检测动作及人物行为)。经过卷积层后,卷积结果会进入池化层进行采样操作,池化层的主要作用有 2 个,一是降维,
31、减小特征图的尺寸从而减小计算量,二是特征不变性,池化层支持了一定的平移、旋转、拉伸而不变性。池化的方法主要有平均池化(mean-pooling)算法和最大池化(max-pooling)2 种,最大池化选取区域中最大的值,舍弃其他数值;平均池化则选择区域中所有数值的均值。通过池化操作后保留了特征图的特征降低了参数量,减小了后续的计算量,降低了计算开销防止过拟合。全连接层每层都是由很多神经元组成的平铺结构,将学习到的分布式特征表示映射到样本空间,输出为一个值,减少特征位置对分类带来的影响。在卷积神经网络中全连接往往起到一个分类器的作用。全连接层后面接一个分类器进行分类操作。(3)LSTM 模型。传
32、统的神经网络,由于没有记忆能力,在处理数据时只能单独处理,前后输入的数据之间没有关联,因此在前后数据有关联体现序列关系的情况下,比如分析一个视频文件时需要考虑每一帧前后的序列和时间关系而不能单独考虑一帧的状态。神经网络处理这种数据时效果并不好,由此诞生了循环神经网络(Recurrent Neural Network,RNN)。RNN 的网络由输入层、隐藏层和输出层组成。图 2LSTM 结构图由于 RNN 在处理长序列时会出现梯度消失和梯度爆炸的问题,因为 RNN 在利用反向传播计算参数时,由于链式法则的原因导致激活函数偏导数与参数权重之积过小或过大,所以 RNN 很难处理长距离的依赖问题。在这
33、种情况下,诞生了一种改进的 RNN 长短时记忆网络 LSTM 见图 2,LSTM 在处理时序问题上有良好的表现,在语音处理、自然语言处理领域均有重要应用。LSTM 创造性地引入了输入门、遗忘门、输出门和细胞状态的概念。输入门决定了在当前的网络单元中,保存多少新输入信息到当前的网络单元的状态中;遗忘门决定在当前的网络单元中保留或者遗忘多少上一个网络单元中的状态信息;输出门的作用是更新当前网络单元的状态和输出信息,并将当前网络单元的状态传递至下一个网络单元;对于网络中的每一个门,都由门的输入点乘权重矩阵,并与偏置矩阵进行加和,通过激活函数得到新的状态,状态的更新和输入依赖于 3 个门的计算结果。(
34、4)fastText 模型。fastText 是 Facebook 人工智能研究院在 2016 年开源的一个被用于对词向量和句子分类进行高效学习训练的工具21。该工具可以在监督和非监督模式下训练单词和句子的向量表示。训练完成后生成的词向量,可以进一步用在其他模型的初始化和特征选择等任务中。835 期吴金宇 等:基于深度学习的跨站脚本攻击检测技术的研究fastText 作为一种快速文本分类工具,其特点是速度快。相比较其他文本分类模型,诸如逻辑回归(Lo-gistic Regression)和神经网络等,fastText 在保留了较高分类准确度的情况下,极大地缩短了训练和测试的时间。使用 fast
35、Text 也不需要提供预训练好的词向量。(5)模型试验结果分析。采用深度学习中常用的 6 2 2 的比例将标准数据集(D1)分割为训练集、验证集和测试集,数据集分布情况如表 2 所示。使用 1D-CNN、LSTM 和 fastText 模型进行训练,模型参数调整时根据经验以及不断地实验来进行优化。3 种模型训练结果如表 3 所示。表 2数据集分布表标签类别训练集验证集测试集总计1XSS36 57312 19112 19160 9550Normal180 11760 03960 039300 195表 3 3 种深度学习模型的检测结果检测模型ACCPRF1FPR1D-CNN99.21%97.79
36、%97.55%97.67%0.50%LSTM99.17%97.71%97.38%97.55%0.53%fastText98.99%97.31%96.75%97.03%0.67%(6)基于 CNN 和 BiLSTM 的改进模型。图 3注意力机制计算过程图Attention 注意力机制被广泛应用与深度学习有关的自然语言处理任务中,注意力机制来源于人类大脑对于重点对象的关注。它是为了从大量的信息中筛选出有意义的内容,对于重要的内容给予更高的关注。忽略那些不重要的内容和信息,给予重要的内容 Value 值更高的权重。注意力计算的流程可以分为 2 部分:权重计算和加权求和22。权重计算是通过查找(Que
37、ry)和键(Key)计算权重系数,加权求和是指根据权重系数对Value 进行加权求和。计算过程如图 3,注意力机制的计算过程如阶段 1,首先根据 Query 和 Key 计算相似性,然后将计算出的原始分值通过类函数 Softmax()进行归一化处理;阶段 2,通过加权求和得到 Attention 数值。注意力机制计算过程如图 3 所示,计算公式如式(6)。Attention(Query,Source)=Lxi=1ai Valuei(6)LSTM 通过门和细胞状态部分解决了 RNN 存在的梯度消失的问题,在实际操作中,循环神经网络需要一步一步去捕捉序列信息,在长序列上的表现是随着时间的增加而慢慢
38、衰减,难以保留全部的有用信息,所以对于较长的输入还是存在特征提取不充分的问题。因此通过添加 Attention 注意力机制,将 BiLSTM 提取的双向序列的特征间距离缩小为 1,解决了长距离梯度消失的问题。BERT 是一个预训练的语言表征模型。BERT 即双向变形模型(Transformer)的编码器(Encoder)23,没有 Decoder 是因为没有其不能获得预测信息,模型的创新点在预训练模型上,它强调了采用传统的单向语言模型或者将 2 个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的掩码语言模型(Masked Lan-guage Model,MLM),生成深度的双向语言表征。
39、BERT 的模型结构如图 4 所示,BERT 采用了 Transformer Encoder,即每时每刻的 Attention 计算都能够得到全部时刻的输入24。模型改进。前述 Attenting,LSTM,BERT 3 种模型能够满足 98%的准确率的要求,但无法满足召回率和精确率的指标要求。XSS 攻击代码存在着长距离的上下文依赖关系,还存在着代码间局部相关性高的特点。所以单独使用LSTM 建立检测模型时,虽然能提取 XSS 样本的序列关系但是忽略了脚本代码的局部特征。由于 LSTM 在93网络新媒体技术2023 年提取文本特征时只能处理下文对上文的依赖关系,无法提取下文对上文的依赖关系,
40、并且使用 LSTM 存在长样本记忆消失的问题。而单独使用 CNN 则不能充分提取 XSS 样本中的序列关系。因此,将 CNN 神经网络和 BiLSTM 神经网络结合,融合两者优点学习样本的局部特征和上下文依赖特征,并通过 Attention 注意力机制加权计算来解决长序列效果差的问题,并融合 BERT 预训练的特征向量加速模型训练提高检测效果,以此来实现 XSS 检测模型的构建。图 4BERT 模型结构图图 5改进模型架构图3检测模型的训练与验证3.1检测模型流程为了实现对 XSS 的检测,设计了如图 6 所示的检测流程。图 6XSS 检测流程图3.2检测模型训练训练软件 Python 3.6
41、.0,TensorFlow 1.14.0,Keras 2.2.5,Gensim。TensorFlow 是由谷歌开发并开源的端到端深度学习框架,能够帮助开发者构建许多深度模型。Keras 是基于 TensorFlow 使用 Python 编写的开源人工神经网络库,能够方便调用 API 来构建复杂的神经网络模型。045 期吴金宇 等:基于深度学习的跨站脚本攻击检测技术的研究Gensim 是一款开源的第三方 python 工具包,在自然语言处理领域大量的使用,支持 TF-IDF 和 Word2Vec 等大量文本算法,能够在无监督的状态下通过大量原始文本学习到文本的隐层向量表达。3.3模型超参数调整(
42、1)CNN 结构的调整。不同的 CNN 结构会对模型的检测性能产生影响,本文设置了 3 组对比实验,分别为 1 个卷积层加1 个池化层(1+1 结构),2 个卷积层加 1 个池化层(1+2 结构),2 个卷积层和 2 个池化层(2+2 结构),一个卷积层后面接一个池化层,经过实验对比,采用 2+1 结构时检测效果较好,表 4 所示。表 4CNN 结构数据对比结构ACCF1FPR1+199.23%98.81%0.17%2+199.73%98.94%0.12%2+299.57%98.54%0.23%(2)损失函数的调整。损失函数是用于衡量模型所做出的预测离真实值(Ground Truth)之间的偏
43、离程度25,常用来评价模型的训练效果,本文尝试了 4 种损失函数。均方误差损失(Mean Square Error,MSE):预测值 f(x)和样本真实值 y 之间距离平方的平均值,yi和f(xi)分别表示第 i 个样本的真实值和预测值,m 为样本个数,如式(7)。MSE=1mmi=1(yi-f(xi)2(7)平均绝对值误差损失(Mean Absolute Error,MAE):目标值和预测值之差绝对值的和,表示了预测值的平均误差幅度,如式(8)。MAE=ni=1|yi-ypi|n(8)二分类交叉熵(Binary_crossentropy):计算预测值和真值的二分类交叉熵模型,最后需要预测的结
44、果只有 2 种情况,对于每个类别的预测得到的概率为 p 和 1-p,yi表示样本的 label,正类为 1,负类为 0;pi表示预测为正类的概率,如式(9)所示。Loss=-1Ni(yi log(pi)+(1-yi)log(1-pi)(9)交叉熵损失函数(Categorical_crossentropy):计算预测值和真值的多类交叉熵,M 为类别的数量,yic符号函数(0 或 1),如样本 i 的真实类别等于 c 则取 1,反之取 0,如式(10)。Loss=1NiLi=-1NiMc=1yiclog(pic)(10)选择以上 4 种损失函数进行实验,结果图 7 可知,采用 Categorica
45、l_crossentropy 函数时模型准确率最高,误报率最低,检测性能最好,所以采用 Categorical_crossentropy 作为损失函数。(3)优化器的选择。优化器是一种是否能更新和计算网络参数使损失函数最小(或最大)的一种方法,优化器的选择直接影响 loss 的值,影响模型的训练和收敛26。为了找出合适的优化器共选择了 4 种常见的优化器进行对比实验研究,分别为 Adam、SGD、AdaMax 和 Adagrad。实验结果如图 8 所示,SGD 在 4 种方法中 loss 曲线下降的很慢,Adam、AdaMax 和 Adagrad 3 者的表现差不多,Adam 在 loss 曲
46、线的下降中表现较好,所以选择 Adam 作为优化器。3.4检测训练结果分析优化的模型除了使用 1D-CNN 和 BiLSTM 串联提取样本特征外,还增加通过 BERT 预训练模型得到的特征向量 feature_bert,将两者的特征向量拼接后输入到全连接层再通过 Softmax 函数进行二分类操作27。增加特征向量能够提高模型对于样本的特征提取,提高模型的检测能力,加速模型的训练收敛,提高检测效果。结合模型检测的复杂度,考虑到 XSS 样本本身会出现大小写混淆策略来躲避检测,为了更好的提取特征,采用 BERT-base-uncased 的预训练模型,语言种类为英文,网络结构为 12-layer
47、,768 个 hidden,12 个14网络新媒体技术2023 年heads,参数规模为 110 M。将改进模型以及只使用 BERT 进行分类的模型进行对比实验,比较发现,BERT-base 模型效果最差,改进模型在准确率、召回率、精准率和 F1 值均表现很好。使用 ADtree、ADboost 和 SVM 这 3 类常见的机器学习方法,使用标准数据集 D1 进行训练和性能对比。检测模型的性能与这 3 种传统机器学习方法相比,在准确率、召回率和误报率方面均有较好的表现,性能更优。同时基于深度学习的检测模型相比较人工提取特征的方式避免了人为特征选择,更适合 XSS 检测。图 7优化器数据对比图图
48、 8实验结果对比图与其他深度学习模型比较,从表 5、表 6 检测结果来看,改进检测模型的检测 XSS 的效果更优,拥有更高的准确率和召回率,误报率也是几种深度模型中最低的,改进的模型达到了研究目标中准确率、召回率、精确值均 98%的目标,误报率低至 0.12%也符合研究目标要求。表 5机器学习方法与优化模型的性能对比检测模型ACCPF1ADtree93.85%93.66%93.61%ADboost94.22%93.91%93.92%SVM98.91%97.26%98.12%改进模型99.73%99.42%99.18%表 6与其他深度学习模型对比检测模型ACC/%P/%R/%F1/%FPR/%改
49、进模型99.7398.9499.4299.180.12CNN99.2197.7997.5597.670.50LSTM99.1797.7197.3897.550.53BiLSTM99.2598.0097.5597.770.50CNN 联合 LSTM99.4198.1298.3698.240.33从表 6 的多个数据对比可以看出改进的检测模型总体最优。3.5改进的检测模型的验证为了检验改进模型在实际网络环境中的检测效率,使用兰云公司提供的在实际生产环境中获得的数据集 D2 进行测试,D2 数据集包含 1 000 个 XSS 攻击样例和 1 000 个正常样例。以知名的安全漏洞识别Web 应用 DV
50、WA(Damn Vulnerable Web Application)为基础进行了检测系统的搭建和部署,可以有效实现对 Web 应用程序的流量进行实时收集、存储和检测,为实际环境中的攻击检测系统的部署和应用提供了思路。(1)检测架构设计与功能模块。基于深度学习的改进模型训练封装好后应用到实际场景中,搭建了一套 XSS 攻击检测系统,可以实时检测 Web 流量并进行响应,系统架构见图 9,功能模块图见图 10。(2)系统测试与分析。靶机中配置了 Web 异常测试应用 DVWA,DVWA 和本文搭建的基于深度学习的XSS 攻击检测系统架构,DVWA 是一个使用 PHP/MySQL 搭建的 Web