注意力机制和BiLSTM在SQL注入检测中的应用

2023-07-19 09:04孟顺建李亚王海瑞朱贵富王清宇
化工自动化及仪表 2023年3期
关键词:注意力机制深度学习

孟顺建 李亚 王海瑞 朱贵富 王清宇

摘 要 针对目前SQL注入检测方法检测效率和检测准确率不高的问题,提出了一种基于注意力机制的检测模型Att?BiLSTM。首先,对收集到的数据集在预处理后采用RoBERTa进行词嵌入,得到融合上下文信息的语言表征;再使用编码后的词向量在基于注意力机制的双向长短时记忆网络中进行训练,以获取数据之间的关联性,得到忽略无关噪声信息、关注重点信息的特征表征;最后,将融合了注意力信息的输出在全连接层和softmax层进行分类或反向传播给训练层更新参数。实验结果表明,基于注意力机制的SQL注入检测模型有效提高了检测精度,准确率为99.58%,召回率为99.64%,与原始BiLSTM相比,准确率和召回率分别提高了0.52%和0.28%,与BiRNN相比,准确率和召回率分别提高了6.18%和6.91%。

关键词 SQL注入检测 深度学习 BiLSTM 注意力机制

中图分类号 TP309   文献标识码 A   文章编号 1000?3932(2023)03?0348?08

基金项目:国家自然科学基金项目(61863016,61263023)。

作者简介:孟顺建(1995-),硕士研究生,从事WEB安全、机器学习的研究。

通讯作者:朱贵富(1984-),工程师,从事教育大数据、机器学习和智能技术的研究,zhuguifu@kust.edu.cn。

引用本文:孟顺建,李亚,王海瑞,等.注意力机制和BiLSTM在SQL注入检测中的应用[J].化工自动化及仪表,2023,50(3):348-355.

数据库技术是信息技术领域的核心技术之一,几乎所有的信息系统都需要使用数据库系统来组织、存储、操纵和管理业务数据。数据库技术在给各企业带来便利的同时也带来了数据安全问题,SQL注入[1]攻击是影响WEB应用程序安全运行和数据安全的原因之一。非法用户会利用WEB应用程序的这一安全漏洞,在输入字符串中拼接恶意SQL指令,以达到注入目的。若应用程序设计不良,忽略了检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,从而使数据库遭到破坏或入侵。因此,数据库的安全面临着严峻的挑战。

SQL注入检测能够降低应用程序遭受此类攻击的风险,提高数据库的安全性和风险应对能力。近年来,数据库安全领域中SQL注入攻击的方式越来越复杂,导致传统检测方法难以应对这种情况。在国外,关于SQL注入防御的研究起步较早,目前比较成熟的检测方法主要有黑名单匹配法、SQL DOM树检测法、动态检测法、静态检测法以及动静相结合的检测法[2,3]等。随着机器学习的兴起,很多人也将机器学习的方法应用到了SQL注入检测中,LI Q等提出了一种基于长短期记忆(Long Short?Term Memory,LSTM)的SQL注入检测方法[4],并通过数据传输信道生成大量正样本,有效解决了正样本不足引起的过拟合问题,同时还提高了攻击检测的准确性,降低了误报率。FAROOQ  U将4种梯度提升机应用于SQL注入检测中[5],并证明了轻量的梯度提升机(Light Gradient Boosting Machine,LGBM)具有最好的检测率。XIE X等提出了一种基于弹性池化的卷积网络SQL注入检测方法[6],该方法可以输出固定的二维矩阵而不截断数据,能够识别新的攻击,而且更难被绕过。

现有的检测方法大多使用从简单预处理后的完整攻击语句中提取的特征进行检测,忽略了词嵌入时的上下文信息和训练过程中无关噪声的影响,这导致模型没有关注到重要的特征,而是对所有的特征一视同仁。针对上述问题,笔者在文本语言表征时使用了RoBERTa进行词嵌入,得到了融合上下文信息的词向量特征表征[7],同时在双向长短时记忆网络(Bi?direction Long Short?Term Memory,BiLSTM)中加入了注意力机制,改善了模型对重要特征的敏感度,忽略了一些噪声数据,有助于提高SQL注入攻击检测的准确率。

1 注意力机制

1.1 Encoder?Decoder模型

Encoder?Decoder(编码器-解码器)模型是一个模型构架,在这个框架下可以使用不同的算法来解决不同的任务,循环神经网络(RNN)[8]下的Encoder?Decoder模型架构如图1所示。

图1中,x是输入向量,h(i=1,2,…,n)是编码器RNN的隐状态,h′、y(t=1,2,…,m)分别是解码器RNN的隐状态和输出,EOS用作结束标志。编码器和解码器之间有一个共享的上下文向量c,即解码器首先根据c和h′解码得到y,然后使用y、h′和c解码得到y,以此类推,即可得到输出序列y,y,…,y。此处c的长度是固定的,因此会产生信息丢失问题。将所有的信息压入长度固定的向量中会产生两个弊端:一是语义向量无法完全表示整个序列的信息;二是先输入的内容携带的信息会被后输入的信息稀释掉。输入序列越长,这个现象就越严重。这就使得在解码开始阶段就没有获得足够的输入序列信息,解码的准确度因此也就降低了。

1.2 注意力模型

注意力机制可抽象为一种通用的不依赖于具体框架的思想,其核心目标是从众多信息中选择出对当前任务目标更关键的信息。Encoder?Decoder框架的注意力模型,编码器使用RNN、CNN[9]等神经网络提取输入序列的特征,计算得到编码器的隐状态h,而注意力模型中的上下文向量已不再是共享同一个上下文向量c,而是不同的时间步t使用不同的上下文向量c。因此在注意力模型中,t时间步的解码器使用上下文向量c、隐状态h′和上一时间步的输出y计算得到当前时间步的输出y。带有注意力机制的RNN模型和注意力机制模型分别如图2a、b所示。

从图2可知,上下文向量c可以关注到输入中最相关的部分,也就是“注意力”[10],c的计算式如下:

其中,α是解码器在计算第t个预测输出值y时,分配给编码器第i個隐状态h的注意力权重系数。α计算方式有很多种,不同的计算方式代表不同的Attention模型,常见的计算模型主要有加性模型、点积模型、缩放点积模型和双线性模型4种。

Attention模型的计算步骤如下。

其中,函数f可以是任意的非线性函数,如tanh、ReLU等。

f. 根据当前时刻解码器的隐状态h′、上一时刻解码器的输出y和当前时刻的上下文向量c,计算当前的输出y:

其中,g为计算当前时刻输出y的函数,在Attention模型中,g通常是一个全连接神经网络。

g. 重复步骤c,直到得到第m时间步的输出序列y。

2 实验模型

2.1 SQL注入过程

SQL注入按注入类型可分为数字型注入、字符型注入和搜索型注入[11],其中以数字型注入和字符型注入居多,也更容易被攻击者发现和利用。在WEB程序中,攻击者的目的只有一个,即构造非法输入,绕过程序限制,把非法SQL命令带入后台执行,利用数据库的特性获取更多的信息或更大的权限。

从攻击者的攻击顺序看,一次完整的攻击包括了寻找注入点、判断注入点的注入类型、获取目标数据库信息和操作目标数据库4个阶段[12],以字符型注入为例,其攻击流程如图3所示。

寻找注入点。可能的注入点一般存在于登录页面、查找数据页面或添加数据页面等用户可以访问数据库数据的地方。最常用的寻找SQL注入点的方法就是寻找形如“http://www.xxx.xx/?id=XX”的链接,其中“XX”可能是数字,也可能是字符串。

注入点注入类型判断。注入点注入类型常见的主要有数字型注入类型和字符型注入类型,现以字符型注入类型为例进行说明,其判断流程如图4所示。

由图4可知,字符型注入点类型的判断主要分为3步,分别是加引号、加“and 1=2”和“and 1=1”,加引号是为了判断注入点的是单引号字符、双引号字符还是其他字符类型,加“and 1=2”和“and 1=1”是为了判断SQL指令是否会带入后台数据进行执行,只有“and 1=1”回显正常、“and 1=2”回显异常才是存在注入漏洞。在使用后两种方法判断注入类型时,还需要用到SQL中的注释,以闭合name=XX后面的单引号(也有可能是双引号或其他)。MySQL中有3种形式的注释符,分别是?? (后面有一个空格)注释符、#注释符和/**/注释符。满足以上3点的注入点,基本可以认定其注入类型为字符型注入。

获取数据库信息。找到注入点并判断注入点的类型后,就可以构造SQL语句进行数据库信息的获取,在获取数据库信息的过程中,可以使用联合查询获取WEB应用程序可回显的显示位,然后使用database()、version()等特殊函数获取数据库的信息,使用information.schema等特殊库获取数据库名,然后就可以获取到数据库中的表、表中的字段等信息。

操作数据库。当获得数据库中管理员的用户名和密码后,攻击者可以在该阶段执行一些数据库操作,如修改数据库中特定表的数据、用户的权限、添加一些非法用户甚至可以导出数据库信息或是删除数据库数据等。

2.2 数据收集及预处理

网上现存的SQL注入样本数量较少,笔者前期从相关文献中收集了约4 000条正样本语句用于实验,这些样本数据由于数量太少,SQL注入种类覆盖不全面,导致模型不能提取到完整的SQL注入特征。为了提高模型的精度和抗干扰能力,又通过数据仓库、基于攻击树的SQL攻击语句(正样本)生成方法及在SQLI?Lab上运行SQLmap和tamper脚本收集并筛选出23 000条SQL注入样本数据,收集到的数据涵盖了布尔盲注、时间盲注、报错注入、联合查询注入、堆查询注入及宽字节注入等常见的SQL注入类别。加上前期工作采集的数据,共计收集到了27 000条数据用于实验,其中正样本15 000条,负样本12 000条,正负样本的比例为5∶4。收集到的数据中存在一些经过编码的文本和很多无意义的符号,数据预处理阶段主要是将经过编码的文本解码为UTF?8编码,并对数据集进行规范化处理和数据清洗,方便后面的分词和词嵌入。文本中存在的解码前后的SQL语句对应形式见表1。

SQL语句解码后,还需要对数据集进行泛化处理,得到清洁的数据,尽可能地减少噪声数据对模型的影响,泛化处理主要步骤如下:

a. 将样本数据全部转换为小写;

b. 去掉样本数据中的域名、协议及端口等字段,只留下URL中的数据荷载部分;

c. 将十六进制数字泛化为0x00,其他数字泛化为0;

d. 将时间、日期泛化为固定字符串“dtime”。

2.3 词嵌入与数据集

实验中使用RoBERTa进行词嵌入训练,BERT(Bidirectional Encoder Represe?ntation from Transformers)是一种预训练语言模型,克服了以往单词被表示成唯一索引值,或使用神经网络模型生成词嵌入存在的一些缺点,RoBERTTa会根据上下文的不同动态地生成单词的表示形式,而不是固定不变的。例如在SQL注入样本集中,有如下两个样本:

负样本   select * from users where username=xxx and pwd=xxx

正样本   username=xxx union select 1,2,group_concat(concat_ws(‘0x7e,username,password))from security.users ?这里如果使用神经网络模型(如word2vec)正样本和负样本中的“select”都会被表示成相同的词嵌入,而使用RoBERTa模型进行词嵌入,每个SQL语句中的“select”将生成不同的词向量,除了捕获诸如多义词之类的明显差异外,上下文不同的单词嵌入还能捕获其他形式的信息,这些信息可产生更准确的特征表示,从而带来更好的模型性能。

在进行词嵌入前还需要对语料进行分词,分词使用正则表达式对文本进行分割,并保留所有形如?? 、、”、(及??后的空格等在内的所有特殊字符,在分词之后为了让RoBERTa识别出句子的范围和方便分类还需要在句子的前后分别插入和标识。为了防止后续数据集中出现新的特征词和统一SQL句子的长度,还需要在分词后的语料中添加,分别用于表示未知词的词嵌入和填充词的词嵌入。最后把分词后的语料放入RoBERTa中训练得到维度大小为768的词嵌入表示。

通过分词过程,整个SQL数据集中99%以上的SQL语句长度都在150个单词范围内,各段语句长度占比如图5所示。

由图5可知,SQL注入数据集中仅有0.32%的语句在分词后长度超过150,因此在制作数据集时,对每个SQL语句进行截断和填充处理,不足150词长度的使用进行填充,超过150词的进行截断处理,遇到新词时使用代替,最终得到的数据集大小为27000×150×768。

2.4 模型搭建及注入检测

實验模型是基于注意力机制的BiLSTM神经网络模型——Att?BiLSTM,编码器和解码器均采用了BiLSTM[13],BiLSTM是RNN的一种,由前向LSTM和后向LSTM结合而成[14,15],能够较好地捕捉到较长距离的依赖关系,不但能编码从前到后的信息,还能编码从后到前的信息,对处理时序数据具有很好的效果。

Att?BiLSTM模型如图6所示,实验中使用了RoBERTa进行词嵌入,词嵌入后的SQL文本向量在BiLSTM表示的编码器层中训练得到SQL文本特征向量的隐状态,该隐状态和解码器中的第t个时间步的隐状态在Attention层中计算得到第t个时间步的上下文向量(在训练初期,编码器中的第1个时间步的隐状态是随机初始化的),最后把具有上下文信息的上下文向量和解码器层的隐状态在解码器BiLSTM中融合后,送入全连接层即可得到模型的输出。

模型中采用了RoBERTa词嵌入和Attention机制,在词嵌入表征能力提升的同时,也考虑了序列中不同元素的重要程度,有效提升了模型的预测精度。

3 实验效果

实验从27 000条训练数据集中,按照8∶2的比例抽取训练集和测试集,具体的训练数据分布见表2。

3.1 评价指标

为了验证模型的检测能力,笔者使用预测准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1值4个常用指标进行模型性能评估。这些指标可以通过表3所示的混淆矩阵计算得到。

Accuracy表示的是正确分类的样本占总样本的比例:

Precision表示的是模型预测为正样本中,实际也为正样本所占的比例:

Recall表示的是所有正样本中,模型预测为正样本所占的比例:

F1是精确率和召回率的调和平均数,用于评估模型的质量,结果越接近1说明模型越好:

3.2 实验结果及分析

在表2所示的数据集下,使用Adam优化器进行迭代学习,经过5万次的迭代训练,其各项性能指标如图7所示。

从图7中可以看出,模型的收敛速度很快,大约迭代到4 000次左右时,模型的各项指标就已接近99%。在后面的迭代训练中,召回率、精确率和F1值都有略微的波动,但波动幅度很小,其精度都能维持在99.5%左右。

在SQL注入检测中,召回率比精确率更为重要,其反映的是SQL注入样本中被模型识别为正样本和数据集中正样本的比值,这个比值越高,就说明模型对正样本的检测精度越高,也更能反映模型的优劣。因为在SQL注入检测中,模型将正样本错分为负样本比将负样本错分为正样本所带来的损失更为严重。由式(6)可知,召回率越高,则将正样本预测为负样本的概率越低,即模型对正样本的区分能力越强。从图7a可知,模型的召回率总是优于精确率的,并且召回率和精确率的精度都很高,说明模型对正负样本的区分度都很好,并不会严重偏向正样本或负样本。

准确率能衡量一个模型对新样本(也就是测试样本)的识别能力,准确率越高,说明模型将样本分类正确的数目越多,从图7b可以看出,模型的准确率为99.58%左右,对未知数据具有较好的检测能力。

3.3 实验对比

笔者使用表2数据集,在Python环境下和LSTM、BiLSTM、RNN、BiRNN、GRU、BiGRU进行对比,对比结果见表3。

同样的环境和参数配置下,笔者所使用的Att?BiLSTM具有最好的召回率和分类准确率,RNN和BiRNN的效果最差。由表3可知,虽然GRU和BiGRU在精确率方面都优于Att?BiLSTM,但Att?BiLSTM的召回率更高,达到了99.64%,分类准确率也高于GRU和BiGRU,且在SQL注入检测中更关注召回率,因为召回率更能反映SQL检测模型对正样本的识别能力。从这方面看,Att?BiLSTM模型能够更精确地检测出SQL注入语句,有效防御SQL注入攻击。

4 结束语

笔者提出的Att?BiLSTM模型,是一种基于注意力机制的BiLSTM SQL注入检测模型,并结合自然语言处理技术和RoBERTa模型对SQL语料进行分词和词嵌入,改善了SQL注入语句中的词向量表征,同时在模型中引入了注意力机制,使模型更能关注到SQL注入中的攻击特征,减少噪声数据的影响,并据此提高模型分类检测的准确率,降低误报率。从实验结果可知,引入注意力机制的Att?BiLSTM检测模型识别准确率和召回率都有明显提高,其分类准确率为99.58%,召回率为99.64%。未来工作中将对二阶SQL注入开展进一步的研究。

参 考 文 献

[1] 翟宝峰.SQL注入攻击的分析与防范[J].辽宁工业大学学报(自然科学版),2021,41(3):141-143;147.

[2] GUO Q Q,ZHANG H X.Technology System for Security Protection of Critical Information Infrastructures[J].Netinfo Security,2020,20(11):1-9.

[3] MUHAMMAD R,BASHIR R,HABIB S,et al.Detection and Prevention of SQL Injection Attack by Dynamic Analyzer and Testing Model[J].International  Journal of Advanced Computer Science and Applications,2017,8(8):209-211.

[4] LI Q,WANG F,WANG J F,et al.LSTM based SQL injection detection met?hod for intelligent transportation system[J].IEEE Transactions on Vehicular Technology,2019,68(5):4182-4191.

[5] FAROOQ U.Ensemble Machine Learning Approaches for Detection of SQL Injection Attack[J].Tehni?ki Glasnik,2021,15(1):112-120.

[6] XIE X,REN C H,FU Y S,et al.SQL Injection Detection for Web Applications Based on Elastic?Pooling CNN[J].IEEE Access,2019,7:151475-151481.

[7] 王华锋,王久阳.一种基于Roberta的中文实体关系联合抽取模型[J].北方工业大学学报,2020,32(2):90-98.

[8] SHERSTINSKY A.Fundamentals of recurrent neural network (RNN) and long short?term memory (LSTM) network[J].Physica D:Nonlinear Phenomena,2020,404:132306.

[9] 周飞燕,金林鹏,董军.卷积神经网络研究综述[J].计算机学报,2017,40(6):1229-1251.

[10] 任欢,王旭光.注意力机制综述[J].计算机应用,2021,41(S1):1-6.

[11] 赵少飞,杨帆,田国敏.基于网站系统的SQL注入解析[J].网络安全技术与应用,2019(11):28-29.

[12] 郭春,蔡文艳,申国伟,等.基于关键载荷截取的SQL注入攻击检测方法[J].信息网络安全,2021,21(7):43-53.

[13] 阮进军,杨萍.基于Att?CN?BiLSTM模型的中文新闻文本分类[J].通化师范学院学报,2022,43(12):65-70.

[14] HOCHREITER S,SCHMIDHUBER J.Long short?term memory[J].Neural Computation,1997,9(8):1735-1780.

[15] YU Y,SI X,HU C,et al.A review of recurrent neural networks:LSTM cells and network architectures[J].Neural computation,2019,31(7):1235-1270.

(收稿日期:2022-08-17,修回日期:2023-04-11)

Attention Mechanism and BiLSTM Application in SQL Injection Detection

MENG Shun?jian, LI Ya, WANG Hai?rui, ZHU Gui?fu, WANG Qing?yu

(Faculty of Information Engineering and Automation , Kunming University of Science and Technology)

Abstract   Aiming at the poor detection efficiency and accuracy of SQL injection detection methods, a detection method based on attention mechanisms Att?BiLSTM model was proposed. Firstly, having the collected dataset preprocessed before having it embedded in the word using RoBERTa so as to obtain the language representation that incorporating contextural information; and then, having the encoded word vector trained in the two?way long?short?term memory network based on the attention mechanism to obtain the correlation between the data, including the characteristic representation of ignoring irrelevant noise information and focusing on theimportant information; and finally, having the output which incorporating attention information classified or backpropaged to the training layer to update parameters. Experimental results show that, the SQL injection detection model(Att?BiLSTM) based on attention mechanism effectively improves the detection accuracy by 99.58% and a recall rate of 99.64%; compared with the original BiLSTM, the accuracy and recall rate are increased by 0.52% and 0.28%, respectively, and compared with BiRNN, the accuracy and recall rate are increased by 6.18% and 6.91%, respectively.

Key words   SQL injection detection, deep learning, BiLSTM, attention mechanism

猜你喜欢
注意力机制深度学习
面向短文本的网络舆情话题
基于自注意力与动态路由的文本建模方法
基于深度学习的问题回答技术研究
基于LSTM?Attention神经网络的文本特征提取方法
基于注意力机制的双向LSTM模型在中文商品评论情感分类中的研究
InsunKBQA:一个基于知识库的问答系统
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望