一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质

文档序号:37919751发布日期:2024-05-10 23:58阅读:5来源:国知局
一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质

本申请涉及计算机,具体而言,涉及一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质。


背景技术:

1、近年来随着云计算、大数据、5g技术的飞速发展,计算机程序逐渐由单体应用向大型分布式应用转变,软件构建方式与开发方式也发生了巨大变化,云计算提供的几乎无限的计算能力,使得各大公司开始构建更大规模、更复杂的应用。主流编程语言由内存不安全的c\c++逐步转变为java、python等内存安全的编程语言,但是许多主流的机器学习框架在python语言主体的基础上使用了大量的c/c++库。由于python这一类内存安全的语言与c/c++这一类语言在内存管理、异常处理机制上存在差异,加之语言开发过程中的不规范行为,可能会导致同一项目中原本内存安全的语言的安全约束遭到破坏。

2、然而,现有的基于程序分析的漏洞挖掘方法局限于单一的语言代码,即便通过这种挖掘方法确定了多语言系统中的每一种编程语言单元都是安全的,也不能确定整个系统是安全的,许多跨语言项目中跨语言边界的内存安全漏洞无法被挖掘出来。


技术实现思路

1、有鉴于此,本申请的目的在于提供一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质,以解决现有技术中,无法有效挖掘跨语言项目中的内存安全漏洞的问题。

2、第一方面,本申请实施例提供了一种面向内存消耗型漏洞的挖掘方法,包括:

3、对跨语言程序中不同类型的编程语言进行转换,获取中间语言程序;

4、对中间语言程序进行覆盖率及内存监控插桩,构建插桩后的中间语言程序的调用图;

5、对按照调用图执行中间语言程序时的代码覆盖率进行监控,当监控到代码覆盖率超过覆盖率阈值时对代码覆盖率及内存消耗进行监控;

6、若内存消耗大于或者等于内存阈值,则确定跨语言程序存在内存消耗型漏洞。

7、可选地,跨语言程序包括编译型编程语言及解释型编程语言,对中间语言程序进行覆盖率及内存监控插桩,包括:对编译型编程语言的内存库函数进行针对内存消耗的静态插桩,以针对编译型编程语言进行内存消耗监控;对解释型编程语言的迭代函数的代码块前后位置分别进行针对内存消耗的动态插桩,以针对解释型编程语言进行内存消耗监控。

8、可选地,构建插桩后的中间语言程序的调用图,包括:确定不同类型的编程语言在接口层的映射关系;利用映射关系,将不同类型编程语言对应的中间语言程序结合在一起,生成插桩后的中间语言程序的调用图。

9、可选地,当监控到代码覆盖率超过覆盖率阈值时对代码覆盖率及内存消耗进行监控,包括:在代码覆盖率大于或者等于覆盖率阈值时,由基于代码覆盖率引导的模糊测试切换为基于代码覆盖率及内存消耗引导的模糊测试。

10、可选地,对按照调用图执行中间语言程序时的代码覆盖率进行监控,包括:按照调用图对插桩后的中间语言程序进行基于代码覆盖率引导的模糊测试,以在代码覆盖率满足要求时,由基于代码覆盖率的模糊测试切换为基于代码覆盖率及内存消耗引导的模糊测试。

11、可选地,通过以下方式进行模糊测试,包括:针对每一轮模糊测试,将本轮模糊测试输出的内存消耗信息、本轮执行的调用图中的代码块分支及本轮模糊测试使用的种子作为本轮结果数据;利用本轮结果数据生成新种子,以利用新种子进行下一轮的模糊测试。

12、可选地,确定不同类型的编程语言在接口层的映射关系,包括:对跨语言程序中不同类型编程语言在接口层的接口函数进行分析,根据分析结果确定接口处的映射关系,映射关系包括普通方法之间的映射关系、静态方法之间的映射关系、可读写属性之间的映射关系、只读属性之间的映射关系。

13、第二方面,本申请实施例还提供了一种面向内存消耗型漏洞的挖掘装置,所述装置包括:

14、语言转换模块,用于对跨语言程序中不同类型的编程语言进行转换,获取中间语言程序;

15、调用图生成模块,用于对中间语言程序进行覆盖率及内存监控插桩,构建插桩后的中间语言程序的调用图;

16、内存监控模块,用于对按照调用图执行中间语言程序时的代码覆盖率进行监控,当监控到代码覆盖率超过覆盖率阈值时对代码覆盖率及内存消耗进行监控;

17、漏洞确定模块,用于若内存消耗大于或者等于内存阈值,则确定跨语言程序存在内存消耗型漏洞。

18、第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的面向内存消耗型漏洞的挖掘方法的步骤。

19、第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的面向内存消耗型漏洞的挖掘方法的步骤。

20、本申请实施例带来了以下有益效果:

21、本申请实施例提供的一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质,能够将多种不同类型的编程语言转换为统一的中间语言,消除不同语言之间的语法障碍,并通过构建调用图来梳理不同编程语言在跨语言边界上的调用关系,进而利用内存消耗插桩来监控内存消耗情况,避免了仅对单一编程语言进行安全分析时可能产生的监控漏洞,与现有技术中的面向内存消耗型漏洞的挖掘方法相比,解决了无法有效挖掘跨语言项目中的内存安全漏洞的问题。

22、为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。



技术特征:

1.一种面向内存消耗型漏洞的挖掘方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述跨语言程序包括编译型编程语言及解释型编程语言,所述对所述中间语言程序进行覆盖率及内存监控插桩,包括:

3.根据权利要求1所述的方法,其特征在于,所述构建插桩后的中间语言程序的调用图,包括:

4.根据权利要求1所述的方法,其特征在于,所述当监控到所述代码覆盖率超过覆盖率阈值时对所述代码覆盖率及内存消耗进行监控,包括:

5.根据权利要求1所述的方法,其特征在于,所述对按照所述调用图执行所述中间语言程序时的代码覆盖率进行监控,包括:

6.根据权利要求4或5所述的方法,其特征在于,通过以下方式进行模糊测试:

7.根据权利要求3所述的方法,其特征在于,所述确定不同类型的编程语言在接口层的映射关系,包括:

8.一种面向内存消耗型漏洞的挖掘装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7中任一项所述的面向内存消耗型漏洞的挖掘方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7中任一项所述的面向内存消耗型漏洞的挖掘方法的步骤。


技术总结
本申请提供了一种面向内存消耗型漏洞的挖掘方法、装置、设备及介质,涉及计算机技术领域,该方法包括:对跨语言程序中不同类型的编程语言进行转换,获取中间语言程序;对中间语言程序进行覆盖率及内存监控插桩,构建插桩后的中间语言程序的调用图;对按照调用图执行中间语言程序时的代码覆盖率进行监控,当监控到代码覆盖率超过覆盖率阈值时对代码覆盖率及内存消耗进行监控;若内存消耗大于或者等于内存阈值,则确定跨语言程序存在内存消耗型漏洞。通过采用上述面向内存消耗型漏洞的挖掘方法、装置、设备及介质,解决了现有技术中,无法有效挖掘跨语言项目中的内存安全漏洞的问题。

技术研发人员:崔宝江,李萍,王子奇
受保护的技术使用者:北京邮电大学
技术研发日:
技术公布日:2024/5/9
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1