1、942023.06人工智能0 引言随着 Web 应用的飞速发展以及 5G 网络的快速普及,数以百万计的人们加入到互联网的浪潮中来,社交媒体、海淘网购、直播平台等互联网服务变得愈发流行。互联网给人们生活带来便利的同时,也带来了网络安全问题。Ajax、JavaScript等动态交互技术的应用,使得客户端产生大量可交互信息,在为网络用户提供更好体验的同时也加重了网络安全风险,给恶意用户或攻击者提供了便利。跨站脚本1(Cross-site Script,XSS),是指攻击者通过注入恶意脚本,从受害者的浏览器中窃取个人隐私信息或进行其他恶意行动的一种攻击方式2,极大地威胁着网络环境安全。尽管软件开发人员
2、在追求网络安全编程方面投入了大量精力,但 XSS 仍然是一个网络安全领域尚未完全解决的重大问题3。根据漏洞赏金平台 HackerOne 发布的 2020 年十大漏洞榜单(图 1),XSS 仍然是影响力最大的漏洞,占据了漏洞总数的 23%。随着 Web 应用程序的不断扩大和采用越来越先进技术进行开发,XSS 攻击的应用场景也在不断扩大,XSS 攻击的方法和方式也变得更加复杂和高级,因此 XSS 攻击的检测技术4也需要不断研究。传统的防御 XSS 攻击的方式是编写 XSS 脚本过滤器,过滤器会将请求中的输入信息根据固定的正则表达式5进行过滤。如果检测到对应规则的信息,过滤器就会将该信息认为是非法信
3、息,从而进行拦截。由于攻击者的攻击方式和手段一直在更新进步,因此该方式很容易被攻击者绕过,因此要不停地更新过滤器的校验规则,这不但增加了软件开发人员的工作量,而且防御效果也不理想。在防御 XSS 攻击方面,编写 XSS 脚本过滤器的传统方式已经不能满足不断升级的攻击手段。李洁6等人提出一种基于动态污点分析的 DOM XSS 漏洞检测算法,通过构造 DOM模型和修改 Firefox Spider Monkey 脚本引擎,利用动态的、基于 bytecode 的污点分析方法实现了 DOM XSS 漏洞的检测,该算法能有效检测网页存在的 DOM XSS 漏洞。王夏莉7等人通过对 XSS 攻击行为尤其是
4、 XSS 蠕虫的传播行为进行深入分析,设计并实现了一套新的基于行为的客户端 XSS 防范方案Stop XSS。刘为8针对目前难以检测未知漏洞的问题,设计了一种基于服务器过滤删除机制的上下文无关文法测试数据动态生成算法,能对预定义测试数据无法发现的未知漏基于深度学习的 XSS 攻击检测研究杨达霏1 姜潇蔚21.中博信息技术研究院有限公司;2.中国邮政集团有限公司南京市分公司摘要:互联网服务业务飞速发展的同时也伴随大量的Web攻击,其中XSS攻击长期位于各大漏洞排行榜的前十位,严重威胁着 Web 系统的安全。当前防御 XSS 的手段主要是针对跨站脚本所采用的特定规则进行过滤,然而这种防御手段是静态
5、的,对于未知的恶意请求很难察觉。因此本文提出了一种文本卷积神经网络(TextCNN)和长短期记忆网络(LSTM)相结合的方法,实现对 XSS 攻击的智能检测。该方法将大量经过词向量化处理的正反样本输入到 TextCNN+LSTM 模型中进行训练和测试。结果表明本文提出的 TextCNN+LSTM 模型比 LSTM 和 TextCNN 模型具有更好的效果。关键词:XSS;文本卷积神经网络;长短期记忆网络;攻击检测图 1 HackerOneTopTen 2020 版952023.06人工智能洞进行有效检测。由于漏洞的快速更新和复杂性,这些算法可能已经过时或无法适用于最新的安全漏洞。基于深度学习的检
6、测方法可以更好地处理复杂的攻击代码,并学习到更为抽象和高级的特征表示,从而提高检测的准确率和鲁棒性。此外,由于深度学习是一种端到端的学习方式,因此不需要从原始数据中手动提取特征或设计规则,可以在很大程度上克服传统方法中需要人工提取特征和进行特征描述的局限性。本文提出使用 TextCNN+LSTM 构建机器学习模型,通过针对样本数据的深度学习,提取样本中XSS特性,提升预测XSS攻击的命中率。1 XSS 攻击分类XSS 攻击是向 Web 页面插入恶意 HTML 代码或 JavaScript脚本,导致用户访问该 Web 页面时触发恶意脚本,从而使用户遭受攻击。根据恶意脚本注入的方式,XSS 攻击通
7、常可以分为以下三类。1.1 反射型 XSS 攻击反射型 XSS 攻击又称非持续 XSS 攻击,攻击者通过特定手法,诱使用户访问一个含有恶意代码的 URL,当受害者点击该 URL 时,恶意代码会直接在受害者的浏览器中执行,窃取用户的数据并发送给攻击者。该攻击主要是为了窃取受害者的 cookie,通过 cookie 可以绕过网站的认证,从而获取受害者更多信息。这种攻击不需要存储在服务器端。1.2 存储型 XSS 攻击存储型 XSS 攻击是指攻击者将恶意脚本或代码提交到存储在服务器端的数据库或文件中,当其他用户浏览应用程序时,他们将读取这些受感染的数据并在受感染的页面中执行恶意脚本,导致浏览器受到攻
8、击者的控制。该类型攻击可以使攻击者窃取受害者的信息或执行恶意操作,例如窃取用户cookie 或卡密、篡改页面内容、转移资金或实施网络诈骗等。存储型 XSS 攻击具有持久化的特点,因此比反射型 XSS 攻击影响范围更大。1.3 基于 DOM 的 XSS 攻击DOM-based XSS 攻击是一种针对网页客户端的攻击,也称作基于 DOM 的跨站脚本攻击。它利用现代网页技术中JavaScript 脚本库处理用户输入数据的行为触发浏览器执行恶意代码。攻击者通过利用客户端的特定漏洞或错误,将恶意脚本注入网页的 DOM(文档对象模型)中,当用户在该网页进行交互操作时,恶意脚本会被浏览器执行,达到攻击者的恶
9、意目的。该类型攻击不需要将恶意脚本存储在服务器端,因此在其他 XSS 攻击方式都被防范的场景下,仍有可能发起攻击。2 模型设计2.1 TextCNN卷积神经网络(Convolutional Neural Networks,CNN)的优势在于针对目标的特征进行识别分类,其可以按阶层结构对输入信息不断进行特征提取,从局部的特征到总体的特征,最终达到准确识别目标的目的。TextCNN 是由 YoonKim 于 2014 年提出的一种将 CNN 应用于自然语言分类的算法9。其通过设置不同的卷积核大小,实现针对不同大小的局部特征的提取,使提取到的局部特征更多样。TextCNN 具有网络结构简单、参数项少
10、、文本特征的抽取能力强、训练速度快等特点。TextCNN可分为如下4层:2.1.1 卷积层为了更全面地提取特征,本文使用卷积核大小分别为 3,4,5的三个卷积核。卷积核可以视为一组固定的小的权重矩阵,对于输入数据中的每一个小的区域,卷积操作可以通过对应元素的加权求和,得到一个新的输出值。通过不断的卷积操作,卷积层能够寻找和提取输入数据的局部特征,公式如下:si=f(iwixi+b)(1)其中 X 为一个卷积窗口所得到的特征矩阵,下标 i 表示模型结构中第 i 个需要执行卷积操作的数据矩阵,w 表示进行卷积操作的卷积核,b 为偏执项。f 为激活函数,采用非线性映射的方式对数据进行卷积操作,从而增
11、强卷积的特征效果。选取 ReLU(Rectified Linear Unit)函数作为激活函数,其可以更有效率地实现梯度下降以及反向传播,同时避免梯度爆炸和梯度消失。ReLU(x)=maximum(0,x)(2)从上述公式可以看出,ReLU 函数的非线性特性可以使得神经网络更好地学习非线性模式,并且训练速度更快。此外,ReLU 函数也可以提高模型的稀疏性,使得一些神经元的输出为0。这种稀疏性可以降低模型的复杂度,减少过拟合的风险。2.1.2 池化层池化(Pooling)的作用是将特征进行压缩,池化层能够在保留输入数据主要特征的同时,减少参数量,控制过拟合和网络复杂度,并且增强了网络的鲁棒性和泛
12、化能力,因此被广泛应用于卷积神经网络的设计和优化中。通过取局部最大值或平均值,池化操作能够保留输入数据的主要特征,减少冗余信息,同时一定程度上可以使模型对输入数据的平移和旋转变换具有一定的不变性。本文选择 Max-Pooling 的池化层,即选取池化窗口中的最962023.06人工智能大值代表池化窗口区域的特征。Max-Pooling 能够降低因卷积层参数误差造成估计均值的偏移;同时能够起到降维的效果,减小模型参数,去除冗余信息,在一定程度上防止过拟合的发生。2.1.3 Dropout 层过拟合问题是深度学习神经网络中的一个常见问题,网络模型越复杂,训练数据越小,越容易发生过拟合问题。Drop
13、out2可以很好地解决过拟合问题,在深度学习训练过程中,随机将神经网络中的神经单元移除,使一部分神经元工作,另一部分神经元不工作,从而使神经网络结构变得更稀松。Dropout 层会随机选择一些神经元丢弃,并在下一层中使用剩余的神经元。由于每次迭代时丢弃的神经元都是随机选择的,因此每次迭代的网络结构都是不同的。没有被删除的部分的参数得到更新,而被删除的神经元参数保持之前的状态,暂时不参加神经网络的计算,也就不更新权值,以达到避免过拟合、增加模型泛化的目的。这种方式可以有效地防止过拟合的发生,一定程度上实现了正则化的效果。2.1.4 全连接层卷积层获取到的是局部特征,全连接层则是将获取到的局部特征
14、重新通过权重矩阵组装成完整的结果。全连接层公式如下:h(x)=f(W Tx+b)(3)其中,h(x)表示最后的输出,f(x)表示激活函数,W 表示权重矩阵,X 为训练样本,b 为偏执项。根据公式可知,全连接层就是与上一层的所有节点依据权重进行关联,以此把卷积层和池化层中具有类别区分性的局部信息整合起来。为了提升 CNN 网络性能,第一个全连接层的激活函数采用 ReLU 函数。最后一层全连接层作为输出层需要将特征数据进行整合、归类,因此采用 softmax 逻辑回归进行分类。通过softmax 分类器,就能够使得特征数据的差距进一步拉大,使得分类效果更加明显,从而实现 XSS 特征的分类预测。2
15、.2 LSTM长短期记忆网络(Long short-term memory,LSTM)是循环神经网络(RNN)的一种改进模型,解决了长序列训练过程中的梯度消失和梯度爆炸的问题。LSTM 通过精心设计的称为“门”的结构来去除或增加信息,有效地决定哪些信息应该被遗忘,哪些信息应该被记忆。这一特性使得 LSTM 能够获取文本序列中长距离依赖的特征。LSTM 相比 RNN 引入了细胞状态的概念,LSTM 的细胞状态会决定哪些特征应该被留下来,哪些特征应该被遗忘。LSTM 通过控制门机制(Gate Mechanism)来有效地选择性记忆和遗忘之前的信息,从而构建了一个具有长期记忆和短期记忆的模型,解决了
16、传统 RNN 模型只能维持一个短期记忆链的问题。具体地,LSTM 在每一个时间步接收输入,以及前面的状态作为输入,经过 input gate、output gate、forget gate 等部分的选择处理,产生一个新状态,同时将这个状态提供给下一个时间步。LSTM 中 forget gate 的计算公式如下:ft=(Wf*ht-1,xt+bf)(4)其中 是 Sigmoid 函数,Wf是遗忘门的权重矩阵,bf为偏执项。输入门决定了当前时刻的特征向量 xt有多少信息能够保存到细胞状态中。input gate 的计算公式如下:it=(Wi*ht-1,xt+bi)(5)其中 是 Sigmoid 函
17、数,Wi是输入门的权重矩阵,bi为偏执项。计算完 forget gate 之后,就可以根据其结果来遗忘或保留上一个时间步的状态信息。接下来,通过 input gate 和 output gate 的控制(即新增的短时刻 memory cell),使得 LSTM 能够保留、选择和更新适当的历史信息,从而产生具有长时记忆的能力。output gate 的计算公式如下:ot=(Wo*ht-1,xt+bo)(6)最终得到的即为 LSTM 网络的长时刻的细胞状态,并会在下一时刻传递到下一层的 LSTM 中。以上就是 LSTM 的各个“门”的计算公式。LSTM 能够缓解梯度消失和爆炸问题,使得模型能够处理
18、长序列数据,并且在时间上产生了相对较为稳定的表现,这使得它在自然语言处理、语音识别等领域得到了广泛的应用。2.3 TextCNN+LSTMTextCNN 模型在提取局部特征的多样性方面具有较大优势,但因为 XSS 的文本长度可能会很长,只通过 TextCNN 很难获取到长距离特征之间的依赖关系。而 LSTM 的记忆机制能够对全局特征进行记忆,从而在长文本特征的处理与获取上能够有较好的发挥。因此本文将 TextCNN 和 LSTM 模型相融合,既能够提取XSS的局部特征,又可以提取出全局特征。TextCNN+LSTM 神经网络模型先利用不同卷积核大小将XSS 分成不同大小的特征性文本,再利用池化
19、层减少文本特征的维度,使用 Concatenate 将不同池化后的特征进行融合,再通过 Dropout 操作防止经过融合后的特征发生过拟合现象,接着将得到的特征向量作为 LSTM 神经网络的输入,由 LSTM对特征向量进行进一步的提取,最后将LSTM连接到全连接层,映射到最终的分类结果中。TextCNN+LSTM 模型结构如图 2 所示,相比单一的 CNN模型,TextCNN+LSTM 模型通过 LSTM 层增加了对文本序列972023.06人工智能中长期依赖关系的学习能力,使得模型更加适合处理自然语言数据。在实际应用中,TextCNN+LSTM 模型已经被广泛应用于文本分类、情感分析、问答系
20、统等任务中,并取得了较好的效果。图 2 TextCNN+LSTM 模型结构3 实验结果与分析实验环境包括 64 位 window10 操作系统,英特尔酷睿i7-8700 处理器,16GB 内存,Python3.8 编程语言。实验数据选取XSSED.COM网站中收集的跨站脚本攻击语句4万多条,同时从各大网站中收集约 15 万条正常的数据。收集到的文本数据不能直接用于神经网络的输入,需要对所收集到的恶意数据和正常数据进行预处理,分为规范化、分词和词向量化三个步骤。(1)规范化:所收集到的样本数据中往往携带有很多残缺、重复、错误、混淆的数据。为了提高输入数据的质量,减少特征提取工作量,保证特征向量纯
21、度,需要对收集到的数据进行规范化处理,去除噪声数据。由于攻击者会改变输入字符的大小写,所以先将数据统一大小写。之后使用url解码、Base64 解码、Unicode 解码对样本数据逐次进行解码操作,达到去除重复、不完整以及错误数据的目的。(2)分词:虽然对样本数据进行了规范化处理,但是数据中依然存在诸如数字、汉字、域名等冗余数据,会对后续的词向量化处理造成干扰。因此将样本中的数字统一替换为0,将链接转化为“http:/u”。之后使用正则表达式对样本数据进行分词。(3)词向量:本文使用嵌入式词向量模型建立一个 XSS的语义模型,通过将词嵌入空间使得语义相似的词在空间内的距离接近,让机器能够理解“
22、”“alert()”这样的 HTML 语言。将出现频次最多的 50 个单词汇总并整理成单词表,使用“UKN”表示其余单词。在使用 gensim 库实现的Skip-gram 模型中,可以通过 gensim.models.word2vec.Word2Vec类中的 wv.most_similar()方法来得到与某个单词最相似的单词,这些相似的单词可以被视为是该单词的分词。如图 3 所示,通过 Skip-gram 模型训练获得的词向量图展示了单词之间的关系。在词向量图中,语义相似的单词会聚集在一起形成一个团簇,从而揭示了单词之间概念的相似性以及联系。经过处理的单词向量可以被用于自然语言处理任务,针对
23、XSS 文本进行分类,计算 XSS 语句关联程度等。为了验证神经网络的效果,分别构建 LSTM、TextCNN 和TextCNN+LSTM 三个模型,正样本则为 XSS 攻击样本,负样本为正常样本。然后将所有样本混合打乱,训练样本为其中的 60%,其余的 40%为测试样本。然后使用训练集对分类器进行训练,使用测试集对训练后的模型进行评估。具体评估指标如下:982023.06人工智能(1)精度(precision):指分类器预测为正类的样本中,实际为正类的样本所占比例,表达如下:Precision=TP/(TP+FP)(7)(2)召回率(recall):指实际为正类的样本中,分类器预测为正类的样
24、本所占比例,表达如下:Recall=TP/(TP+FN)(8)(3)准确率(accuracy):表示分类器预测正确的样本数所占总样本数的比例,表达如下:Accuracy=(TP+TN)/(TP+TN+FP+FN)(9)(4)误报率(false positive rate):表示分类器将负样本错误地预测为正样本的样本所占比例,表达如下:FPR=FP/(FP+TN)(10)其中,TP 表示真正例(分类器将正样本正确地预测为正样本的样本数),FP 表示假正例(分类器将负样本错误地预测为正样本的样本数),FN 表示假负例(分类器将正样本错误地预测为负样本的样本数),TN 表示真负例(分类器将负样本正确
25、地预测为负样本的样本数)。根据实验结果数据绘制了表 1。从准确率比较可以看出,TextCNN+LSTM 的准确率比普通的 TextCNN 和 LSTM的准确率高。三种模型的召回率大致相同,而本文提出的TextCNN+LSTM 稍高,但不如准确率明显。误报率方面,TextCNN+LSTM 比另外两种神经网络模型的误报率少很多,说明 TextCNN+LSTM 模型可以获得更加全面多样的特征,使得检测更加准确。表 1 模型结果与比较分类模型PrecisionRecallAccuracyFPRLSTM0.96560.95810.98390.0106TextCNN0.97420.95910.97830.
26、0078TextCNN+LSTM0.99260.96410.99270.0028研究表明,TextCNN+LSTM 模型的准确率相对较高,比TextCNN 模型和 LSTM 模型都要好。这是因为,TextCNN 模型可以提取高质量的特征,但无法处理特征之间的依赖性,而 LSTM 模型在处理元数据之间的依赖性时表现卓越,但不能很好地处理输入数据的局部结构。TextCNN+LSTM 模型利用 TextCNN 提取高质量特征,并通过 LSTM 模型处理这些特征之间的顺序依赖性,从而平衡了两个维度的信息。因此,TextCNN+LSTM模型是一种有效的深度学习模型,可以将输入数据的空间结构和时间结构捕捉
27、并结合在一起,对 XSS 攻击的识别具有很高的准确性。同时,这个模型的性能表明了通过 TextCNN 处理输入数据可以提取高质量特征,并将特征与特征之间的依赖关系提取出来。4 结束语传统的 XSS 过滤器在防御未知和变形的跨站脚本攻击时显得力不从心,因此我们就可以使用机器学习算法来对 XSS攻击进行检测。由于机器学习算法能够自动提取特征、学习分类规则,并对新的输入进行预测,因此能够提高检测的准确率和召回率,为 Web 应用程序的安全保驾护航。这些深度学习模型能够自动地提取高质量的特征,并可以更准确地检测 XSS 攻击。后续可以从数据集优化、模型优化两个方面对XSS 检测模型进行改进,进一步提升
28、模型的性能。参考文献:1 古开元,周安民.跨站脚本攻击原理与防范 J.网络安全技术与应用,2005(12):19-21.2 蒲石.Web 安全渗透测试研究 D.西安电子科技大学,2010.3 潘瑾琨.跨站脚本漏洞检测技术研究 D.国防科技大学,2017.4 高能,冯登国,向继.一种基于数据挖掘的拒绝服务攻击检测技术 J.计算机学报,2006(06):944-951.5 胡军伟,秦奕青,张伟.正则表达式在 Web 信息抽取中的应用 J.北京信息科技大学学报(自然科学版),2011,图 3 词向量可视化(下转第102页)1022023.06人工智能则需要编写更多的代码和接口文件,相对开发效率低。执
29、行效率:Java 的执行效率比 Python 更高,因为 Java 程序在编译时被转换成机器代码,在运行时更为高效,Python则需要在运行时翻译成机器代码,运行效率比 Java 略低。库的丰富性:Python 社区拥有丰富的库,尤其是人工智能方面的库较 Java 更为丰富。学习难度:Python 较为简单易学;Java 则需要对面向对象编程(OOP)的概念有一定的理解,因此相对较为复杂。因此具体开发语言选择上,如要求数字员工与原有应用系统有较高的嵌入性或更高的执行效率,一般选择Java开发,其余场景可选择 Python 开发。对于大型通信行业企业,应采用基于商品化的 RPA 开发部署工具和传
30、统软件开发方式编写代码两种方法结合的方式构建数字员工。在规则清晰、数字员工操作处理的系统变化较少的内部管理流程自动化和自动化巡检运维等应用场景中,可使用商品化的 RPA 开发部署工具建设数字员工,以提升开发和部署效率;其余场景可考虑采用传统软件开发方式编写Java/Python 程序调用网页 windows 应用及人工智能应用库实现。对于中小型通信行业企业,如部署的数字员工较少,可考虑传统软件开发方式编写 Python 程序调用网页 windows 应用实现数字员工建设,因数字员工较少,可人工实现数字员工的运行监控。Python学习成本较低,建设数字员工也比较快,且相比使用商品化的 RPA 开
31、发部署工具建设数字员工,可大大降低软件采购投入和后续的软件维护费。4 结束语随着机器学习、NLP(Natural Language Processing)、语音识别、图像识别等人工智能技术的进一步发展,下一代的数字员工将借助这些技术实现更为智能化的操作,能够自主学习、适应环境变化,提高稳定性和效率;将更注重用户体验,以人类需求为出发点进行设计,实现更为人性化的操作方式;下一代的数字员工也将支持更多的场景和操作,涵盖更丰富的业务领域和操作模式。作为未来数字时代的重要组成部分,数字员工也必将会成为通信行业企业未来发展不可或缺的一部分,助力企业提高业务流程效率和客户体验,推动行业创新和发展,提升企业
32、竞争力,最终实现通信行业企业的数字化转型。参考文献:1 胡贺,任丽丽.数字员工大有可为 J.企业家信息,2022(6):3.2 易仁可,蔡宇辉,杨圣洪,等.基于浏览器扩展的RPA 系统跨域 DOM 拾取与自动化方案 J.计算机科学,2023,50(2):7.DOI:10.11896/jsjkx.220600203.3 秦海波,曹莉,叶宜修,等.RPA 流程自动化技术分析J.自动化技术与应用,2022(005):041.4 程平,邓湘煜.RPA 财务数据分析机器人:理论框架与研发策略 J.复印报刊资料:财务与会计导刊,2022(9):8.5 程平.RPA 审计机器人:理论框架与研发策略 J.会计
33、之友,2021(19):6.作者简介:战培志(1978),男,山东烟台人,高级工程师,博士;研究方向:人工智能,数字化企业建设,智慧城市。(收稿日期:2023-04-24;责任编辑:王红)26(06):86-89.DOI:10.16508/ki.11-5866/n.2011.06.014.6 李洁,俞研,吴家顺.基于动态污点分析的 DOM XSS 漏洞检测算法 J.计算机应用,2016,36(05):1246-1249+1278.7 王夏莉,张玉清.一种基于行为的 XSS 客户端防范方法 J.中国科学院研究生院学报,2011,28(05):668-675.8 刘为.基于模糊测试的 XSS 漏洞检测系统研究与实现D.湖南大学,2010.9 Kim,Y.(2014).Convolutional Neural Networks for Sentence Classification.Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing(EMNLP 2014).作者简介:杨达霏(1988),男,天津市人,助理工程师,本科;研究方向:数据挖掘,深度学习。(收稿日期:2023-03-04;责任编辑:王红)(上接第 98 页)