堆内存攻击的检测方法、装置和电子设备制造方法及图纸

技术编号:26171623 阅读:21 留言:0更新日期:2020-10-31 13:44
本公开提供了一种堆内存攻击的检测方法、装置和电子设备,可用于信息安全技术领域,该方法包括:确定程序的检测点集合,检测点集合包括针对程序的至少一个检测点;响应于程序处于运行状态,在程序中与至少一个检测点对应的位置设置回调函数;基于回调函数确定程序申请的堆内存的第一地址,和/或,程序释放的堆内存的第二地址;以及对与第一地址和/或第二地址对应的堆内存的属性进行检测,以确定攻击检测结果。

【技术实现步骤摘要】
堆内存攻击的检测方法、装置和电子设备
本公开涉及信息安全
,更具体地,涉及一种堆内存攻击的检测方法、装置和电子设备。
技术介绍
堆内存漏洞广泛存在于采用C/C++编写的程序中,攻击者通过堆内存漏洞可以实现任意内存地址读写,进而夺取程序控制流,并且获得系统控制权。相关技术可以采用安全检测以降低堆内存攻击的危害。在实现本公开构思的过程中,专利技术人发现现有技术中至少存在如下问题:相关技术中进行安全检测时,需要侵入源程序以实现检测过程。
技术实现思路
本公开的一个方面提供了一种堆内存攻击的检测方法,包括:确定程序的检测点集合,检测点集合包括针对程序的至少一个检测点;响应于程序处于运行状态,在程序中与至少一个检测点对应的位置设置回调函数;基于回调函数确定程序申请的堆内存的第一地址,和/或,程序释放的堆内存的第二地址;以及对与第一地址和/或第二地址对应的堆内存的属性进行检测,以确定攻击检测结果。根据本公开的实施例,基于检测规则和内存标记图,对与第一地址和/或第二地址对应的堆内存的属性进行检测,以确定攻击检测结果,其中,内存标记图本文档来自技高网...

【技术保护点】
1.一种堆内存攻击的检测方法,包括:/n确定程序的检测点集合,所述检测点集合包括针对所述程序的至少一个检测点;/n响应于所述程序处于运行状态,在所述程序中与至少一个所述检测点对应的位置设置回调函数;/n基于所述回调函数确定所述程序申请的堆内存的第一地址,和/或,所述程序释放的堆内存的第二地址;以及/n对与所述第一地址和/或所述第二地址对应的堆内存的属性进行检测,以确定攻击检测结果。/n

【技术特征摘要】
1.一种堆内存攻击的检测方法,包括:
确定程序的检测点集合,所述检测点集合包括针对所述程序的至少一个检测点;
响应于所述程序处于运行状态,在所述程序中与至少一个所述检测点对应的位置设置回调函数;
基于所述回调函数确定所述程序申请的堆内存的第一地址,和/或,所述程序释放的堆内存的第二地址;以及
对与所述第一地址和/或所述第二地址对应的堆内存的属性进行检测,以确定攻击检测结果。


2.根据权利要求1所述的方法,其中,所述对与所述第一地址和/或所述第二地址对应的堆内存的属性进行检测,以确定攻击检测结果包括:
基于检测规则和内存标记图,对与所述第一地址和/或所述第二地址对应的堆内存的属性进行检测,以确定攻击检测结果,其中,所述内存标记图包括内存区域类型和堆块使用状态,所述检测规则包括与所述第一地址和/或所述第二地址对应内存的内存区域类型和内存使用状态。


3.根据权利要求2所述的方法,其中,所述检测规则包括:
如果所述第一地址是堆内存的地址,并且与所述第一地址对应的内存使用状态仅包含空闲状态,则所述攻击检测结果是未被攻击。


4.根据权利要求2所述的方法,其中,所述检测规则包括:对于通过动态分配内存的realloc函数申请的第一地址,
如果申请后的第一地址与申请前的第一地址不同、所述申请后的第一地址是堆内存的地址、并且与所述申请后的第一地址对应的内存使用状态仅包含空闲状态,则所述攻击检测结果是未被攻击;
如果申请后的第一地址与申请前第一地址相同、所述第一地址是堆内存的地址、并且与区间地址对应的内存使用状态仅包含空闲状态,则所述攻击检测结果是未被攻击,其中,所述区间地址是所述申请前的第一地址的内存结束地址与申请后的第一地址的内存结束地址之间的地址区间。


5.根据权利要求2所述的方法,其中,所述检测规则包括:
如果所述第二地址是堆内存的地址,并且与所述第二地址对应的内存使用状态仅包含使用状态,则所述攻击检测结果是未被攻击;或者
如果所述第二地址是堆内存的地址,并且所述第一地址不同于双向链表中节点的内存起始地址,则输出告警信息。


6.根据权利要求5所述的方法,其中,所述内存区域类型和/或所述堆块使用状态中包括内存起始地址和内存结束地址;
所述检测规则还包括:
如果第一堆块大小和第二堆块大小不相同,则所述攻击检测结果是被攻击,其中,所述第一堆块大小是从所述第二地址的堆块头中获取的,所述第二堆块大小是基于所述内存起始地址和所述内存结束地址确定的。


7.根据权利要求6所述的方法,其中,所述检测规则还包括:
如果相对于所述第二地址的上一堆块处于空闲状态,且所述上一堆块的内存起始地址与双向链表中各节点的内存起始地址不同,则输出告警信息,其中,所述上一堆块的内存起始地址是根据上一堆块大小确定的。


8.根据权利要求2所述的方法,其中:
所述内存区域类型包括由内存起始地址、内存结束地址和地址区域类型三个变量构成的数组,内存起始地址的取值按照从小到大的顺序进行排序;
所述堆块使用状态包括双向链表,其中,所述双向链表中各节点分别为结构体,所述结构体的变量包括:前后指针以及以下至少一种:内存起始地址、内存...

【专利技术属性】
技术研发人员:闫海林苏建明李沁蕾王鹏
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

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

1