预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共24页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN113987507A(43)申请公布日2022.01.28(21)申请号202111236368.4(22)申请日2021.10.22(71)申请人中国工商银行股份有限公司地址100140北京市西城区复兴门内大街55号(72)发明人张茜闫海林蒋家堂李帅宇(74)专利代理机构北京康信知识产权代理有限责任公司11240代理人黄海英(51)Int.Cl.G06F21/57(2013.01)权利要求书3页说明书16页附图4页(54)发明名称堆内存漏洞检测方法、装置、存储介质及电子设备(57)摘要本申请公开了一种堆内存漏洞检测方法、装置、存储介质及电子设备,涉及信息安全领域。该方法包括:通过二进制插桩模块获取目标二进制程序中的目标调用函数,其中,目标调用函数至少包括目标调用函数的函数名;将目标调用函数的函数名与风险函数模型进行匹配,得到匹配结果,其中,风险函数模型中包括多个函数的函数名,各个函数是否属于风险的内存操作函数,以及各个函数名对应的类型;若匹配结果表示目标调用函数属于风险的内存操作函数时,确定目标调用函数的类型;根据目标调用函数的类型,执行目标调用函数对应的堆内存漏洞检测策略。通过本申请,解决了相关技术中对堆内存破坏漏洞的检测效率较低的问题。CN113987507ACN113987507A权利要求书1/3页1.一种堆内存漏洞检测方法,其特征在于,包括:通过二进制插桩模块获取目标二进制程序中的目标调用函数,其中,所述目标调用函数至少包括所述目标调用函数的函数名;将所述目标调用函数的函数名与风险函数模型进行匹配,得到匹配结果,其中,所述风险函数模型中包括多个函数的函数名,各个函数是否属于风险的内存操作函数,以及各个函数名对应的类型;若所述匹配结果表示所述目标调用函数属于风险的内存操作函数时,确定所述目标调用函数的类型;根据所述目标调用函数的类型,执行所述目标调用函数对应的堆内存漏洞检测策略。2.根据权利要求1所述的方法,其特征在于,所述目标调用函数的类型为以下至少之一:堆分配函数的类型、堆释放函数的类型、堆内存读取函数的类型、堆内存写入函数的类型。3.根据权利要求2所述的方法,其特征在于,在根据所述目标调用函数的类型,执行所述目标调用函数对应的堆内存漏洞检测策略之前,所述方法还包括:若所述目标调用函数的类型为所述堆分配函数的类型时,通过程序的目标接口获取所述堆分配函数的函数参数;根据所述函数参数计算所述目标调用函数分配的堆内存空间。4.根据权利要求3所述的方法,其特征在于,根据所述目标调用函数的类型,执行所述目标调用函数对应的堆内存漏洞检测策略包括:若所述目标调用函数的类型为所述堆分配函数的类型时,根据所述程序的目标接口获取所述堆分配函数的执行结果,其中,所述执行结果包括堆块元数据的内容;通过所述执行结果判断所述目标调用函数的堆内存空间是否分配成功,若所述目标调用函数的堆内存空间分配成功,对所述堆内存空间的申请次数进行判断;若所述堆内存空间的申请次数为第一预设值,通过所述堆分配函数的函数参数以及所述堆分配函数的程序执行结果确定堆内存的使用日志;若所述堆内存空间的申请次数大于第一预设值,判断所述堆内存空间地址是否为空闲堆内存地址,若所述堆内存空间地址为空闲堆内存地址,判断所述堆分配函数是否为目标函数,若所述堆分配函数为所述目标函数,则对所述堆内存的使用日志进行更新。5.根据权利要求4所述的方法,其特征在于,根据所述目标调用函数的类型,执行所述目标调用函数对应的堆内存漏洞检测策略包括:若所述目标调用函数的类型为所述堆释放函数的类型时,通过所述程序的目标接口获取所述堆释放函数的函数参数;根据所述堆释放函数的函数参数获取待释放的堆内存地址,判断所述待释放的堆内存地址是否与所述堆内存的使用日志中已经分配的堆块首地址存在匹配的记录;若所述待释放的堆内存地址与所述堆内存的使用日志中已经分配的堆块首地址存在匹配的记录,将所述待释放的堆内存地址进行释放,并对所述堆内存的使用日志进行更新。6.根据权利要求4所述的方法,其特征在于,根据所述目标调用函数的类型,执行所述目标调用函数对应的堆内存漏洞检测策略包括:若所述目标调用函数的类型为所述堆内存读取函数的类型时,通过所述程序的目标接2CN113987507A权利要求书2/3页口获取所述堆内存读取函数的函数参数以及所述堆内存读取函数的程序执行结果;根据所述堆内存读取函数的函数参数以及所述堆内存读取函数的程序执行结果确定所述堆内存读取函数的目标信息,其中,所述目标信息至少包括:读内存的地址与读取内容的长度;通过所述目标信息判断所述目标二进制程序是否存在读堆内存数据的情况,在所述目标信息存在读堆内存数据的情况下,根据所述堆分配函数的