控制流检测方法、装置、电子设备及计算机可读存储介质制造方法及图纸

技术编号:37367165 阅读:18 留言:0更新日期:2023-04-27 07:13
本申请提供一种控制流检测方法、装置、电子设备及计算机可读存储介质,涉及信息安全技术领域,控制流检测方法包括:通过处理器跟踪技术获取目标进程的控制流;将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配;所述影子堆栈为通过所述目标进程的指令流维护的堆栈;在所述影子堆栈的返回地址与所述控制流的地址不匹配的情况下,确定所述控制流被劫持。通过本申请的方案,可以实现不依赖编译器的控制流检测,从而无论应用程序和编译器是否支持CFG技术,无论应用程序的版本是否陈旧,采用本申请实施例的方案均可以进行控制流检测,从而实现基于控制流的攻击检测,弥补了现有基于CFG技术进行检测的不足。了现有基于CFG技术进行检测的不足。了现有基于CFG技术进行检测的不足。

【技术实现步骤摘要】
控制流检测方法、装置、电子设备及计算机可读存储介质


[0001]本申请涉及信息安全
,具体而言,涉及一种控制流检测方法、装置、电子设备及计算机可读存储介质。

技术介绍

[0002]ROP(Return

oriented Programming,面向返回的编程)漏洞攻击是一种新型的基于代码复用技术的攻击方式,攻击者通过对栈溢出和应用程序的代码片断的复用,对程序的指令流进行控制。目前,针对ROP漏洞攻击的检测通常是采用CFG(Control Flow Guard,控制流防护)技术实现的。但是,CFG技术需要编译器或者新型硬件的支持,对于一些陈旧的应用程序或不支持CFG的编译器,则无法通过CFG技术实现防护,也即通过CFG技术存在防护漏洞,一旦攻击者通过这些防护漏洞进行入侵,那么现有的CFG防御方式将无能为力,会造成严重的损失。

技术实现思路

[0003]本申请实施例的目的在于提供一种控制流检测方法、装置、电子设备及计算机可读存储介质,用以实现不依赖编译器的控制流检测。
[0004]本申请实施例提供了一种控制流检测方法,包括:通过处理器跟踪技术获取目标进程的控制流;将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配;所述影子堆栈为通过所述目标进程的指令流维护的堆栈;在所述影子堆栈的返回地址与所述控制流的地址不匹配的情况下,确定所述控制流被劫持。
[0005]经研究发现,攻击者对存在栈溢出漏洞的函数进行攻击时(例如ROP漏洞攻击),会修改返回地址到构造好的gadget指令序列(一种用于从整个程序中提取出的小的片段的指令序列)来达成执行恶意行为的目的,修改会被启用处理器跟踪技术后的处理器在控制流中记录下来。而在上述实现方式中,影子堆栈为通过目标进程的指令流维护的堆栈,因此影子堆栈的返回地址是目标进程正常执行指令后所指向的地址,那么一旦通过处理器跟踪技术获取到的目标进程的控制流的地址与该目标进程的影子堆栈的返回地址不匹配,那么就可以确定出控制流被劫持,也即系统受到了攻击,从而实现控制流检测的目的。
[0006]此外,在上述实现方式中,是通过处理器跟踪技术实现目标进程的控制流获取。而处理器跟踪技术是一种基于硬件的信息监控技术,因此通过处理器跟踪技术进行目标进程的控制流获取不会依赖程序的编译器。同时,本申请基于目标进程的指令流维护影子堆栈,进而基于影子堆栈的返回地址与控制流的地址实现控制流检测,该过程基于堆栈技术实现,也不依赖程序的编译器。因此,采用本申请实施例的方案,可以实现不依赖编译器的控制流检测,从而无论是针对版本较新的、可以支持CFG技术的应用程序和编译器,还是针对版本陈旧、不支持CFG技术的应用程序和编译器,采用本申请实施例的方案均可以进行控制流检测,从而实现基于控制流的攻击检测(例如ROP漏洞攻击),弥补了现有基于CFG技术进行检测的不足。
[0007]进一步地,在通过处理器跟踪技术获取目标进程的控制流之后,将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配之前,所述方法还包括:根据所述控制流和所述目标进程所属程序的代码重建指令流;根据重建的所述指令流维护所述影子堆栈。
[0008]可以理解,处理器跟踪技术是在系统底层通过配置MSR(Model Specific Register,模型专用寄存器)实现的,是一种基于硬件的指令追踪技术,因此其资源十分宝贵。而基于程序的代码中可以复原一部分指令,因此通过处理器跟踪技术可以仅获取目标进程的关键信息(无法从目标进程所属程序的代码内获取的信息)。而基于上述方式,基于控制流和目标进程所属程序的代码重建指令流,这样就可以允许系统底层仅获取关键信息来构成控制流,无需获取完整的指令流,从而可以降低对系统底层的资源消耗。
[0009]进一步地,通过处理器跟踪技术获取目标进程的控制流包括:通过处理器跟踪技术对所述目标进程的指令流进行监控;保存所述指令流中的关键信息,得到所述控制流;其中,所述关键信息为无法从所述目标进程所属程序的代码内获取的信息。
[0010]在上述实现方式中,通过处理器跟踪技术可以对目标进程的指令流进行监控,从而保存其中的关键信息得到控制流,这样就无需保存完整的指令流,可以降低对系统底层的资源消耗。同时,由于关键信息为无法从目标进程所属程序的代码内获取的信息,因此基于控制流和目标进程所属程序的代码就可以重建指令流,从而保证方案的正常执行。
[0011]进一步地,所述关键信息包括以下至少一种:间接跳转指令;间接调用指令;jcc指令。
[0012]进一步地,通过处理器跟踪技术获取目标进程的控制流包括:通过处理器跟踪技术将所述目标进程的控制流保存至预设的缓存中;根据所述控制流和所述目标进程所属程序的代码重建指令流,包括:在所述缓存的剩余空间小于预设空间阈值的情况下,从所述缓存中取出所述控制流,并根据所述控制流和所述目标进程所属程序的代码重建指令流。
[0013]可以理解,处理器跟踪技术的执行发生在系统底层,而基于堆栈技术的堆栈维护以及地址匹配通常需要在应用层实现,因此控制流需要在系统底层和应用层之间传递,每一次传递均需要消耗资源。而在上述实现方式中,通过缓存进行控制流的暂存,并在缓存的剩余空间小于预设空间阈值的情况下,再才从缓存中取出控制流,并根据控制流和目标进程所属程序的代码重建指令流,这样就无需每获取一个控制流就进行传递,而是将许多控制流一次进行传递,从而可以降低资源消耗。
[0014]进一步地,所述通过处理器跟踪技术获取目标进程的控制流,包括:根据所述目标进程中当前运行的线程信息,配置模型专用寄存器MSR。
[0015]进一步地,所述通过处理器跟踪技术获取目标进程的控制流,还包括:在监测到线程切换的情况下,保存所述MSR的上下文信息,并根据新切换到的线程的线程信息配置所述MSR。
[0016]可以理解,目前的处理器跟踪技术的跟踪粒度并不能达到线程级别,仅可区分出每个处理器核心。而通过上述实现方式,基于线程的线程信息进行MSR的配置,并在监测到线程切换的情况下保存MSR的上下文信息并基于新的线程的线程信息配置MSR,这样就可以基于线程信息改变处理器监控的内存区域,并在线程被切换回去后可以通过保存的上下文信息进行恢复,从而实现线程粒度的控制流监测,从而具有更强的控制流检测效果。
[0017]本申请实施例还提供了一种控制流检测装置,包括:驱动模块,用于通过处理器跟踪技术获取目标进程的控制流;匹配模块,用于将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配;所述影子堆栈为通过所述目标进程的指令流维护的堆栈;控制模块,用于在所述影子堆栈的返回地址与所述控制流的地址不匹配的情况下,确定所述控制流被劫持。
[0018]本申请实施例还提供了一种电子设备,包括处理器及存储器;所述处理器用于执行所述存储器中存储的程序,以实现以上任一种的控制流检测方法。
[0019]本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种控制流检测方法,其特征在于,包括:通过处理器跟踪技术获取目标进程的控制流;将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配;所述影子堆栈为通过所述目标进程的指令流维护的堆栈;在所述影子堆栈的返回地址与所述控制流的地址不匹配的情况下,确定所述控制流被劫持。2.如权利要求1所述的控制流检测方法,其特征在于,在通过处理器跟踪技术获取目标进程的控制流之后,将所述控制流的地址与所述目标进程的影子堆栈的返回地址进行匹配之前,所述方法还包括:根据所述控制流和所述目标进程所属程序的代码重建指令流;根据重建的所述指令流维护所述影子堆栈。3.如权利要求1所述的控制流检测方法,其特征在于,通过处理器跟踪技术获取目标进程的控制流包括:通过处理器跟踪技术对所述目标进程的指令流进行监控;保存所述指令流中的关键信息,得到所述控制流;其中,所述关键信息为无法从所述目标进程所属程序的代码内获取的信息。4.如权利要求3所述的控制流检测方法,其特征在于,所述关键信息包括以下至少一种:间接跳转指令;间接调用指令;jcc指令。5.如权利要求2所述的控制流检测方法,其特征在于,通过处理器跟踪技术获取目标进程的控制流包括:通过处理器跟踪技术将所述目标进程的控制流保存至预设的缓存中;根据所述控制流和所述目标进程所属程序的代码重建指令流,包括:在所述缓存的剩余空间小于预设空间阈值的情...

【专利技术属性】
技术研发人员:张佳荟覃梓兴张苏洵刘铠文张春广
申请(专利权)人:戎码科技北京有限公司
类型:发明
国别省市:

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

1