对抗机器学习攻击下的SQL注入检测方法

2022-04-27 11:51马宝强何俊江王运鹏
网络安全技术与应用 2022年4期
关键词:序列化预处理语法

◆马宝强 何俊江 王运鹏

对抗机器学习攻击下的SQL注入检测方法

◆马宝强 何俊江 王运鹏

(四川大学网络空间安全学院 四川 610065)

SQL注入是一种常见的Web安全漏洞,其利用方式简单,破坏力强。对抗机器学习是一种针对检测模型的攻击方法,通过改变检测样本的内容和结构,从而使得检测模型大大降低对其检测的效果。现如今有许多针对SQL注入检测模型的研究,然而多数研究未考虑对抗样本下的检测效果和防御手段,这种危害巨大的攻击手段配合对抗机器学习对Web应用的安全产生了巨大威胁。为保障检测模型的健壮性,预防该攻击手段的潜在危害,本文通过分析现有的和本文提出的对抗机器学习方法所产生的对抗样本,提出了一种新的检测方法。首先,针对MySQL数据库,文本加入了抗语法干扰的预处理操作。随后,本文通过SQL语法解析方法对SQL注入样本进行token化处理,防止语义干扰。最后引入word2vec和LSTM方法对SQL注入样本进行检测。通过实验证明,本文所提出的检测方法大大缓解了对抗机器学习所产生的危害,针对对抗样本的检测率仅下降了3.18%。

DDoS攻击流量;LSTM;MLP;结果融合;逻辑回归

1 引言

现如今,Web应用系统广泛应用于各行各业。由于此法的安全问题越来越受到工业界和学术界的重视,在这些Web安全问题中,SQL注入是一种破坏力强、利用简单、影响面大的漏洞之一。根据国家信息安全漏洞库的数据[1],SQL注入漏洞占到互联网所报告的所有Web漏洞的11.67%。

对抗机器学习是近年来的一个热点研究问题,它通过修改输入样本的结构和内容,导致分类器产生错误的分类结果[2]。大量研究证明,对抗学习可以影响到图像识别[3]、自然语言处理[4]、恶意软件检测[5]等多个领域。这种方法配合SQL注入攻击手段将会给现有的检测方法带来潜在危害,攻击者可能通过这种手段绕过安全检测产品。因此,研究对抗机器学习下的SQL注入检测方法已经迫在眉睫。

2 相关研究

近年来大量国内外专家学者提出了多种针对SQL注入漏洞的检测方法。

例如,文献[6]通过N-gram和TFID(Term Frequency Inverse Document Frequency)来将SQL语句文本中的特征词进行向量化操作,在此基础上使用SVM对输入的特征向量进行检测,在数据集上取得了较好的效果。文献[7]通过使用word2vec将文本进行向量化,通过长短期记忆神经网络(LSTM)获取词向量的上下文结构,模型取得了很好的效果。除了LSTM,其他文献[8]使用了CNN的方式进行检测。

上述研究未讨论针对对抗机器学习下的检测方法,无法保证对抗机器学习环境中模型的健壮性。

3 基于深度学习的检测方法

针对上述问题,本文使用了SQL语法分析技术,将输入的样本进行序列化处理。随后通过词嵌入方法和深度学习模型进行检测,取得了较好的检测效果和健壮性。

本文检测方法如图1所示。

图1 检测方法架构图

在样本输入检测模型前,本文首先对其进行预处理,以减少语法干扰的影响。随后,本文基于SQL语法分析技术对预处理后的样本进行序列化处理。通过抗语法干扰的预处理和语义分析方法,模型可以抵抗语法干扰和语义干扰。在获取到序列化数据后,本文通过word2vec对序列数据进行词嵌入。最后,通过长短期记忆神经网络(Long Short-Term Memory,LSTM)对向量化的样本进行检测,把输出层的结果作为最后的检测结果。

2015年北京师范大学与重庆市教育委员会、重庆市江北区人民政府协同共建“重庆市教师教育创新实验区”,旨在通过创建“大学—政府—教师进修学院—中小学校”的合作伙伴关系,构建高质量的教师专业发展支持体系,为探索新型教师专业发展模式提供实践基础。

3.1 预处理和序列化

本文中的预处理方法主要针对对抗样本的语法干扰方法,包括URL解码、内敛执行解码、语法干扰冗余去除。具体步骤如表1所示。

表1 样本预处理

样本(预处理前)样本(预处理后) URL解码1%26%261%3D11&&1=1 内敛执行/*!50000sleep(5)*/sleep(5) 冗余字符sleep 1.e(5)sleep(5)

通过利用sqlparse库,SQL语法解析器可以将样本序列化为SQL语法中的opcode,将每个词转换为所其代表的数据结构,如关键字、函数、数据类型等,样例如图2所示。

图2 样本序列化样例

通过预处理和序列化样本,模型可以很好地对抗语义干扰和语法干扰。

3.2 Word2vec

通过word2vec方法,本文将序列后化的数据映射到一个向量空间中,以便后续的检测。

3.3 LSTM

LSTM是一种特殊的循环神经网络(Recurrent Neural Network,RNN)。图3是一个典型的LSTM网络结构。一般来讲,每个LSTM的神经元由三个门结构来控制信息状态,即:(1)遗忘门:决定神经元需要丢弃和保留哪些信息;(2)输入门:决定神经元需要更新哪些信息;(3)输出门:输出神经元的预测结果。

图3 LSTM神经网络结构图

由于LSTM门结构的特性,该方法可以在自然语言处理中分析上下文结构从而获取准确的效果。该方法也被广泛应用于各种入侵检测模型中。

4 实验

为了验证本文方法的有效性,本文设计了以下三部分实验:

(2)使用本文所提出的模型对对抗样本进行检测;

(3)使用对抗样本验证文献[6]~[8]所提出模型的健壮性。

上述三部分实验的设计目的有两个。

第一,实验(1)保证本文提出模型在正常环境下的可用性和有效性,并通过对比实验保证模型的检测效果。

第二,实验(2)和实验(3)验证本文所提出模型针对对抗样本下的有效性,并通过对比实验验证本文所提出模型的健壮性。

4.1 实验环境与数据集

(1)开发平台:Arch Linux amd64;

(2)开发工具:Python3.8,Keras2.7.0,sqlparse0.4.2;

(3)实验数据集:攻击样本使用文献[8]的数据集和本文作者先前研究所产生的对抗样本。正常样本使用爬虫方法收集Alex最受欢迎的1000个站点的网络请求。本文的训练集包含24076条攻击样本和34395条正常样本,测试集包含10319条攻击样本和11596条正常样本,对抗样本的数量为11590条。本文所使用的数据集和对抗样本可从https://github.com/UnnameBao/adversarial_example_for_sql获取。

4.2 实验评价指标

TP为SQL注入攻击样本被准确检测出的数目;FN为SQL注入攻击样本被错误标记为正常样本的数目;FP为正常样本被错误判定为SQL注入攻击样本的数目;TN为正常样本被正确标记为正常的数目。

为验证模型对正常样本的检测效果,本文使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值四个指标来对实验进行评价,定义如下。

为验证模型针对对抗样本的检测效果,本文使用检测率(Detection Rate,DR)和逃逸率(Escape Rate,ER)来对实验进行评价,定义如下。

4.3 实验及结果分析

本文使用的通过实验调整LSTM的参数为:LSTM层使用128个神经元,激活函数选择sigmoid参数;Dropout层dropout rate设置为0.5;输出层使用softmax作为激活函数。Word2vec使用skip-gram模型,参数为:滑动窗口大小为5,负采样数量为64,训练轮数为5,嵌入向量大小为128。

对于文献[6-8]所提的模型,本文选择其提供的参数进行设置。其中对于文献[6],本实验选择其效果最后的3-gram来进行特征词提取。

完成上述实验后,针对非对抗机器学习的检测效果如表2所示。

表2 实验结果

模型AccuracyPrecisionRecallF1 本文方法99.94%99.98%99.89%98.28% 文献[6]97.40%98.67%96.12%97.38% 文献[7]99.98%99.98%99.96%99.98% 文献[8]99.88%99.80%99.95%99.87%

通过上述实验结果,可发现本文所提出的方法针对非对抗机器学习样本的检测效果相对其他模型未有明显降低,并且本文所提出模型的准确率高达99.94%。

针对对抗机器学习的检测效果如表3所示。

表3 实验结果

非对抗样本对抗样本ERDRERDR 本文方法0.11%99.89%3.29%96.71% 文献[6]3.88%96.12%97.40%2.60% 文献[7]0.04%99.96%97.87%2.13% 文献[8]0.05%99.95%44.44%55.56%

通过上述实验结果,发现对抗样本对本文提出的方法影响最小,针对对抗样本的检测率仅下降了3.18%,且本文对对抗样本的检测率高达96.71%。

5 结论

本文提出了一种在对抗攻击下的SQL注入检测技术。经过抗语法干扰的预处理后,攻击样本通过SQL语法解析生成token。通过对token进行词嵌入并使用LSTM算法进行检测,本文提出的模型取得了良好的效果和健壮性。本文进行了多个对比实验验证模型的有效性。实验结果证明,本文可以在非对抗攻击下和对抗攻击下均可以取得良好的检测效果。

[1]国家信息安全漏洞库[EB/OL].http://www.cnnvd.org.cn/.

[2]Finlayson S G,Bowers J D,Ito J,et al. Adversarial attacks on medical machine learning[J]. Science,2019,363(6433):1287-1289.

[3]Goodfellow I J,Pouget-Abadie J,Mirza M,et al. Generative Adversarial Networks[J]. Advances in Neural Information Processing Systems,2014,3:2672-2680.

[4]Behjati M,Moosavi-Dezfooli S M,Baghshah M S,et al. Universal Adversarial Attacks on Text Classifiers[C]// ICASSP 2019 - 2019 IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP). IEEE,2019.

[5]Peng X,Xian H,Lu Q,et al. Semantics aware adversarial malware examples generation for black-box attacks[J]. Applied Soft Computing,2021,109(3):107506.

[6]苏林萍,刘小倩,陈飞,等. 基于N-Gram和TFIDF的SQL注入检测方法[J]. 计算机与数字工程,2021,49(6):5.

[7]Li Q,Wang F,Wang J,et al. LSTM-Based SQL Injection Detection Method for Intelligent Transportation System[J]. IEEE Transactions on Vehicular Technology,2019,68(5):4182-4191.

[8]Luo A,Huang W,Fan W . A CNN-based Approach to the Detection of SQL Injection Attacks[C]// 2019 IEEE/ACIS 18th International Conference on Computer and Information Science (ICIS). IEEE,2019.

国家重点研发计划(2020YFB1805400);国家自然科学基金(U1736212、U19A2068、62002248、62032002);四川省重点研发项目(20ZDYF3145)

猜你喜欢
序列化预处理语法
Java Web反序列化网络安全漏洞分析
求解奇异线性系统的右预处理MINRES 方法
污泥预处理及其在硅酸盐制品中的运用
如何建构序列化阅读教学
某物资管理调度系统的数据序列化技术
跟踪导练(二)4
基于预处理MUSIC算法的分布式阵列DOA估计
参考答案
Java 反序列化漏洞研究
基于膜过滤的反渗透海水淡化预处理