基于LSTM-AutoEncoder的水平越权漏洞检测
2020-07-09李帅华孙庆贺赵明宇
李帅华 孙庆贺 赵明宇
摘 要:针对水平越权检测过程中,因无法识别越权场景页面带来的检测误报问题,提出了一种基于深度学习的LSTM-AutoEncoder无监督预测模型。该模型利用长短时记忆网络构建自动编码器,提取水平越权场景页面响应数据的文本特征并将其重建还原,统计还原结果与原始页面响应的误差,并根据未知页面的误差阈值判断水平越权的检测结果是否为误报。通过与One-Class SVM和AutoEncoder两种算法的比较,在真实业务数据下进行模型效果测试其有效性,为企业网络业务安全提供了保障。
关键词:LSTM-AutoEncoder模型;水平越权;深度学习;网络安全;漏洞检测
中图分类号:TP393.08 文献标识码:A 文章编号:2096-4706(2020)23-0153-07
Horizontal Privilege Escalation Vulnerability Detection Based on
LSTM-AutoEncoder
LI Shuaihua,SUN Qinghe,ZHAO Mingyu
(State Grid Electric Vehicle Service Co.,Ltd.,Beijing 100053,China)
Abstract:Aiming at the problem of detecting false positives caused by ones inability to identify the page of the unauthorized scene in the horizon privilege escalation detection process,an unsupervised prediction model of LSTM-AutoEncoder based on deep learning is proposed. This model uses LSTM(Long Short-Term Memory)to construct an autoencoder,which extracts the response datas text features of the horizontal privilege escalation scene page and reconstructs it. Then calculates the error between the restored result and the original page response,and judges whether the horizontal privilege escalation detection result is a false positive based on the error threshold of the unknown page. By comparing the two algorithms of One-Class SVM and AutoEncoder,the effectiveness of the model is tested under real business data,which provides a guarantee for the security of corporate network services.
Keywords:LSTM-AutoEncoder model;horizontal privilege escalation;deep learning;cyber security;vulnerability detection
0 引 言
越权漏洞属于业务逻辑漏洞中的一种,在目前的Web应用中十分常见。水平越权是越权漏洞中的一种,它是指相同权限的用户可以通过修改参数变量等方式查询、修改、删除、添加他人信息,以实现非法行为。当黑客对越权漏洞进行利用时,由于其攻擊行为与正常用户请求无异,且不包含敏感字符与特殊字符,很难被防御软件监控处理。因此,如何能够对水平越权漏洞进行检测,及时修复缺陷漏洞以避免损失显得尤为重要。
近年来,在针对权限提升的防御控制方法上,已经有很多研究工作开展实施[1-5]。在企业实际业务生产过程中,不仅要增强代码开发人员的安全开发意识和代码规范,还需要对即将上线的Web应用有着良好的安全检测。对于特权提升漏洞的检测有如下相关研究:Sun等人提出了利用静态检查的方法来检测Web应用中的逻辑漏洞,通过源码构建不同权限访问者的站点地图,来判断是否存在越权行为[6]。Monshizadeh等人提出了MACE工具,在大型代码库上检测特权提升漏洞,发现了很多严重及未知的漏洞,取得了良好的效果[7]。Deepa等采用黑盒方法,通过对预期行为建模构建有限状态机的方式识别逻辑缺陷漏洞[8]。Song等人通过URL链接爬取的方式获取目标网站可访问链接,利用不同用户权限访问链接页面并解析网页响应的方式判断是否存在水平、垂直越权漏洞[9]。Ma等人提出了一种新的权限控制漏洞检测方法,通过建立一种五层模型结合授权上下文信息,检测目标系统是否存在权限控制漏洞[10]。
虽然目前对于越权检测的方法种类繁多,但在真实业务场景中却存在以下问题。首先,通过源代码审计的方法成本极高,需要比较强能力的安全知识人员耗费大量时间进行检测。同时,因为迭代周期短暂,产品代码量庞大的问题,安全专家也很难兼顾到Web应用中的所有漏洞点。其次,目前的自动化水平越权检测工具以及方法往往存在误报问题,给检测结果的校验增大了成本。针对这个问题,本文提出了以下解决办法:水平越权的产生场景大部分在类似于历史订单查询、投诉与建议、消息推送、订单支付、个人信息等页面,而无用户直接数据交互的页面则不会产生越权行为。因此识别越权页面是否为越权场景页面,能够大幅度提升水平越权检测准确率,降低人工复核的工作成本。目前人工智能与网络安全已经有着很多结合应用[11-13],利用深度学习技术可以实现对水平越权场景页面的识别。国网电动车业务系统中,水平越权漏洞占据总漏洞数量的70%,将深度学习越权场景页面的识别应用到自动化水平越权检测中,很好地解决了水平越权检测的误报问题,进而保证了水平越权漏洞的及时检测与修复。
1 基于LSMT-AutoEncoder的水平越权检测
1.1 LSTM
长短时记忆网络(Long Short-Term Memory,LSTM)由Hochreiter等人提出[14],采用控制门的机制,LSTM结构如图1所示,由多个单元共同组成,目前长短时记忆网络已被应用在较多领域。
LSMT结构图中,ht为t时刻网络的状态输出,Xt为t时刻的输入向量。LSTM模型的状态流程公式为:
首先是忘记阶段,会选择历史信息进行忘记,ft为t时刻忘记门的输出状态,σ为logistic sigmoid函数,Wf代表权重矩阵,bc为偏置向量:
ft=δ(Wf ·(Xt,ht-1)+bc)f (1)
然后输入门进行状态更新,it为t时刻输入门的输出状态,bi为偏置向量, 为tanh创建的一个新的候选值向量,Wc为权重矩阵,Ct为t时刻的记忆单元状态:
it=δ(Wi·(Xt,ht-1)+bi) (2)
=tanh(Wc ·(Xt,ht-1)+bc) (3)
Ct=it ·+ft·Ct-1 (4)
最后由输出门输出当前状态的结果,ot为输出门的输出状态,Wo,Uo为权重矩阵,bo为偏置向量:
ot=σ(Wo Xt+Uoht-1+bo) (5)
ht=Ot · tanh(Ct) (6)
利用LSTM对长序数据的处理能力,将越权场景网页响应数据进行训练处理,能够很好地保证越权场景数据的上下文有效性。
1.2 自编码器
自编码器(AutoEncoder)通常由编码器与解码器两部分组成。Hinton等人为测试其玻尔兹曼机的学习算法,提出了自动编码的雏形[15]。首先,输入网页响应数据x,编码阶段通过映射函数f:h=f(x),将输入的响应数据编码到隐藏层h,解码阶段通过解码阶段的映射函数g:x=g(h将隐藏层的h解码为新的网页响应数据。编码器的重建误差为:
(7)
通过尝试利用自编码器,将转换为文本向量的网页响应数据转换为新的响应文本向量,通过对比原始文本向量与新生成文本向量之间的差异,判断网页响应数据的类别。
1.3 LSTM-AutoEncoder
LSTM-AutoEncoder由Srivastava等首次提出,用以学习视频序列的表示[16]。目前LSTM-AutoEncoder广泛用于极端时间预测以及文本序列异常检测问题。水平越权场景页面的网页响应为文本序列,其中越权相关场景页面可以认为是正常页面,非越权相关頁面可以认为是异常页面,以此为设计思想进行建模,能够实现越权场景页面的检测。
LSTM-AutoEncoder模型的评估指标采用均方误差(Mean Squared Error,MSE),平均绝对误差(Mean Absolute Error,MAE),以及机器学习常用评估指标:精确率(Precision)、准确率(Accuracy)、召回率(Recall)、F1分数(F1-Score)。MAE、MSE的计算公式如下,其中Xprediction为每次预测值,Xreal为真实值,N为总次数,t、i为当前次数:
MSE=(Xprediction,t-Xreal,t)2 (8)
MAE=(Xprediction,i-Xreal,i) (9)
精确率、准确率、召回率、F1分数的计算公式如下,其中TP为真正例,FP为假正例,TN为真反例,FN为假反例:
Precision= (10)
Recall= (11)
Accuracy= (12)
F1-Score=2· (13)
LSTM-AutoEncoder模型的輸入为向量化的水平越权场景页面文本,使用Keras框架的Tokenizer模块进行文本预处理。首先构建Tokenizer实例对象,通过filters参数传入停用符,并设置最大保留词组为20 000。然后利用训练数据进行拟合,获取能够将文本转换为序列的数据集文本字典,当新数据需要进行预测时,可以使用该字典进行转换。最后将转换后的文本序列变形为LSTM层输入所需要的三维数组,作为训练数据输入模型。
图2展示了LSTM-AutoEncoder的架构代码,编码器与解码器分别由两个LSTM单元组成,使用RepeatVector层改变数据维数,使用TimeDistributed层与Dense层结合处理数据解码维度多对多情况。
1.4 基于LSTM-AutoEncoder的水平越权检测
在Web应用程序中,水平越权发生在相同权限的用户中。其主要特征为相同权限用户可以通过在本用户权限下修改参数等伪造其他用户的行为,能够查看、利用其他用户的数据。目前大部分Web站点使用Cookie、Token等认证方式,自动化的水平越权检测可以实现配置Cookie后通过交叉访问不同用户的页面,再通过页面相似度对比的方式,检测是否存在越权行为。具体检测方式如图3所示。
基于LSTM-AutoEncoder的水平越权检测流程详细说明为:
第一步,利用A用户的Cookie与B用户的Cookie分别访问目标Web站点。使用爬虫技术,通过携带用户Cookie的方式,自动化的爬取目标的页面链接及网页响应,构建A、B用户的响应页面集合。
第二步,根据URL链接、页面响应进行A、B用户的页面去重。页面去重主要去除访问中的网页静态页面、网页共享页面等同权限下A、B用户都可以访问的页面。通过对比A、B用户的URL链接、请求体相似度以及网页相似度,将相同URL链接且页面相似度、请求体相似度为100%的页面认定为重复页面。通过上述方法,获取A、B用户的去重页面集合。
第三步,利用A、B用户的去重页面集合进行相互请求。首先利用A用户的Cookie去请求B用户页面集合中的URL链接,同时将URL中的参数替换为B用户的请求参数,得到A用户请求B用户的页面响应。将相同链接下A用户的页面响应与B用户的页面响应进行相似度比对,当相似度大于设定的阈值(实际测试过程中根据多次测试结果该阈值设定为98.4%),即认为该链接存在越权行为。同理,利用B用户的Cookie去请求A用户的URL链接,得到另一组越权链接。两组链接去重后的链接集合即为初步判断存在越权漏洞的链接集合。
在自动化水平越权检测过程中,因网页中常常存在大量噪声数据(如UUID、时间戳等由JS动态生成的数据),这类网站在进行A、B页面去重时,因噪声数据导致的相似度小于100%而未被去重,以至于在第三步进行相互请求时的检测中,该类页面因A、B用户请求后响应页面相似度高于阈值导致水平越权检测结果误报。水平越权漏洞只发生在水平越权场景页面中,因此通过构造深度学习模型检测结果页面是否为越权场景页面能够解决水平越权误报问题。
第四步,将水平越权的检测结果中的响应页面数据进行数据预处理后,经过LSTM-AutoEncoder模型进行越权场景页面检测。当模型判定页面类型为越权场景页,认定该页面为存在水平越权漏洞,否则认为第三步判定的水平越权链接不属于水平越权场景页面,存在误报。
2 实验结果及分析
2.1 实验数据和实验环境
LSTM-AutoEncoder属于无监督模型单分类模型,因此在模型训练阶段只需要收集越权场景页面。Web应用网站中无业务数据交互的页面数量远远大于存在用户业务数据交互的页面数量,因此在模型测试阶段,用于测试模型性能的非越权场景页面随机取自训练集网站中无业务交互的网站页面。为贴合真实业务场景,本文收集的实验数据来自互联网论坛类、电商类大量的Web应用网站,包含个人信息、订单支付、查询、发票、投诉建议等类型的越权场景页面。首先通过电商索引网站、论坛索引网站查找对应类型网站目录并进行链接爬取。然后进行网站注册并结合selenium自动化测试工具设置的脚本获取注册后经过浏览器渲染的越权场景页面网页响应,其中对于越权场景页面的识别标注由安全服务人员进行,数据收集过程共消耗60人天。将收集好的网页响应使用jieba进行分词,考虑到现有的主流Web开发框架如React、Vue等利用JavaScript动态生成的网页源代码中,英文字符标签往往是随机生成的且包含数据特征极少,因此分词时舍弃英文数据,并根据中文停用词表以及地名信息表去除停用词。经清洗后共收集用于模型训练的越权场景页面数据12 000条,测试模型性能的非越权场景页面数据1 200条,利用Scikit-learn框架中的数据切割函数train_test_split将数据按照0.8:0.1:0.1的比例切分为训练集、测试集和验证集,通过Keras模块的pad_sequence函数将每个样本数据的序列长度统一至1 000。数据集统计信息如表1所示。
由于网页响应文本过长,表2列举了训练集中部分数据集样例的前15个文本。
实验过程与图3给出的检测流程图相同。首先利用自动化水平越权检测对目标Web站点进行水平越权检测,然后将判断为越权的检测结果所对应目标链接的网页响应输入至LSTM-AutoEncoder模型,进行越权场景页面的检测。如果LSTM-AutoEncoder模型输出为是,则链接所对应的网页为越权场景页面,判定该链接存在为水平越权;如果检测结果为否,说明该链接不是越权场景页面,则越权结果为误报。
实验的环境如下:LSTM-AutoEncoder模型使用Python 3.6作为开发语言,利用Keras==2.1.2作为高层封装框架,tensorflow-gpu==1.10.0作为深度学习框架,在CPU为Intel i7-7700K、GPU为NVIDIA 2080 Ti的Windows机器进行模型训练。
2.2 實验方法
对于如何利用LSTM-AtuoEncoder模型进行水平越权场景页面的判断使用了以下方法:
首先,使用MSE和MSE分别作为损失函数,进行模型训练。经过不断调整单元units大小、批次batchsize、激活函数与轮次Epoch后,得到units=64、batchsize=32、激活函数为ReLU、Epoch为50的最佳模型,图4、图5分别为MSE与MAE作为损失函数的最佳模型LOSS下降图
其次,分别用MSE与MAE最佳模型对原训练集进行预测,利用MSE与MAE的计算公式(式(8)、式(9))得到获取预测值与原值的MSE、MAE分布区间,通过分布区间确定还原误差的阈值。MSE与MAE的分布区间如图6、7所示,MSE的阈值为1.75,MAE的阈值为0.65。
最后,计算验证集、负样本的MSE、MAE分布,两种情况下的重建数据散点分布图如图8、图9所示。
并根据阈值可以计算模型在MSE、MAE情况下的TP、TN、FP、FN值。设阈值为k,test为测试数据,error为错误数据,sum为数据求和,计算方法如下:
TP=sum(test TN=sum(error>k) (15) FP=sum(error FN=sum(test>k) (17) ROC曲线通常用于评价一个分类器的好坏,其横坐标为TPR,纵坐标为FPR,分别表示分类器将正例分对的概率以及将负例分错的概率。其中AUC代表ROC曲线下的面积,AUC越接近于1表示预测的价值越高。通过TP、TN、FP、FN值可以得出图像的Precision曲线,如图10、图11所示,以及ROC曲线,如图12、图13所示。 2.3 实验结果及结论 为了验证本文的有效性,以同样数据预处理方法以及同样的训练数据对One-class SVM模型和AutoEncoder模型进行训练及对比。其中,One-class SVM模型使用Scikit-learn模块中的预置模型及默认参数进行训练,AutoEncoder模型使用双层全连接层作为编码器与解码器,units参数为32的架构进行训练,经过训练后的三种模型对于验证集的对比结果如表3~表5所示。 通过实验结果可知,在One-Class模型中,模型的精确率Precision达到了极高的0.974,说明One-class模型对于数据集中的越权场景页面有着很高的识别率。但是模型的召回率只有0.473,说明对于很多非越权场景网页,模型将其识别成了越权场景页面。因此,在实际业务过程中,One-Class SVM模型不能解决水平越权的误报问题。 AutoEncoder模型在MAE以及MSE的情况下的召回率为0.988及0.994,说明正确判为水平越权场景页面的案例在全部水平越权样本中占据一个很高的比例,然而其精确率相比于LSTM-AutoEncoder模型低了约3%,表明被模型预测为水平越权场景页面中真正的越权场景页面占比只有0.89%。因此相较于LSTM-AutoEncoder模型,AutoEncoder模型的整体性能偏弱。F1分数往往表示精确率与召回率的调和平均,该指标对于水平越权场景页面的检测业务需求相吻合。由表3可以看出,LSTM-AutoEncoder模型在MAE的情况下精确率、准确率、召回率、F1分数达到了一个较为均衡的指标,相较于MSE的情况下,其中F1分数多了0.3%,准确率多了0.2%,更符合真实的业务需求。因此以MAE作为损失函数训练的LSTM-AutoEncoder模型作为线上环境的检测模型,实现对水平越权场景页面的检测。 根据LSTM网络的特性,其对于有着上下文关系的网页响应文本序列的特征提取能力更强,使得模型的综合表现更加优异。此外,实验中还曾试过多层LSTM编解码器,但对于模型的准确率只提升0.001%,甚至在四层网络时出现了准确率下降的现象,由此可见多层网络未能给越权场景页面的识别带来更好的效果。在实际业务检查场景中,模型的效率是检测系统能够快速运行的关键,一味追求准确率而舍弃性能参数是开发过程中必须要避免的。在经过预测模块耗时测试,模型的预测时间为0.04 s,满足大量调用模型预测的业务需求。权衡利弊后,选取如图2简单的模型架构,能够降低模型的复杂度,加速模型在应用阶段的预测时间,提升检测软件的性能。 由以上分析可以得出,LSTM-AutoEncoder模型在识别水平越权场景页面中有着良好的效果。在国网电动车内部测试过程中,LSTM-AutoEncoder模型发现了11个水平越权检测结果中的7个误报,后经人工复核确认有效。 3 结 论 水平越权漏洞对公司及用户的业务数据安全极为重要。本文利用Web应用越权场景样本数据,通过训练LSTM-AutoEncoder模型,实现了越权场景页面的识别,解决了传统自动化越权检测中的误报问题,提升了越权检测的准确性。实验数据表明,LSTM-AutoEncoder模型在一定量数据规模情况下比传统的One-Class SVM模型以及AutoEncoder模型具有一定准确率的优势,在处理拥有上下文关系的网页文本序列也有很大的优势。目前AI和网络安全的应用处于较为初期的发展阶段,本文提供了较好的应用案例。然而,本文的实验数据也存在一定的不足。在今后的研究中,需要将训练数据的收集扩展到互联网上大量的Web应用中更多的越权场景页面的种类,以此提升模型的泛化能力,使得模型能够检验更多的越权场景。
参考文献:
[1] MARKMANN T,GESSNER D,WESTHOFF D. QuantDroid:Quantitative approach towards mitigating privilege escalation on Android [C]//2013 IEEE International Conference on Communications (ICC).Budapest:IEEE,2013:2144-2149.
[2] MOLLUS K,WESTHOFF D,MARKMANN T. Curtailing privilege escalation attacks over asynchronous channels on Android [C]//2014 14th International Conference on Innovations for Community Services (I4CS).Reims:IEEE,2014:87-94.
[3] SUCIU D,MCLAUGHLIN S,SIMON L,et al. Horizontal Privilege Escalation in Trusted Applications [C]// Proceedings of the 29th USENIX Security Symposium.USENIX Association,2020:825-840.
[4] KRISHNAMURTHY A,METTLER A,WAGNER D. Fine-grained privilege separation for web applications [C]//Proceedings of the 19th international conference on World wide web.Raleigh:Association for Computing Machinery,2010:551-560.
[5] NAGPURE S,KURKURE S. Vulnerability assessment and penetration testing of Web application [C]//2017 International Conference on Computing,Communication,Control and Automation (ICCUBEA).Pune:IEEE,2017:1-6.
[6] SUN F Q,XU L,SU Z D. Static Detection of Access Control Vulnerabilities in Web Applications [C]// Proceedings of the 20th USENIX conference on Security.Berkeley:USENIX Association,2011:64.
[7] MONSHIZADEH M,NALDURG P,VENKATAKRISHNAN V N. Mace:Detecting privilege escalation vulnerabilities in web applications [C]//Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security.Scottsdale:Association for Computing Machinery,2014:690-701.
[8] DEEPA G,THILAGAM P S,PRASEED A,et al. DetLogic:A black-box approach for detecting logic vulnerabilities in web applications [J].Journal of Network and Computer Applications,2018,109:89-109.
[9] SONG H G,KIM Y,DOH K G. Automatic Detection of Access Control Vulnerabilities in Web Applications by URL Crawling and Forced Browsing [EB/OL].[2020-11-10]. https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.469.5880&rep=rep1&type=pdf.
[10] MA L,YAN Y J,XIE H. A New Approach for Detecting Access Control Vulnerabilities [C]//2019 7th International Conference on Information,Communication and Networks (ICICN).Macao:IEEE,2019:109-113.
[11] BUCZAK A L,GUVEN E. A survey of data mining and machine learning methods for cyber security intrusion detection [J].IEEE Communications surveys & Tutorials,2015,18(2):1153-1176.
[12] TSAI C F,HSU Y F,LIN C Y,et al. Intrusion detection by machine learning:A review [J].expert systems with applications,2009,36(10):11994-12000.
[13] YAVANOGLU O,AYDOS M. A review on cyber security datasets for machine learning algorithms [C]//2017 IEEE International Conference on Big Data (Big Data).Boston:IEEE,2017:2186-2193.
[14] HOCHREITER S,SCHMIDHUBER J. Long short-term memory [J].Neural computation,1997,9(8):1735-1780.
[15] ACKLEY D H,HINTON G E,SEJNOWSKI T J. A learning algorithm for Boltzmann machines [J].Cognitive science,1985,9(1):147-169.
[16] SRIVASTAVA N,MANSIMOV E,SALAKHUDINOV R. Unsupervised learning of video representations using lstms [C]// Proceedings of the 32nd International Conference on International Conference on Machine Learning.2015:843-852.
作者簡介:李帅华(1983—),男,汉族,山西朔州人,高级工程师,硕士,研究方向:网络与信息安全、人工智能与网络安全;通讯作者:孙庆贺(1995—),男,汉族,安徽宿州人,工程师,学士学位,研究方向:网络与信息安全;赵明宇(1997—),男,汉族,山西临汾人,学士学位,工程师,研究方向:网络与信息安全。