一种高危函数调用检测方法、装置、电子设备和存储介质制造方法及图纸

技术编号:38603072 阅读:10 留言:0更新日期:2023-08-26 23:36
本公开的实施例提供了一种高危函数调用检测方法、装置、电子设备和存储介质。应用于计算机技术领域,所述方法包括接收到调用函数请求时,判断所调用的函数是否为高危函数;若所调用的函数为高危函数,则调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler,所述pre_handler为调用所述高危函数前的处理函数,并记录cgroup信息;根据所述cgroup信息判断是否发出告警信息。以此方式,通过对调用函数是否为高危函数的判断以及调用基于kprobe技术的内核模块中注册的pre_handler对高危函数进行检测,实现在系统内部直接对高危函数的判断和调用检测,无需重启容器且对容器版本无要求,提高系统对高危函数探测的效率。测的效率。测的效率。

【技术实现步骤摘要】
一种高危函数调用检测方法、装置、电子设备和存储介质


[0001]本公开涉及计算机
,尤其涉及一种高危函数调用检测方法、装置、电子设备和存储介质。

技术介绍

[0002]高危函数指的是业界已经明确的存在安全隐患的函数,高危函数的存在严重威胁着容器的安全,容器的安全将影响到宿主机的安全,进而威胁整个网络的安全,因此,高危函数在容器的调用检测对于维持容器及网络安全具有重要意义。
[0003]现有seccomp机制在对容器是否运行高危函数进行检测时需要根据容器的版本和内核版本对容器的配置进行修改,甚至需要重启容器,大大降低了高危函数在容器的调用检测的效率。

技术实现思路

[0004]本公开提供了一种高危函数调用检测方法、装置、电子设备和存储介质。
[0005]根据本公开的第一方面,提供了一种高危函数调用检测方法。该方法包括:
[0006]接收到调用函数请求时,判断所调用的函数是否为高危函数;
[0007]若所调用的函数为高危函数,则调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler,所述pre_handler为调用所述高危函数前的处理函数,并记录cgroup信息;
[0008]根据所述cgroup信息判断是否发出告警信息。
[0009]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述高危函数为存在安全隐患的函数, 包括open_by_handle_at函数、ptrace函数和memfd_create函数。
>[0010]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述kprobe结构体还包括post_handler,所述post_handler为所述系统调用所述高危函数后的处理函数。
[0011]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,在调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler时,还包括记录所述高危函数的进程信息,所述进程信息包括进程号、进程树、进程名、进程运行参数、进程执行路径和所述高危函数的调用参数。
[0012]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述接收到调用函数请求时,判断所调用的函数是否为高危函数具体为:
[0013]若所述调用的函数存储于所述内核模块中,则所述调用的函数为高危函数;
[0014]若所述调用的函数未存储于所述内核模块中,则所述调用的函数不为高危函数。
[0015]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述内核模块的初始化接口为init_module或finit_module。
[0016]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述cgroup信息判断是否发出告警信息具体为:
[0017]收集pre_handler中采集的cgroup信息,并根据所述cgroup信息判断调用所述高危函数时的进程运行的资源组是否为容器进程,
[0018]若是,则发出告警信息;
[0019]若不是,则记录日志。
[0020]根据本公开的第二方面,提供了一种高危函数调用检测装置。该装置包括:
[0021]判断模块,用于接收到调用函数请求时,判断所调用的函数是否为高危函数;
[0022]调用模块,用于在所调用的函数为高危函数时调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler,所述pre_handler为调用所述高危函数前的处理函数,并记录cgroup信息;
[0023]告警模块,用于根据所述cgroup信息判断是否发出告警信息。
[0024]根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
[0025]根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本公开的第一方面和/或第二方面的方法。
[0026]本公开通过对调用函数是否为高危函数的判断以及调用基于kprobe技术的内核模块中注册的pre_handler对高危函数进行检测,实现在系统内部直接对高危函数的判断和调用检测,无需重启容器且对容器版本无要求,提高系统对高危函数探测的效率。
[0027]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
[0028]结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
[0029]图1示出了根据本公开的实施例的高危函数调用检测方法的流程图;
[0030]图2示出了根据本公开的实施例的高危函数调用检测装置的框图;
[0031]图3示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
[0032]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
[0033]另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0034]请参阅图1所示,图1示出了本公开的实施例的高危函数调用检测方法的流程图,包括:
[0035]S101,接收到调用函数请求时,判断所调用的函数是否为高危函数。
[0036]在一些实施例中,所述高危函数为存在安全隐患的函数,可以为open_by_handle_at函数,所述open_by_handle_at函数存在容器逃逸的风险,可以打开宿主机的文件目录。
[0037]在另一些实施例中,所述高危函数还可以为ptrace函数,所述ptrace函数存在进程注入的风险,所述ptrace函数提供了父进程观察和控制其子进程执行的能力,并允许父进程检查和替换子进程的内核镜像的值,因此攻击者可以通过ptrace函数来跟踪进程,并在进程中注入攻击者自己的so,以达到攻击的目的。
[0038]在另一些实施例中,所述高危函数还可以为memfd_create函数,所述memfd_create函数存在无文件渗透攻击的风险。
[0039]在另一些实施例中,所述高危函数还可以为setns函数和reboot本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种高危函数调用检测方法,包括:接收到调用函数请求时,判断所调用的函数是否为高危函数;若所调用的函数为高危函数,则调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler,所述pre_handler为调用所述高危函数前的处理函数,并记录cgroup信息;根据所述cgroup信息判断是否发出告警信息。2.根据权利要求1所述的方法,其中,所述高危函数为存在安全隐患的函数,包括open_by_handle_at函数、ptrace函数和memfd_create函数。3.根据权利要求1所述的方法,其中,所述kprobe结构体还包括post_handler,所述post_handler为所述系统调用所述高危函数后的处理函数。4.根据权利要求1所述的方法,其中,在调用由内核模块预先注册所述高危函数kprobe结构体中的pre_handler时,还包括记录所述高危函数的进程信息,所述进程信息包括进程号、进程树、进程名、进程运行参数、进程执行路径和所述高危函数的调用参数。5.根据权利要求1所述的方法,其中,所述接收到调用函数请求时,判断所调用的函数是否为高危函数具体为:若所述调用的函数存储于所述内核模块中,则所述调用的函数为高危函数;若所述调用的函数未存储于所述内核模块中,则所述调用的函数不为高危函数。6.根据权利要求1所述的方法,其中...

【专利技术属性】
技术研发人员:陈刚彭婷欧阳军王治
申请(专利权)人:中通服创发科技有限责任公司
类型:发明
国别省市:

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

1