一种基于执行流图的Web应用安全漏洞预测方法技术

技术编号:19934750 阅读:19 留言:0更新日期:2018-12-29 04:44
本发明专利技术公开了一种基于执行流图的Web应用安全漏洞预测方法,根据Web应用程序的数据依赖关系与控制依赖关系,构建执行流图EFG;从EFG中抽取以安全敏感语句所在节点Sk为终点、以与Sk相关联的用户输入节点UI为起点的子图,针对每个子图提取度量元;将子图的度量元的具体数值作为输入,将子图对应的Sk有无漏洞作为输出,构建漏洞预测模型,从而实现Web应用安全漏洞预测。本发明专利技术在度量元的提取上包含判断节点,且与直接对程序切片进行分析相比,工作量大大减小。

【技术实现步骤摘要】
一种基于执行流图的Web应用安全漏洞预测方法
本专利技术涉及网络安全
,尤其涉及一种基于执行流图的Web应用安全漏洞预测方法。
技术介绍
Web应用程序已经广泛应用于我们日常生活的各个方面,例如社交网络、网络购物、email、订单系统、注册系统等,这些系统的实现大部分都是基于web开发的。在这些系统中,发现了大量的安全漏洞,攻击者利用这些漏洞,可以轻易的获得系统根权限,造成敏感信息泄露,危害极大。软件漏洞预测能够预先获知软件源代码模块中存在的漏洞的可能性、数量或者具体类型,软件生产厂家根据预测结果,可将有限的时间和经费有针对性投入到那些漏洞可能性高的和数量多的软件模块的测试和验证中,这样就能发现更多的安全漏洞,以此提高软件安全性测试的效率。当用户使用Web应用时,在程序的实际执行流程中,用户的输入赋值给系统中某个变量,该变量值被之后的程序(应用逻辑)进行一系列处理,在这个处理过程中,可能包含了许多敏感的程序操作,比如数据库更新(databaseupdates)、HTML输出(HTMLoutputs)以及文件访问(fileaccesses)等。如果输入数据中包含了一些不符合规定的脏数据,且这些数据在一系列的处理过程中也没有被净化处理和校验,则安全事件发生。因此,绝大部分Web应用漏洞的产生是由于软件代码中对用户输入的处理不够造成的,一旦用户的输入中带有不合法或者不合规的内容,将引起安全事件。对用户输入的处理主要有两种方法,一种是对输入做过滤净化处理(sanitization),另一种是对输入做校验(validation)。当软件代码中对输入的净化处理和校验缺失、不正确或者不充分时,软件代码便存在了漏洞。从这个角度讲,如果将代码的对输入的净化处理能力和校验能力作为度量代码质量的属性,进而描述衡量Web应用程序代码的安全性指标,将是合理的。因此针对Web应用漏洞预测模型的建立可从源代码净化处理和校验能力中提取度量元,度量元的提取可针对Web应用程序中对用户输入数据的一系列的后续处理的安全属性进行描述并分类加以实现。现有的度量元提取方法的主要思路是,从用户的输入到安全敏感语句Sk执行,用户的输入数据经过了一系列的传递和处理,可以围绕这个传递过程中所涉及的变量及其安全处理方法提取度量元。其中,安全敏感语句Sk是指源代码中的一条程序语句,如果该语句的执行将导致安全攻击行为发生,则将其称为安全敏感语句(security-sensitiveprogramstatementsk,假设该程序语句的序号为k。又称为SensitiveSinkk,简写为Sk)。现有度量元的提取方法有两种:方法一:建立与Sk相关的数据流图DDGk,将该图的节点的安全属性进行定义并分类,即为度量元。首先建立Web应用程序的控制流图(CFG),安全敏感语句Sk即为CFG图的一个节点。基于CFG,抽取仅针对Sk的数据流图DDGk,DDGk的节点中提供了Sk中所涉及的所有数据变量的定义以及对数据进行净化处理和校验处理的函数和方法,因此在DDGk的节点中反映了数据净化和校验的能力,数据净化和校验的能力可视为节点的安全属性。通过对图节点的安全属性进行定义,并对所有的安全属性进行分类,这些安全属性即为针对Sk的漏洞预测的度量元。将针对Sk的DDGk的节点归类到各个安全属性,并统计每个类别安全属性的节点的数量,该数值即为度量元的具体值。但是,基于数据流图DDGk的度量元提取存在的主要问题是DDGk中不包含判断节点(predicatenodes),因此无法提取有关校验处理的安全属性,因此该方法存在一定的缺陷。方法二:抽取与Sk相关的后向代码切片,将代码切片中的每一条语句的安全属性进行定义并分类,即为度量元。首先建立Web应用程序的控制流图(CFG),找到安全敏感语句Sk对应的节点。基于CFG,提取关于Sk的后向静态程序切片Qk(<k,V>),V即表示了Sk中所涉及的变量的集合。程序切片中的每条语句可能包含了针对V中变量的数据净化和校验能力,数据净化和校验的能力可视为该语句的安全属性。实际上,程序切片Qk(<k,V>)中包含了判断语句节点,因此与上面情况(一)相比,(二)中的度量元能够提取有关校验处理的安全属性,弥补了(一)中的不足。但是,方法二直接对程序切片中的所有程序语句进行分析,主要不足是工作量太大,而且不够直观。
技术实现思路
有鉴于此,本专利技术提供了一种基于执行流图的web应用安全漏洞预测方法,在度量元的提取上包含判断节点,且与直接对程序切片进行分析相比,工作量大大减小。为了解决上述技术问题,本专利技术是这样实现的:一种基于执行流图的Web应用安全漏洞预测方法,包括:根据Web应用程序的数据依赖关系与控制依赖关系,构建执行流图EFG;从EFG中抽取以安全敏感语句所在节点Sk为终点、以与Sk相关联的用户输入节点UI为起点的子图,针对每个子图提取度量元;将子图的度量元的具体数值作为输入,将子图对应的Sk有无漏洞作为输出,构建漏洞预测模型,从而实现Web应用安全漏洞预测。该方法具体包括如下步骤:步骤一、定义程序语句的安全属性,包括净化处理类和校验处理类;步骤二、建立Web应用程序的历史漏洞库;针对历史漏洞库中的每个Web应用程序漏洞样本,执行步骤三~八;步骤三、建立Web应用漏洞样本的执行流图EFG;步骤四、找到EFG中的安全敏感语句所在节点Sk,作为敏感节点Sk;步骤五、以敏感节点Sk为起点,在EFG中反向回溯,找到与敏感节点Sk关联的用户输入节点UI;步骤六、从EFG中抽取以用户输入节点UI为起点、以敏感节点Sk为终点的子图Gk;步骤七、针对每个子图Gk,统计属于各类安全属性的节点的数量,形成统计向量,作为度量元的具体数值;步骤八、根据历史漏洞库的记载,确定子图Gk对应的敏感节点Sk是否有漏洞;一个子图的统计向量以及该子图对应的敏感节点Sk有无漏洞信息组成一个训练数据;步骤九、以统计向量为输入,以敏感节点Sk有无漏洞为输出,训练漏洞预测模型;步骤十、实际预测时,从待预测Web应用程序的EFG中提取各安全敏感语句的子图,并确定统计向量,将统计向量输入训练好的漏洞预测模型,获得各安全敏感语句是否有漏洞的预测结果。优选地,步骤九选择多种机器学习算法作为漏洞预测模型进行训练,确定根据机器学习算法的性能评价指标,确定性能最优的漏洞预测模型。优选地,步骤二用于构建历史漏洞库的Web应用程序与所述的待预测Web应用程序属于系列版本Web应用程序。有益效果:由于在程序的控制依赖图中包含判断节点,可以通过控制依赖图提取有关校验处理的安全属性,因此本专利技术将数据依赖图(即控制流图CFG)与控制依赖图(即数据流图DDG)相结合,构建了程序的执行流图,执行流图中既包含了对所有变量处理的函数(基本块内的数据依赖图),也包含判断分支的函数(基本块间的依赖关系),所以能够同时提取到净化处理相关的安全属性,也能够得到校验处理的安全属性,弥补了现有方法一因无法提取有关校验处理的安全属性而导致的缺陷。其次,本专利技术基于执行流图实现,执行流图的生成和计算工作量小,表达直观,弥补了现有方法二直接对程序切片中的所有程序语句进行分析导致的缺陷本文档来自技高网
...

【技术保护点】
1.一种基于执行流图的Web应用安全漏洞预测方法,其特征在于,包括:根据Web应用程序的数据依赖关系与控制依赖关系,构建执行流图EFG;从EFG中抽取以安全敏感语句所在节点Sk为终点、以与Sk相关联的用户输入节点UI为起点的子图,针对每个子图提取度量元;将子图的度量元的具体数值作为输入,将子图对应的Sk有无漏洞作为输出,构建漏洞预测模型,从而实现Web应用安全漏洞预测。

【技术特征摘要】
1.一种基于执行流图的Web应用安全漏洞预测方法,其特征在于,包括:根据Web应用程序的数据依赖关系与控制依赖关系,构建执行流图EFG;从EFG中抽取以安全敏感语句所在节点Sk为终点、以与Sk相关联的用户输入节点UI为起点的子图,针对每个子图提取度量元;将子图的度量元的具体数值作为输入,将子图对应的Sk有无漏洞作为输出,构建漏洞预测模型,从而实现Web应用安全漏洞预测。2.如权利要求1所述的方法,其特征在于,该方法包括如下步骤:步骤一、定义程序语句的安全属性,包括净化处理类和校验处理类;步骤二、建立Web应用程序的历史漏洞库;针对历史漏洞库中的每个Web应用程序漏洞样本,执行步骤三~八;步骤三、建立Web应用漏洞样本的执行流图EFG;步骤四、找到EFG中的安全敏感语句所在节点Sk,作为敏感节点Sk;步骤五、以敏感节点Sk为起点,在EFG中反向回溯,找到与敏感节点Sk关联的用户输入节点UI;步骤六、从EFG中抽取以用户输入节点UI为起点、以敏感节点Sk为终点的子图Gk;步骤七、针对每个子图Gk,统计属于各类安全属性的节点的数量,形成统计向量,作为度量元的具体数值;步骤八、根据历史漏洞库的记载,确定子图Gk对应的敏感节点Sk是否有漏洞;一个子图的统计向量以及该子图对应的敏感节点Sk有无漏洞信息组成一个训练数据;步骤九、以统计向量为输入,以敏感节点Sk有无漏洞为输出,训练漏洞预测模型;步骤十、实际预测时,从待预测Web应用程序的EFG中提取各安全敏感语句的子图,并确定统计向量,将统计向量输入训练好的漏洞预测模型,获得各安全敏感语句是否有漏洞的预测结果。3.如权利要求2所述的方法,其特征在于,步骤一定义的程序语句的安全属性包括:用户输入类、净化处理类、校验处理类和其他类;所述用户输...

【专利技术属性】
技术研发人员:危胜军钟浩单纯胡昌振
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1