基于多维深度的Java代码基本块权重分配方法、系统及介质技术方案

技术编号:38669396 阅读:12 留言:0更新日期:2023-09-02 22:48
本发明专利技术公开了一种基于多维深度的Java代码基本块权重分配方法,并公开了具有基于多维深度的Java代码基本块权重分配方法的装置及存储介质,其中基于多维深度的Java代码基本块权重分配方法通过针对现有以代码覆盖率为导向的模糊测试方法难以有效引导模糊测试执行深层次代码的问题,根据代码中基本块的不同维度的位置信息,分析并提出多维深度的维度以及权重分配过程。同时针对现有的Java Web应用的程序结构和一般的Java应用不同,普通的深度或距离导向的模糊测试无法获得较好的结果。基于基本块的多维深度,结合应用反馈信息和执行结果,评估种子的价值,从而优化种子调度和能量分配过程。分配过程。分配过程。

【技术实现步骤摘要】
基于多维深度的Java代码基本块权重分配方法、系统及介质


[0001]本专利技术涉及软件安全测试
,特别涉及一种基于多维深度的Java代码基本块权重分配方法、系统及介质。

技术介绍

[0002]Java Web已经成为了目前比较主流的Web应用开发技术,并被广泛运用于电子商务,金融证券,保险,医疗等各个行业的大型应用系统中。但与此同时,Java Web应用的安全问题也日渐突出,各种安全漏洞层出不穷。据国家计算机网络应急技术处置协调中心2021年7月份发布了《2021年上半年我国互联网网络安全监测数据分析报告》统计,Web安全漏洞占比达到了29.6%,仅低于应用程序类型漏洞。由此可见,作为最常见的Web应用,Java Web程序的安全问题不容忽视,这些潜在的安全威胁正在逐步威胁人们的日常生活。
[0003]随着模糊测试技术的兴起,一些研究人员也针对Web应用设计了一系列的模糊测试工具,现阶段的模糊测试工具通过生成大量的测试用例作为Java Web程序的输入,从而发现Java Web程序的安全问题。然而,现有应用于Java Web程序的模糊测试方法存在以下主要问题,导致其漏洞挖掘效率较低:
[0004](1)Java Web应用的很多代码处于程序较深的位置,需要满足多个条件语句才能够执行,而现有以代码覆盖率为导向的模糊测试难以有效地引导模糊测试执行深层次代码。
[0005](2)现有的Java Web应用的程序结构和一般的Java应用不同,普通的深度或距离导向的模糊测试无法获得较好的结果。<br/>
技术实现思路

[0006]本专利技术旨在至少解决现有技术中存在的技术问题之一。为此,本专利技术提出一种基于多维深度的Java代码基本块权重分配方法,能够针对现有以代码覆盖率为导向的模糊测试方法难以有效引导模糊测试执行深层次代码的问题,根据代码中基本块的不同维度的位置信息,分析并提出多维深度的维度以及权重分配过程。同时针对现有的Java Web应用的程序结构和一般的Java应用不同,普通的深度或距离导向的模糊测试无法获得较好的结果。并基于基本块的多维深度,结合应用反馈信息和执行结果,评估种子的价值,从而优化种子调度和能量分配过程。
[0007]本专利技术还提出一种具有上述Java代码基本块权重分配方法的系统及介质。
[0008]根据本专利技术的第一方面实施例的基于多维深度的Java代码基本块权重分配方法,其特征在于,包括以下步骤:
[0009]依据代码中每一个基本块不同的控制流深度、分支深度以及所在函数的调用链深度对基本块分配不同的多维深度权重;
[0010]针对待测的Java字节码执行插桩操作,在每一个基本块语句内插入代码片段,记录对应基本块的多维深度,并将记录到的多维深度信息返回至模糊测试器;
[0011]模糊测试器通过收集覆盖到的所有多维深度信息计算出单次测试的种子对应的能量权重,并以所述能量权重和应用返回信息、程序执行信息进行种子调度和能量分配操作,用于指导模糊测试。
[0012]根据本专利技术实施例的基于多维深度的Java代码基本块权重分配方法,至少具有如下有益效果:本申请的实施例通过针对现有以代码覆盖率为导向的模糊测试方法难以有效引导模糊测试执行深层次代码的问题,根据代码中基本块的不同维度的位置信息,分析并提出多维深度的维度以及权重分配过程。同时针对现有的Java Web应用的程序结构和一般的Java应用不同,普通的深度或距离导向的模糊测试无法获得较好的结果。基于基本块的多维深度,结合应用反馈信息和执行结果,评估种子的价值,从而优化种子调度和能量分配过程。
[0013]根据本专利技术的一些实施例,所述依据代码中每一个基本块不同的控制流深度、分支深度以及所在函数的调用链深度对基本块分配不同的多维深度权重的步骤,包括:
[0014]通过代码的静态分析,获得程序代码的调用图和控制流图;
[0015]以调用图上函数所在节点的位置获取函数的调用链深度,以基本块在控制流图中的位置获取基本块的控制流深度;
[0016]根据基本块所在分支的分支条件个数和分支难易程度得到基本块的分支深度;
[0017]根据所述基本块控制流深度、分支深度以及所在函数的调用链深度和待测应用本身的特点,分配不同的权重值。。
[0018]根据本专利技术的一些实施例,所述针对待测的Java字节码执行插桩操作,在每一个基本块语句内插入代码片段,记录对应基本块的多维深度,并将所述多维深度信息返回至模糊测试器的步骤,包括:
[0019]获取待测代码中所有基本块的入口语句;
[0020]在所述入口语句之后插入自定义代码,所述自定义代码能够实现当该基本块被执行时,可以记录基本块的多维深度值,并在程序执行结束后将多维深度反馈给模糊测试器。
[0021]根据本专利技术的一些实施例,所述模糊测试器通过收集覆盖到的所有多维深度值计算出单次测试的种子的权重,并以该权重和应用返回信息、程序执行信息进行种子调度和能量分配操作,用于指导模糊测试的步骤,包括:
[0022]使用代码覆盖率作为反馈来评估和更新种子的权值;
[0023]使用优化后的模糊器进行反馈优化时,会同时统计种子的覆盖路径的总权值,获得更高权值的种子在下一次种子调度时会获取更高的优先度先进行下一步的种子拼接。
[0024]根据本专利技术的一些实施例,所述种子调度与能量分配的方法包括:
[0025]将根据种子的权重对所有种子池中的种子进行排序,生成一个种子调度优先级队列,并以该队列为标准调度种子;
[0026]计算每一个种子的能量值,根据种子权重、应用反馈的信息和程序执行结果,为权重更高、应用反馈了异常信息、程序执行出错的种子分配更高的能量,能量越高的种子可以获得越多的变异机会。
[0027]根据本专利技术的第二方面实施例的基于多维深度的Java代码基本块权重分配系统,其特征在于,包括:
[0028]权重设定模块,能够依据代码中每一个基本块不同的控制流深度、分支深度以及
所在函数的调用链深度对基本块分配不同的多维深度权重;
[0029]插桩模块,能够对待测的Java字节码执行插桩操作,在每一个基本块语句内插入代码片段,记录对应基本块的多维深度,并将所述多维深度信息返回至模糊测试器;
[0030]权重计算模块,能够使模糊测试器收集覆盖到的所有多维深度值计算出单次测试的种子的能量权重,并以该能量权重和应用返回信息、程序执行信息进行种子调度和能量分配操作,用于指导模糊测试。
[0031]根据本专利技术的一些实施例,所述权重设定模块,包括:
[0032]静态分析元件,能够通过代码的静态分析,获得程序代码的调用图和控制流图;
[0033]第一深度计算元件,能够调用图上函数所在节点的位置获取函数的调用链深度,以基本块在控制流图中的位置获取基本块的控制流深度;
[0034]第二深度计算元件,能够根据基本块所在分支的分支条件个数和分支难易程度得到基本块本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多维深度的Java代码基本块权重分配方法,其特征在于,包括以下步骤:依据代码中每一个基本块不同的控制流深度、分支深度以及所在函数的调用链深度对基本块分配不同的多维深度权重;针对待测的Java字节码执行插桩操作,在每一个基本块语句内插入代码片段,记录对应基本块的多维深度信息,并将记录到的多维深度信息返回至模糊测试器;模糊测试器通过收集覆盖到的所有多维深度信息计算出单次测试的种子对应的能量权重,并以所述能量权重和应用返回信息、程序执行信息进行种子调度和能量分配操作。2.根据权利要求1所述的方法,其特征在于,所述依据代码中每一个基本块不同的控制流深度、分支深度以及所在函数的调用链深度对基本块分配不同的多维深度权重的步骤,包括:通过代码的静态分析,获得程序代码的调用图和控制流图;以调用图上函数所在节点的位置获取函数的调用链深度,以基本块在控制流图中的位置获取基本块的控制流深度;根据基本块所在分支的分支条件个数和分支难易程度得到基本块的分支深度;根据所述基本块控制流深度、分支深度以及所在函数的调用链深度和待测应用本身的特点,分配不同的权重值。3.根据权利要求1所述的方法,其特征在于,所述针对待测的Java字节码执行插桩操作,在每一个基本块语句内插入代码片段,记录对应基本块的多维深度,并将所述多维深度信息返回至模糊测试器的步骤,包括:获取待测代码中所有基本块的入口语句;在所述入口语句之后插入自定义代码,所述自定义代码能够实现当该基本块被执行时,可以记录基本块的多维深度值,并在程序执行结束后将多维深度反馈给模糊测试器。4.根据权利要求1所述的方法,其特征在于,所述模糊测试器通过收集覆盖到的所有多维深度值计算出单次测试的种子的权重,并以该权重和应用返回信息、程序执行信息进行种子调度和能量分配操作,用于指导模糊测试的步骤,包括:使用代码覆盖率作为反馈来评估和更新种子的权值;使用优化后的模糊器进行反馈优化时,会同时统计种子的覆盖路径的总权值,获得更高权值的种子在下一次种子调度时会获取更高的优先度先进行下一步的种子拼接。5.根据权利要求4所述的方法,其特征在于,所述种子调度与能量分配的方法包括:将根据种子的权重对所有种子池中的种子进行排序,生成一个种子调度优先级队列,并以该队列为标准调度种子;计算每一个种子的能量值,根据种子权重、应用反馈的信息和程序执行结果,为权重更高、应用反馈了异常信息、程序执行出错的种子分配更高的能量,能量越高的种子可以获得越多...

【专利技术属性】
技术研发人员:朱亚运蔺子卿王鹃张晓娟赵海波缪思薇张志杰王海翔曹靖怡
申请(专利权)人:武汉大学国网上海市电力公司国家电网有限公司
类型:发明
国别省市:

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

1