漏洞检测方法和装置、存储介质及电子设备与流程

专利2026-07-26  18


本技术涉及金融科技领域及其他相关,具体而言,涉及一种漏洞检测方法和装置、存储介质及电子设备。


背景技术:

1、一直以来,软件安全漏洞不仅是病毒、蠕虫等的重要传播途径,也是网络攻防的攻击焦点,绝大多数的网络入侵都是基于软件的安全漏洞进行的。攻击者可以利用这些安全漏洞访问到未授权的系统资源,进而可以破坏系统中重要的数据信息,从而对信息系统安全造成了极大地威胁,因而信息安全领域的核心问题之一就是计算机系统中存在的各种软件漏洞。堆内存漏洞是一种常见的软件漏洞,这类漏洞通过构造特殊的堆块结构来实现堆内存漏洞的利用,进而导致控制流劫持及任意代码执行的目的。

2、目前业界对产品的安全测试主要分为静态分析与动态分析两大类,静态分析主要是白盒代码分析,动态分析主要是灰/黑盒模糊测试。白盒代码分析是指对程序的源码通过人工或者运用半自动化或者自动化工具进行分析,检测程序中可能存在的安全漏洞的点,主要分析方法有词法分析,语法分析,控制流、数据流分析等。灰/黑和模糊测试主要是通过构造模糊测试工具来实现的。通过向编写的模糊测试工具输入一些随机或者精心构造的数据来观察目标程序对输入数据的响应,从而发现代码存在的问题。通常对目标的模糊测试以大小相关的部分、字符串、标志字符串开始或者结束的二进制块等为重点。模糊测试需采用随机或者人为的方式构造测试用例,出现异常后需要测试人员对造成异常的数据包进行分析,存在测试时间过长,效率过低的问题。

3、单字节溢出漏洞(off-by-one漏洞)是一种特殊的溢出漏洞,off-by-one指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。字节缓冲区溢出,这种漏洞的产生往往与边界验证不严和字符串操作有关,当然也不排除写入的size正好就只多了一个字节的情况。

4、对于one-by-one往往只是溢出一个字节的情况,模糊测试存在下述问题:一是输入的数据溢出一个字节,不能覆盖返回地址无法造成程序crash,从而无法被模糊测试发现。这可能导致安全团队忽视了一个实际存在的风险。

5、针对相关技术中通过模糊测试工具对程序漏洞进行广泛测试,导致对单字节溢出漏洞测试的准确率比较低的问题,目前尚未提出有效的解决方案。


技术实现思路

1、本技术的主要目的在于提供一种漏洞检测方法和装置、存储介质及电子设备,以解决相关技术中通过模糊测试工具对程序漏洞进行广泛测试,导致对单字节溢出漏洞测试的准确率比较低的问题。

2、为了实现上述目的,根据本技术的一个方面,提供了一种漏洞检测方法。该方法包括:获取目标测试文件,其中,所述目标测试文件为触发程序出现单字节溢出漏洞的测试文件;确定待进行漏洞测试的第一程序;依据所述目标测试文件对所述第一程序进行单字节溢出漏洞测试,得到测试结果。

3、进一步地,获取目标测试文件包括:获取对第二程序进行模糊测试的初始测试文件;依据所述初始测试文件对所述第二程序进行模糊测试,生成多个约束条件,其中,所述多个约束条件为触发所述第二程序出现单字节溢出漏洞的约束条件;依据所述多个约束条件,生成所述目标测试文件。

4、进一步地,依据所述初始测试文件对所述第二程序进行模糊测试,生成所述多个约束条件包括:对所述初始测试文件进行标记处理,得到符号化的污点数据;将所述污点数据作为种子输入所述第二程序中,以驱动所述第二程序进行符号执行;在驱动所述第二程序进行符号执行的过程中,依据被所述污点数据标记的数据,生成所述多个约束条件。

5、进一步地,在驱动所述第二程序进行符号执行的过程中,依据被所述污点数据标记的数据,生成所述多个约束条件包括:对所述第二程序中的目标函数进行函数挂钩,其中,所述目标函数至少包括:与堆内存相关的函数;在驱动所述第二程序进行符号执行的过程中,通过目标函数判断所述第二程序是否触发所述单字节溢出漏洞;在所述第二程序触发所述单字节溢出漏洞的情况下,依据被所述污点数据标记的数据,生成所述多个约束条件。

6、进一步地,依据被所述污点数据标记的数据,生成所述多个约束条件包括:在所述第二程序触发所述单字节溢出漏洞的情况下,依据被所述污点数据标记的程序运行路径,生成路径约束条件;依据被所述污点数据标记的内存区域,生成数据约束条件;依据被所述污点数据标记的内存区域对应的目标指针,生成指针约束条件;依据所述路径约束条件、所述数据约束条件和所述指针约束条件,生成所述多个约束条件。

7、进一步地,依据被所述污点数据标记的内存区域,生成数据约束条件包括:通过所述目标函数获取第一地址,其中,所述第一地址为出现单字节溢出漏洞的地址;依据所述第一地址和所述单字节溢出漏洞,触发堆块重叠;依据所述堆块重叠,获取第一字段中的第一堆块地址和第二字段中的第二堆块地址,其中,所述第一字段为指下一个空闲堆块的字段,所述第二字段为指上一个空闲堆块的字段;依据所述第一堆块地址和所述第二堆块地址进行计算,得到第二地址,其中,所述第二地址为库函数的地址;依据所述第二地址和被所述污点数据标记的内存区域,生成所述数据约束条件。

8、进一步地,依据所述多个约束条件,生成所述目标测试文件包括:通过约束求解器对所述多个约束条件进行合取和求解,得到求解结果;基于所述求解结果,生成所述目标测试文件。

9、为了实现上述目的,根据本技术的另一方面,提供了一种漏洞检测装置。该装置包括:获取单元,用于获取目标测试文件,其中,所述目标测试文件为触发程序出现单字节溢出漏洞的测试文件;确定单元,用于确定待进行漏洞测试的第一程序;测试单元,用于依据所述目标测试文件对所述第一程序进行单字节溢出漏洞测试,得到测试结果。

10、进一步地,获取单元包括:获取子单元,用于获取对第二程序进行模糊测试的初始测试文件;第一生成子单元,用于依据所述初始测试文件对所述第二程序进行模糊测试,生成多个约束条件,其中,所述多个约束条件为触发所述第二程序出现单字节溢出漏洞的约束条件;第二生成子单元,用于依据所述多个约束条件,生成所述目标测试文件。

11、进一步地,第一生成子单元包括:处理模块,用于对所述初始测试文件进行标记处理,得到符号化的污点数据;输入模块,用于将所述污点数据作为种子输入所述第二程序中,以驱动所述第二程序进行符号执行;第一生成模块,用于在驱动所述第二程序进行符号执行的过程中,依据被所述污点数据标记的数据,生成所述多个约束条件。

12、进一步地,第一生成模块包括:挂钩子模块,用于对所述第二程序中的目标函数进行函数挂钩,其中,所述目标函数至少包括:与堆内存相关的函数;判断子模块,用于在驱动所述第二程序进行符号执行的过程中,通过目标函数判断所述第二程序是否触发所述单字节溢出漏洞;生成子模块,用于在所述第二程序触发所述单字节溢出漏洞的情况下,依据被所述污点数据标记的数据,生成所述多个约束条件。

13、进一步地,生成子模块包括:第一生成次子模块,用于在所述第二程序触发所述单字节溢出漏洞的情况下,依据被所述污点数据标记的程序运行路径,生成路径约束条件;第二生成次子模块,用于依据被所述污点数据标记的内存区域,生成数据约束条件;第三生成次子模块,用于依据被所述污点数据标记的内存区域对应的目标指针,生成指针约束条件;依据所述路径约束条件、所述数据约束条件和所述指针约束条件,生成所述多个约束条件。

14、进一步地,第二生成次子模块包括:第一获取次子模块,用于通过所述目标函数获取第一地址,其中,所述第一地址为出现单字节溢出漏洞的地址;触发次子模块,用于依据所述第一地址和所述单字节溢出漏洞,触发堆块重叠;第二获取次子模块,用于依据所述堆块重叠,获取第一字段中的第一堆块地址和第二字段中的第二堆块地址,其中,所述第一字段为指下一个空闲堆块的字段,所述第二字段为指上一个空闲堆块的字段;计算次子模块,用于依据所述第一堆块地址和所述第二堆块地址进行计算,得到第二地址,其中,所述第二地址为库函数的地址;确定次子模块,用于依据所述第二地址和被所述污点数据标记的内存区域,生成所述数据约束条件。

15、进一步地,第二生成子单元包括:求解模块,用于通过约束求解器对所述多个约束条件进行合取和求解,得到求解结果;第二生成模块,用于基于所述求解结果,生成所述目标测试文件。

16、为了实现上述目的,根据本技术的一方面,提供了一种计算机可读存储介质,所述存储介质存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述任意一项所述的设备资源的需求数量的确定方法。

17、为了实现上述目的,根据本技术的另一个方面,还提供了一种电子设备,电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个处理器实现上述任意一项所述的设备资源的需求数量的确定方法。

18、通过本技术,采用以下步骤:获取目标测试文件,其中,所述目标测试文件为触发程序出现单字节溢出漏洞的测试文件;确定待进行漏洞测试的第一程序;依据所述目标测试文件对所述第一程序进行单字节溢出漏洞测试,得到测试结果,解决了相关技术中通过模糊测试工具对程序漏洞进行广泛测试,导致对单字节溢出漏洞测试的准确率比较低的问题。在本方案中,获取能够触发程序出现单字节溢出漏洞的目标测试文件,然后利用目标测试文件对第一程序进行单字节溢出漏洞测试,能够有效检测第一程序对否存在单字节溢出漏洞,避免了通过模糊测试工具对程序漏洞进行广泛测试,进而达到了提高对单字节溢出漏洞测试的准确率的效果。


技术特征:

1.一种漏洞检测方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,获取目标测试文件包括:

3.根据权利要求2所述的方法,其特征在于,依据所述初始测试文件对所述第二程序进行模糊测试,生成所述多个约束条件包括:

4.根据权利要求3所述的方法,其特征在于,在驱动所述第二程序进行符号执行的过程中,依据被所述污点数据标记的数据,生成所述多个约束条件包括:

5.根据权利要求4所述的方法,其特征在于,依据被所述污点数据标记的数据,生成所述多个约束条件包括:

6.根据权利要求5所述的方法,其特征在于,依据被所述污点数据标记的内存区域,生成数据约束条件包括:

7.根据权利要求2所述的方法,其特征在于,依据所述多个约束条件,生成所述目标测试文件包括:

8.一种漏洞检测装置,其特征在于,包括:

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质在设备执行权利要求1至7中任意一项所述的漏洞检测方法。

10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的漏洞检测方法。


技术总结
本申请公开了一种漏洞检测方法和装置、存储介质及电子设备,涉及金融科技领域及其他相关技术领域,该方法包括:获取目标测试文件,其中,所述目标测试文件为触发程序出现单字节溢出漏洞的测试文件;确定待进行漏洞测试的第一程序;依据所述目标测试文件对所述第一程序进行单字节溢出漏洞测试,得到测试结果。通过本申请,解决了相关技术中通过模糊测试工具对程序漏洞进行广泛测试,导致对单字节溢出漏洞测试的准确率比较低的问题。

技术研发人员:曾炜,李艺枫,丁育祯,李杰一
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:
技术公布日:2024/6/26
转载请注明原文地址:https://doc.8miu.com/read-1832098.html

最新回复(0)