基于机器学习的越权漏洞检测方法
2021-06-11国网电动汽车服务有限公司李帅华孙庆贺赵明宇
■ 文/国网电动汽车服务有限公司 李帅华 孙庆贺 赵明宇
关键字:Isolation Forest XGBoost 余弦相似度 越权逻辑漏洞
1 引言
随着社会经济和互联网的快速发展及“互联网+”概念的提出,车联网全面提速发展,车联网行业网络业务不断扩大,Web、App应用在成为支撑车联网业务重要方式的同时,其应用安全问题也与日俱增。Web、App应用已经成为被攻击的的主要目标,由此引发的各种安全问题值得我们重视。在众多攻击漏洞中,业务越权逻辑漏洞攻击逐年增长,给互联网厂商和使用者带来巨大经济损失。
目前针对Web和App应用的业务越权逻辑漏洞研究主要集中在人工检测、半自动化越权逻辑漏洞检测工具、黑盒测试等方面。主要研究如何使用基于传统的拦截数据包,提取URL中的关键参数进行替换,再次发送请求,判断是否存在漏洞。业务逻辑漏洞产生的相关原因主要包括个人信息未经合法性校验、绕过相对简单、未限制登录失败次数、相关有价值参数随意修改。这种业务越权逻辑漏洞检测没有很好的自动化工具,一般使用人工测试、黑盒测试、白盒测试等相关方法。由于黑盒、白盒测试效果不理想,安全人员经常使用人工测试,对传统手动替换多账户间多身份参数的检测方法进行改进,优化为采用爬虫技术爬取数据后替换多账户请求中head标签下的cookie参数,然后针对请求返回内容进行比对,进而发现是否存在越权漏洞。但这些方法存在识别效率低、性能差、误报多、辨识率低、部分场景不支持等问题。
本文以车联网企业Web和App应用的业务越权逻辑漏洞为研究对象开展越权漏洞检测研究,提出基于机器学习的越权场景识别和相似度对比的方法。通过获取不同用户对同一操作的响应数据识别响应内容是否为越权场景,并进一步识别具体的越权漏洞场景,如修改密码、订单信息、积分信息、个人信息等,最后根据识别出的具体越权漏洞场景做文本相似度计算,并分析计算结果,完成对车联网企业Web和App应用越权访问漏洞的全部测试。该方法通过三种机器学习算法组合模型,建立车联网企业Web和App应用越权漏洞检测模型,用于内部应用的安全检测,可及时发现企业内部应用的安全隐患,极大提高企业内部应用的安全性。选择车联网企业Web和App应用进行实验,验证了方法的有效性。
2 相关方法
本文提出了使用机器学习相关算法检测越权逻辑漏洞的方法,主要使用了Isolation Forest算法、XGBoost算法与余弦相似度算法相结合实现越权逻辑漏洞检测,其主要算法说明如下。
2.1 Isolation Forest算法
孤立森林(Isolation Forest)是一种高效异常检测算法,由周志华教授于2008年在第八届IEEE数据挖掘国际会议上提出,属于无监督算法。在包含越权场景的训练集中,对数据进行递归划分,直至iTree将每个样本数据与其他非越权数据区分开来,用少量样本数据的特征条件即可检测出异常的非越权场景数据。
孤立森林(Isolation Forest)算法分为两个阶段:第一阶段需要训练出棵孤立树,组成孤立森林;第二阶段将每个样本点带入孤立森林中的每棵树,计算平均高度,最后计算出每个样本点分数,判断是否为异常值。
第一阶段:
Step2:从d个维度中随机指定一个维度q,在当前数据中随机产生一个切点p,切点p的计算公式如下所示:
Step3:此切割点p生成了一个超平面,将当前数据空间划分为两个子空间:确定维度小于p的样本点放入左子节点;大于或等于p的放入右子节点;
Step4:递归Step2和Step3,直到所有叶子节点都只有一个样本点或者孤立树已经达到指定的高度;
Step5:循环Step1至Step4,直至生成t棵孤立树。第二阶段:
2.2 XGBoost算法
XGBoost是2016年开发的Boosting库,具备线性规模求解器和树学习算法。XGBoost是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。XGBoost算法思想就是不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。与传统的GBDT方法不同,为了提高训练速度、更好的拟合损失函数,XGBoost对损失函数做了二阶泰勒展开。为了防止模型过拟合,XGBoost在目标函数之外又加入了正则项,对整体目标函数求最优解,用于衡量目标函数的梯度下降和模型的复杂度。大致流程如下:
Step2:目标函数定义如下:
目标函数Obj由两项组成:第一项为损失函数,主要作用是来判断模型预测值和真实值之间的损失,该函数必须是可微分的凸函数,式中为真实值,为预测值;第二项为正则化项,用来控制模型的复杂度,正则化项倾向于选择简单的模型,避免过拟合。正则化项的定义如下:
正则化项中第一项γT通过叶子节点数及其系数控制树的复杂度,值越大则目标函数越大,从而抑制模型的复杂程度,γ为叶子树惩罚系数,第二项为L2,正则项ω用于控制叶子节点的权重分数,λ为叶子权重惩罚系数。
Step4:将公式(7)到结果代入(6)中可得到:
Step5:泰勒公式是用函数某点的信息描述其附近取值的公式,如果函数曲线足够平滑,则可通过某一点的各阶导数值构建一个多项式来近似表示函数在该点邻域的值,此处只取泰勒展开式的两阶,定义如下:
2.3 余弦相似度算法
余弦相似度是众多计算相似度算法中的一种算法,最常应用于文本相似度的计算。余弦相似度是通过计算两个向量的夹角的余弦值来度量它们之间的相似性。该算法将不同用户响应内容根据相关算法转化为向量,通过计算两个向量的空间夹角余弦来度量不同用户响应内容的相似值。余弦值越接近于1,表示两个向量的夹角越接近0度,即两个向量越相似,反之亦然。两个向量的余弦相似度计算公式如下:余弦相似度通过计算两个向量夹角的余弦值来评估其相似度。与欧式距离相比,余弦相似度主要计算两个向量在方向上的差异。
2.4 越权漏洞检测建模预测分析流程
图1 整体流程
本文提出使用机器学习相关算法检测越权逻辑漏洞的方法主要分为两个阶段,即训练阶段和预测阶段。整体流程如图 1所示,其中训练阶段主要包括训练数据预处理、特征工程、算法选择、模型参数调优、训练模型和保存模型等过程。预测阶段包括获取A、B两个用户对同一接口请求的响应数据、数据预处理、特征工程、孤立森林(Isolation Forest)模型预测、判断是否包含漏洞场景、XGBoos模型预测、余弦相似度计算和判断是否越权等过程。
3 设计与实证分析
3.1 数据描述与预处理
鉴于目前互联网上没有针对包含越权逻辑漏洞场景的样本数据集,且在未授权情况下私自对应用进行漏洞检测和数据收集涉嫌违法,所以通过授权某电动汽车服务有限公司Web、App应用的包含越权逻辑漏洞场景数据进行收集,其中场景类别修改密码、订单信息、个人信息、积分信息等为输出标签,其它数据基本信息为特征数据,收集到的数据信息以及场景详细如图2 所示。
图2 各类别训练数据量分布
由于各类别数据量不均衡,导致模型在预测时,结果更多偏向于数据量多的那一类,所以本文采用了SMOTE(Synthetic Minority Oversampling Technique)技术对不均衡数据进行采样,SMO-TE是合成少数类过采样技术,基于随机过采样算法的一种改进方案, 通过添加生成的少数类样本改变不平衡数据集的数据分布,使用线性插值的方法在两个少数类样本间合成新的样本,从而有效缓解了由随机过采样引起的过拟合问题。后续把数据集按照7:3划分训练集和测试集。
数据预处理是模型训练前的首要工作,包括数据清洗、去操、缺失值和异常值处理、向量化等。在实际工作中不同数据集会有不同特征,所以数据预处理也会有不同的方法。
1)数据清洗。在收集到的数据集中,有一些特殊字符、数字还有一些与业务无关的数据,以及词频特别高或特别低的词语,数据清洗就是删除这些数据。
2)特征选择。根据不同类别,数据特征也明显不同,为此我们制作了词云图用于查看各类别特征,分布情况如图3 所示,根据词云中的词频分布可以进行特征选择。
图3 各类别数据特征分布
3)文本转向量。模型输入数据应该为向量形式,常用的方法有One-hot、N-Gram等,经过对比文本采用TF-IDF算法把数据集中文本数据转化为向量。
3.2 模型评价标准
实验采用Precision、Recall、F1-score指标对模型结果进行评估及可视化展示。查准率(Precision)表示预测为正例的样本中有多少是真的正例,Precision越高,模型预测负面样本的能力就越好。查全率(Recall)表示样本中的正例有多少被预测为正例,Recall越高,模型对正样本的预测能力越强。准确率(Accuracy)表示在预测结果中,正确预测的数量/样本总数。为了评估不同算法的优缺点,评估指标添加了基于Precision和Recall的F1-score的概念公式,对Precision和Recall进行综合评价,F1-score越高,表示模型越稳定。
3.3 训练过程与结果分析
越权逻辑漏洞模型训练及预测采用PC配置3.70GHz的Intel(R)Core(TM)i9-10900K处理器,32GB内存, 64位centos7操作系统,使用python3.6.3作为分析、训练、预测的编程语言。
使用Isolation Forest、XGBoost算法建模分析时,模型算法会有很多参数,参数的初始化及选择对模型的最终结果会有较大影响,因此训练时需要对算法中的若干参数进行调优。对于Isolation Forest模型,本文主要从产生孤立森林树的数量、子采样的数量、从总样本中抽取来训练每棵树的属性的数量这三个参数进行调优;对于XGBoost模型本文主要从最大树的深度、迭代次数、树上叶子节点数、最小叶子节点权重这四个参数进行调优,本文使用网格搜索方法对上述模型的参数进行自动寻优。同时为了提高模型的泛化能力,模型在训练时采用5折交叉验证的方式自动选择最优参数。
结合3.2节中模型评估指标以及通过网格搜索进行参数寻优方法,综合评估上述Isolation Forest、XGBoost模型的相关性能,从中选出最优模型。为便于查看各场景的识别准确率,本文制作了针对不同算法测试结果的precision、recall、f1-score情况。如下表所示。
表1 XGBoost评估指标
表2 决策树评估指标
表3 SVM评估指标
表4 OneClass评估指标
表5 Isolation Forest评估指标
表6 多分类各模型准确率情况
针对上述表中的评估指标情况,计算出不同模型的分类准确率对比情况如表7、表8 所示:
表7 单分类各模型准确率情况
表8 各工具检测出漏洞情况
综合上述图表结果可以看出,Isolation Forest模型和XGBoost模型结合,预测能力最优,说明模型Isolation Forest和XGBoost范化能力和预测能力最强,能够最大程度地找准并找全包含越权逻辑漏洞场景的数据。
4 实验
由于互联网上没有越权相关数据集,因此本文选择某电动汽车服务有限公司内部Web、App应用进行实验。在Web、App应用安全测试阶段,使用本文提出的方法进行测试,并对发现的漏洞进行人工确认,共发现3个应用存在越权逻辑漏洞。
实验中,使用WebInspect等商业的漏洞扫描软件对测试出的漏洞进行测试,最终在扫描结果中找出越权逻辑漏洞,与本文提出检测方法检测出的结果进行对比,如表9所示。本文提出方法的效果优于其他商业扫描工具,主要原因是商业漏洞扫描器在执行扫描过程中只能配置单个登录用户,其功能主要集中在对sql注入、弱口令、目录遍历等传统web、中间件等已知漏洞检测,不会对多个账号请求的结果进行场景识别并做对比分析。
表9 漏洞确认列表
本次实验发现的越权逻辑漏洞已全部整改完毕,由此可说明本文提出的越权逻辑漏洞检测方法可以极大提高对Web、App应用的越权逻辑漏洞检测能力,并能及时敦促开发人员及时整改应用漏洞,有效减轻Web、App应用的安全隐患。
5 结语
针对Web、App应用可能存在的越权逻辑漏洞导致资金损失、信息泄露、违规操作等问题,本文提出了基于机器学习的越权逻辑漏洞检测方法。利用三种机器学习算法相结合的方法实现了越权逻辑漏洞快速准确检测,节省了大量的人力和财力,有效提高了Web、App应用的安全性。未来将主要在以下方面开展工作:一是本文针对六类越权逻辑漏洞场景进行检测,后续应继续完善针对其他场景的越权逻辑漏洞检测;二是本文适用机器学习模型进行训练,模型准确率在95%左右,后续将探索使用深度学习方式进行场景识别提高模型准确率。