标题 | 基于CNN的SQL注入检测 |
范文 | 谢鑫 任春辉 陈新宇 摘要:数据是一个企业最重要的资产之一,关乎企业的生存发展。SQL注入攻击被开放式Web应用程序安全项目(OWASP)列为十大网络应用程序风险榜的榜首,危害性、普遍性及严峻形势不言而喻。提出了一种基于卷积神经网络(CNN)的SQL注入检测方法并与传统的检测方法进行对比,可以将SQL注入语句转化为二维矩阵,该方法可以针对Web应用的SQL注入行为进行有效检测,基于无规则匹配的特点使其可以识别新的攻击且更难以绕过。 关键词:深度学习;神经网络;卷积神经网络;网络安全;SQL注入 中图分类号:TP391.4文献标志码:A文章编号:1008-1739(2020)03-69-3
0引言 数据作为企业的重要资产,其价值也逐年提高,几乎每个企业的数据都会保存在数据库里面,以方便内部员工或者用户查询使用。对企业来说,正常的使用查询是没有问题的,但是互联网世界缤纷复杂,背后总存在很多别有用心的人用各种工具扫描网站,试图找出漏洞。所以任何网站都不要抱侥幸心理,任何一点疏忽都有可能成为黑客窃取数据的大门。当企业数据被泄露时,损失的不仅仅是经济利益,也包括公众声望,用户大量流失,有的甚至面临法律诉讼,引发高层震荡等。随着互联网的发展,出现了越来越多的Web应用,很多Web应用会收集用户个人信息,由于数据库里存放大量的宝贵数据,就自然而然成为了被攻击的目标,因此出现越来越多的SQL注入攻击。 1 SQL SQL注入攻击是指构造特殊的字符串作为参数,通过Web表单递交或者输入域名或者页面请求的查询字符串而传入Web应用,这些特殊的字符串往往包含SQL语法里的一些可执行的语句,让Web应用错把数据当成了代码执行,最终达到欺骗服务器执行恶意的SQL命令,其主要原因是Web应用没有精确地过滤用户的输入数据,导致数据库被入侵。SQL注入是Web开发中最常见的一种安全漏洞,犯罪分子可能会利用它来非法访问用户的敏感数据,如客户信息、个人数据、商业机密及知识产权等。 SQL注入攻击被开放式Web应用程序安全项目(OWASP)作为十大网络应用程序风险榜的榜首,一直以来都是网络安全研究的重点。近年来,相关研究者通过研究SQL注入的威胁、攻击类型以及攻击方式等提出了各种各样的方法用于SQL注入的检测,将SQL查询语句进行规范化是常用的一种预处理方式。 根据查询语句按照一定方式进行分割,统计每个词出现的频率[1]也是一种数据预处理的方式,在此基础上更好的特征筛选是统计特殊字符和特殊语句。将提取的特征向量化之后,使用传统机器学习方法进行分类识别,常用的有朴素贝叶斯[1-2]、决策树[1,3]和支持向量机(SVM)[4-5]。 CNN[6]仿造生物体视觉认知的形成过程机制搭建,是一种深度前馈神经网络。近年来,CNN被广泛应用于计算机视觉和自然语言处理效果方面。本文提出了一种基于CNN和海量Web日志的SQL注入检测方法,将CNN应用于Web应用的SQL注入检测。实践结果表明,此方法具有很好的效果,其识别准确率很高。 2 CNN模型 SQL注入形式多样,不可避免地出现新的攻击方法绕过传统检测。针对这种普遍存在的问题,提出了一种基于CNN的SQL注入检测方法,此方法主要解决识别无法用传统方法识别的SQL注入攻擊,其可作为传统SQL检测方法的一种辅助方法。 2.1整体模型 CNN的模型结构如图1所示。
对输入的预处理数据进行2次卷积,卷积核尺寸为3×3。然后依次输入池化层、卷积层和池化层,池化层之后进行dropout正则化处理,然后将输出降维成一维向量再输入全连接层,再进行正则化处理,最后进行分类。 2.2数据预处理 数据预处理步骤如下: ①统计每条样本的平均长度,即字符数量,以确定矩阵行数近似等于平均长度,比如长度即为3。 ②使用Word2vec方法将样本进行词向量化训练,得到一个词向量化模型,此模型保存了每个字符对应的向量。向量化维度值不宜大于样本平均长度,并且以2的次方为宜,比如16,32,64等。以单个字符作为一个向量单位,无需对其进行url解码,解码后会大大增加字符数量。 ③将样本按照由步骤②的方法得到模型进行向量化,若模型中没有样本中出现的字符,则用1向量填充,即行向量每个元素值都取1;每条样本均可转化为一个二维矩阵,列数即为每个字符确定的向量维度,行数即为样本字符数量。
④将由步骤③获得的二维矩阵转为矩阵,若行数小于指定值,则在最下方一直补0向量至其为指定大小矩阵;若行数大于指定值,则去掉最后若干行使其变为指定大小矩阵。 3实验仿真 3.1数据集 共约448万条无重复的生产环境中的Web日志,其中约128万条SQL注入攻击日志,300万条正常日志,均为Web日志中已标记好的具有查询语句的url访问记录。包括正常和SQL注入的,如http://www.example.com/path1/path2/? query#fragment,具有query参数的url,即“?”后面、“#”前面的字符串(一般情况下格式为key1=value1&key2=value2…)。随机选取20万条作为训练集(正负样本各约10万条),剩下的作为测试集,测试集和训练集之间没有交集。 實验设备是笔记本电脑,编程语言使用Python3,使用基于Tensorflow-Gpu的keras框架,GPU为NVIDIAGTX1050Ti。 3.2实验结果 损失函数值曲线如图2所示,损失函数值随着训练次数的增加逐渐趋于稳定,收敛在0.01左右。
混淆矩阵如表1所示,从表1中可以看出,TP和TN值均远远高于FP和FN。
如表2和图3所示,正确率、精确率、召回率、1和AUC均高于0.999,这些数据表明模型的分类性能非常出色,ROC曲线近似矩形。
作为对比,使用了传统的机器学习方法进行分类,比较其正确率和1值,包括SVM[4-5],朴素贝叶斯[1-2],决策树[1-3]和随机森林。从表3可以看出,CNN的正确率和1值均高于其他方法。
4结束语 现有的SQL注入检测主要采用正则匹配进行识别,采用正则技术识别准确率高,速度快,但是不能识别新的攻击,不可避免地出现新的绕过方法以避开正则。基于CNN的SQL注入识别自动提取SQL注入的隐藏共有特征,识别出绕过正则的SQL注入攻击流量,且速度快。传统的机器学习方法需要人为筛选特征,而好的特征不易得到,特征的好坏直接影响到识别准确率。基于CNN的SQL注入识别基于单个字符进行向量化,词量较少,但可保留query语句所有信息,词量少则可以降低训练难度和训练成本。一个好的模型完全可以替代原有的正则识别方法,还可以实时更新模型。下一步将研究攻击类型的细分,实现多分类模型,而不仅仅局限于SQL注入攻击识别。 参考文献 [1] LODEIRO-SANTIAGO M, CABALLERO-GIL C, CABALLERO-GIL P. Collaborative SQL-injections Detection System with Machine Learning[C]//Proceedings of the 1st International Conference on Internet of Things and Machine Learning,ACM, 2017:45. [2] SANTOSO J,YUNIARNO E M,HARIADI M. Large Scale Text Classification Using Map Reduce and Naive Bayes Algorithm for Domain Specified Ontology Building[C]//2015 7th International Conference on Intelligent Human-Machine Systems and Cybernetics,IEEE,2015:428-432. [3] HANMANTHU B, RAM B R,NIRANJAN P. SQL Injection Attack Prevention based on Decision Tree Classification[C]// 2015 IEEE 9th International Conference on Intelligent Systems and Control (ISCO), IEEE,2015:1-5. [4] MCWHIRTER P R,KIFAYAT K,SHI Q,et al. SQL Injection Attack Classification through the Feature Extraction of SQL Query Strings Using A Gap-weighted String Subsequence Kernel[J].Journal of Information Security and Applications, 2018,40:199-216. [5] UWAGBOLE S O,BUCHANAN W J,FAN L.Applied Machine Learning Predictive Analytics to SQL Injection Attack Detection and Prevention[C]//2017 IFIP/IEEE Symposium on Integrated Network and Service Management(IM).IEEE,2017:1087-1090. [6] KHAN A,SOHAIL A, ZAHOORA U,et al.A Survey of the Recent Architectures of Deep Convolutional Neural Networks[J].arXiv preprint arXiv:1901.06032, 2019. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。