一种漏洞防御方法、系统、服务器及存储介质技术方案

技术编号:37182003 阅读:12 留言:0更新日期:2023-04-20 22:47
本申请提供一种漏洞防御方法、系统、服务器及存储介质,方法包括:监控组件的风险函数;判断风险函数是否被触发,若风险函数被触发,基于钩子函数获取触发风险函数的操作请求,并获取与操作请求相对应的调用栈;获取与风险函数相对应的辅助定位函数,基于辅助定位函数判断调用栈是否符合风险函数所对应的组件漏洞利用时的调用链,若调用栈符合风险函数所对应的组件漏洞利用时的调用链,拦截操作请求,并上报与风险函数相对应的漏洞。本申请通过监控组件中的风险函数,仅需要通过判断被触发的风险函数所在的调用栈是否符合该组件漏洞利用时的代码调用链,即可高效准确地进行漏洞防御工作。工作。工作。

【技术实现步骤摘要】
一种漏洞防御方法、系统、服务器及存储介质


[0001]本申请涉及计算机
,特别涉及一种漏洞防御方法、系统、服务器及存储介质。

技术介绍

[0002]近年来,现代软件中开发者自己写的代码越来越少,第三方的库、组件在整个软件中占的比例越来越高,这就导致当组件存在漏洞时,会对所有使用该组件的软件造成重大的打击,因此针对组件漏洞的防御产品成了大部分行业的刚需。
[0003]传统的攻击防御的防御原则大多数都是流量的规则匹配原则,该技术类似于黑名单机制,比较死板,面对新的绕过手段或新的利用手段,一点办法都没有,只有不断的加入新的规则,这样无法很好的适应激烈的攻防对抗。另外这种通用的拦截规则有时会与用户的正常输入发生冲突,产生误拦截。为了更快速地进行攻击防御,现有技术通过监控软件框架中的关键函数,在发生关键函数调用时,对调用关键函数的操作请求的实际函数调用栈进行匹配,并在实际函数调用栈与预先设定的该操作请求所对应的标准函数调用栈不一致时,进行操作请求的拦截。
[0004]在上述的防御漏洞攻击的方式中,在面对防御一个漏洞攻击的情况下,由于软件在正常进行工作流程时,遇到不同的数据、报错以及bug,都有可能产生不同的代码运行链。因此,如果要判断当前操作请求是否需要拦截时,需要将多个实用函数调用栈与操作请求对应的标准函数调用栈进行对比,判断是否一致。若要防御多个漏洞攻击,需要进行对比的工作量将会更多,这无疑会消耗大量的人力物力。

技术实现思路

[0005]本申请通过监控组件中的风险函数,仅需要通过判断被触发的风险函数所在的调用栈是否符合该组件漏洞利用时的代码调用链,即可高效准确地进行漏洞防御工作。
[0006]第一方面,本实施例提供了一种漏洞防御方法,所述方法包括:监控组件的风险函数;判断所述风险函数是否被触发,若是,基于钩子函数获取触发所述风险函数的操作请求,并获取与所述操作请求相对应的调用栈;获取与所述风险函数相对应的辅助定位函数,基于所述辅助定位函数判断所述调用栈是否符合所述风险函数所对应的组件漏洞利用时的调用链,若是,拦截所述操作请求,并上报与所述风险函数相对应的漏洞。
[0007]在其中的一些实施例中,所述获取与所述操作请求对应的调用栈包括:通过钩子函数获取所述操作请求的执行流程,基于所述执行流程获取当前线程的调用栈。
[0008]在其中的一些实施例中,所述监控组件的风险函数之前包括:获取所述组件在历史时刻发生的历史漏洞,基于所述历史漏洞获得实现组件漏洞
利用时的风险函数。
[0009]在其中的一些实施例中,所述获取与所述风险函数相对应的辅助定位函数包括:基于所述风险函数获得多个与所述风险函数相关的辅助定位函数,其中,每个所述风险函数所对应的多个所述辅助定位函数都不同。
[0010]在其中的一些实施例中,所述基于所述辅助定位函数判断所述调用栈是否符合组件漏洞利用时的调用链包括:基于所述风险函数获取所述风险函数所对应的组件漏洞利用时的辅助定位函数;判断所述风险函数和所述辅助定位函数是否在所述调用栈中,若是,所述调用栈符合组件漏洞利用时的调用链;否则,所述调用栈不符合组件漏洞利用时的调用链。
[0011]在其中的一些实施例中,所述调用栈不符合组件漏洞利用时的调用链后包括:判断被触发的所述风险函数是否在所述实现组件漏洞利用时的风险函数中只有一个,若是,放行所述调用链所对应漏洞的操作请求;否则,拦截所述操作请求,并上报与当前组件漏洞拥有相同风险函数的其它组件漏洞。
[0012]第二方面,本实施例提供了一种漏洞防御系统,所述系统包括监控模块、第一判断模块、获取模块、第二判断模块和拦截模块;其中,所述监控模块,用来监控组件的风险函数;所述第一判断模块,用来判断所述风险函数是否被触发,若是,基于钩子函数获取触发所述风险函数的操作请求,并获取与所述操作请求相对应的调用栈;所述获取模块,用来获取与所述风险函数相对应的辅助定位函数;所述第二判断模块,用来基于所述辅助定位函数判断所述调用栈是否符合所述风险函数所对应组件漏洞利用时的调用;拦截模块,用来所述调用栈符合组件漏洞利用时的调用链时,拦截所述操作请求,并上报与所述风险函数相对应的漏洞。
[0013]在其中的一些实施例中,所述系统还包括存储模块;其中,所述存储模块,用于获取所述组件在历史时刻发生的历史漏洞,基于所述历史漏洞获得实现组件漏洞利用的风险函数。
[0014]第三方面,本申请实施例提供了一种服务器,所述服务器包括:处理器和存储器,所述存储器上存储有能在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的漏洞防御方法。
[0015]第四方面,本申请实施例提供了一种存储介质,其上存储有能在处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的漏洞防御方法。
[0016]通过采用上述方法,根据历史发生的组件漏洞,可以获得实现组件漏洞利用时的风险函数以及与该风险函数处在同一个线程的调用栈的多个相关函数来作为辅助定位函数,这两种函数的组合仅会指向对组件漏洞利用的场景,当组件的正常功能调用时是不会触发这条调用链的。其中,在确定当前请求是否属于恶意进攻以及恶意进行的漏洞时,先监控组件的风险函数,当有请求触发了风险函数后,则意味着可能是一次恶意的进攻,此时通过钩子函数来获取触发该风险函数的操作请求,并获取该操作请求的执行流程,从而获得当前线程的调用栈;然后通过判断风险函数和与风险函数相关联的辅助定位函数是否全部在该调用栈中,若是,则说明当前请求是一个针对该风险函数所对应的组件漏洞的攻击,需
要对该请求进行拦截。由于组件的不同漏洞可能会有相同的风险函数,因此,当风险函数和与风险函数相关联的辅助定位函数没有全部在该调用栈中,则进一步确定该风险函数在过去实现组件漏洞利用时的风险函数中是否只有一个,若是的话,则表明该请求是一个正常的功能调用请求,需要放行该操作请求;若不是的话,就拦截该操作请求,并上报与当前组件漏洞拥有相同风险函数的其他组件漏洞。
[0017]通过本申请,当风险函数被触发时,只需要将该风险函数所对应的组件漏洞的运行流程和当前调用栈进行对比即可,而该运行流程往往只有一条代码运行的调用链,可以节省大量的人力物力。另外,该当组件的正常功能调用时是不会触发这条调用链的,只有组件在受到漏洞攻击时才会触发这条调用链,可以有效的避免发生误拦截操作。因此本申请可以高效准确地进行漏洞防御工作。
附图说明
[0018]图1是本实施例提供的一种漏洞防御方法流程图。
[0019]图2是本实施例提供的一种漏洞防御的逻辑示意图。
[0020]图3是本实施例提供的一种漏洞防御系统框架图。
[0021]图4是本实施例提供的服务器的结构框图。
具体实施方式
[0022]为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。然而,本领域的普通技术人员应该明白,可以在没有这本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种漏洞防御方法,其特征在于,所述方法包括:监控组件的风险函数;判断所述风险函数是否被触发,若是,基于钩子函数获取触发所述风险函数的操作请求,并获取与所述操作请求相对应的调用栈;获取与所述风险函数相对应的辅助定位函数,基于所述辅助定位函数判断所述调用栈是否符合所述风险函数所对应的组件漏洞利用时的调用链,若是,拦截所述操作请求,并上报与所述风险函数相对应的漏洞。2.根据权利要求1所述的方法,其特征在于,所述获取与所述操作请求对应的调用栈包括:通过钩子函数获取所述操作请求的执行流程,基于所述执行流程获取当前线程的调用栈。3.根据权利要求1所述的方法,其特征在于,所述监控组件的风险函数之前包括:获取所述组件在历史时刻发生的历史漏洞,基于所述历史漏洞获得实现组件漏洞利用时的风险函数。4.根据权利要求3所述的方法,其特征在于,所述获取与所述风险函数相对应的辅助定位函数包括:基于所述风险函数获得多个与所述风险函数相关的辅助定位函数,其中,每个所述风险函数所对应的多个所述辅助定位函数都不同。5.根据权利要求4所述的方法,其特征在于,所述基于所述辅助定位函数判断所述调用栈是否符合组件漏洞利用时的调用链包括:基于所述风险函数获取所述风险函数所对应的组件漏洞利用时的辅助定位函数;判断所述风险函数和所述辅助定位函数是否在所述调用栈中,若是,所述调用栈符合组件漏洞利用时的调用链;否则,所述调用栈不符合组件漏洞利用时的调用链。6.根据权利要求5所述的方法,其特征在于,所述调用栈不符合组件漏洞利用时的调用链后包...

【专利技术属性】
技术研发人员:范丙华徐锋王凯翔
申请(专利权)人:杭州孝道科技有限公司
类型:发明
国别省市:

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

1