基于动态类调用序列的可信度判断方法及装置制造方法及图纸

技术编号:35472481 阅读:18 留言:0更新日期:2022-11-05 16:19
本发明专利技术实施例提供一种基于动态类调用序列的可信度判断方法及装置。其中方法应用于基于Java语言开发的业务系统,包括:响应于Java虚拟机加载目标类,判断所述目标类是否为动态类;若所述目标类为动态类,判断所述动态类对应的堆栈信息中所述目标类的调用序列是否包含在动态类调用序列白名单中;若所述动态类对应的堆栈信息中所述目标类的调用序列未包含在动态类调用序列白名单中,则确定所述目标类不可信,拦截所述目标类的加载,并生成告警信息。本发明专利技术实施例可以防止攻击者通过构造恶意的动态类来实施攻击,达到安全防护的目的。达到安全防护的目的。达到安全防护的目的。

【技术实现步骤摘要】
基于动态类调用序列的可信度判断方法及装置


[0001]本专利技术涉及JAVA服务器安全
,尤其涉及一种基于动态类调用序列的可信度判断方法及装置。

技术介绍

[0002]在Java程序运行过程中,会产生很多class类对象,根据class文件是否在Java虚拟机(JavaVirtualMachine,简称JVM)运行前就存在,可以分为静态类和动态类。很多Java攻击使用的恶意类都是攻击者自己精心构造的,是JVM运行后才加载的,属于动态类。通常对于恶意的动态类可以通过设置监控点,进行黑规则匹配,在执行命令时对命中黑规则的攻击行为进行告警。然而基于黑规则匹配只能够针对已知的漏洞进行防护,并且是在触发恶意命令执行的时候才进行判断,监控点设置量大会对系统的性能造成影响。其中,黑规则是指已经被发现的、具有危害性的、可以被利用发起攻击的规则。漏洞是基于规则产生的,通过分析已知漏洞的原理,把产生已知漏洞的原理规则认为是危险的、不可信任的黑规则。在现有的防护中只要触发了黑规则,就会被认为正在利用这些已知漏洞发起攻击。

技术实现思路

[0003]针对现有技术中的问题,本专利技术实施例提供一种基于动态类调用序列的可信度判断方法及装置。
[0004]具体地,本专利技术实施例提供了以下技术方案:
[0005]第一方面,本专利技术实施例提供了一种基于动态类调用序列的可信度判断方法,应用于基于Java语言开发的业务系统,包括:
[0006]响应于Java虚拟机加载目标类,判断所述目标类是否为动态类;<br/>[0007]若所述目标类为动态类,判断所述动态类对应的堆栈信息中所述目标类的调用序列是否包含在动态类调用序列白名单中;
[0008]若所述动态类对应的堆栈信息中所述目标类的调用序列未包含在动态类调用序列白名单中,则确定所述目标类不可信,拦截所述目标类的加载,并生成告警信息。
[0009]进一步地,所述响应于Java虚拟机加载目标类,判断所述目标类是否为动态类之前,还包括:
[0010]对所述业务系统的源代码进行模拟执行,触发各种动态类生成;
[0011]获取每一个动态类生成时在相应堆栈信息中产生的调用序列,生成所述动态类调用序列白名单,每个所述动态类对应一条堆栈信息。
[0012]进一步地,每条所述堆栈信息中包含多个类方法,所述获取每一个动态类生成时在相应堆栈信息中产生的调用序列,生成所述动态类调用序列白名单,包括:
[0013]从对应堆栈信息的末尾开始向上逐个分析每一个类方法;
[0014]将满足动态类调用序列封闭原则的一组类方法,确定为一个动态类生成时产生的调用序列;
[0015]对所确定的动态类生成时产生的调用序列进行记录,得到所述动态类调用序列白名单。
[0016]进一步地,所述动态类调用序列封闭原则为:属于一类框架、与业务无关、模板化、内容固定、不受参数和调用类方法的对象影响。
[0017]进一步地,所述响应于Java虚拟机加载目标类,判断所述目标类是否为动态类,包括:
[0018]响应于Java虚拟机加载目标类,判断所述目标类的名称是否为所述业务系统的源代码中类的名称;
[0019]若所述目标类的名称为所述业务系统的源代码中类的名称,则确定所述目标类为静态类;
[0020]若所述目标类的名称不为所述业务系统的源代码中类的名称,则确定所述目标类为动态类。
[0021]进一步地,所述响应于Java虚拟机加载目标类,判断所述目标类是否为动态类之前,还包括:
[0022]对所述业务系统的源代码进行扫描,记录所述业务系统的源代码中类的名称。
[0023]进一步地,所述若所述目标类为动态类,判断堆栈信息中所述目标类的调用序列是否包含在动态类调用序列白名单中之后,还包括:
[0024]若所述动态类对应的堆栈信息中所述目标类的调用序列包含在动态类调用序列白名单中,则确定所述目标类可信,执行所述目标类的加载。
[0025]第二方面,本专利技术实施例还提供了一种基于动态类调用序列的可信度判断装置,应用于基于Java语言开发的业务系统,包括:
[0026]动态类判断模块,用于响应于Java虚拟机加载目标类,判断所述目标类是否为动态类;
[0027]可信度判断模块,用于若所述目标类为动态类,判断所述动态类对应的堆栈信息中所述目标类的调用序列是否包含在动态类调用序列白名单中;
[0028]拦截告警模块,用于若所述动态类对应的堆栈信息中所述目标类的调用序列未包含在动态类调用序列白名单中,则确定所述目标类不可信,拦截所述目标类的加载,并生成告警信息。
[0029]第三方面,本专利技术实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述基于动态类调用序列的可信度判断方法的步骤。
[0030]第四方面,本专利技术实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述基于动态类调用序列的可信度判断方法的步骤。
[0031]第五方面,本专利技术实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述基于动态类调用序列的可信度判断方法的步骤。
[0032]本专利技术实施例提供的基于动态类调用序列的可信度判断方法及装置,应用于基于Java语言开发的业务系统,通过响应于Java虚拟机加载目标类,判断目标类是否为动态类,
若目标类为动态类,判断动态类对应的堆栈信息中目标类的调用序列是否包含在动态类调用序列白名单中,若动态类对应的堆栈信息中目标类的调用序列未包含在动态类调用序列白名单中,则确定目标类不可信,拦截目标类的加载,并生成告警信息;利用在Java虚拟机加载动态类时,根据动态类调用序列白名单,判断所加载的动态类在堆栈信息中产生的调用序列是否为可信的调用序列,在所加载的动态类在堆栈信息中产生的调用序列为不可信的调用序列时,对动态类的加载实施拦截和告警,可以防止攻击者通过构造恶意的动态类来实施攻击,达到安全防护的目的,由于对恶意的动态类的拦截是在虚拟机加载时进行,可以阻止恶意的动态类进入虚拟机中触发恶意命令的执行,由于是根据动态类调用序列白名单对动态类的调用序列进行判断,可以起到对未知漏洞防护的作用,可以有效应对java脚本攻击。
附图说明
[0033]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034]图1是本专利技术实施例提供的基于动态类调用序列的可信度判断方法的流程示意图;
[0035]图2是本专利技术实施例提供的生成动态类调用序列白名单的流程示意图;
[0036本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态类调用序列的可信度判断方法,其特征在于,应用于基于Java语言开发的业务系统,包括:响应于Java虚拟机加载目标类,判断所述目标类是否为动态类;若所述目标类为动态类,判断所述动态类对应的堆栈信息中所述目标类的调用序列是否包含在动态类调用序列白名单中;若所述动态类对应的堆栈信息中所述目标类的调用序列未包含在动态类调用序列白名单中,则确定所述目标类不可信,拦截所述目标类的加载,并生成告警信息。2.根据权利要求1所述的基于动态类调用序列的可信度判断方法,其特征在于,所述响应于Java虚拟机加载目标类,判断所述目标类是否为动态类之前,还包括:对所述业务系统的源代码进行模拟执行,触发各种动态类生成;获取每一个动态类生成时在相应堆栈信息中产生的调用序列,生成所述动态类调用序列白名单,每个所述动态类对应一条堆栈信息。3.根据权利要求2所述的基于动态类调用序列的可信度判断方法,其特征在于,每条所述堆栈信息中包含多个类方法,所述获取每一个动态类生成时在相应堆栈信息中产生的调用序列,生成所述动态类调用序列白名单,包括:从对应堆栈信息的末尾开始向上逐个分析每一个类方法;将满足动态类调用序列封闭原则的一组类方法,确定为一个动态类生成时产生的调用序列;对所确定的动态类生成时产生的调用序列进行记录,得到所述动态类调用序列白名单。4.根据权利要求3所述的基于动态类调用序列的可信度判断方法,其特征在于,所述动态类调用序列封闭原则为:属于一类框架、与业务无关、模板化、内容固定、不受参数和调用类方法的对象影响。5.根据权利要求1至4中任一项所述的基于动态类调用序列的可信度判断方法,其特征在于,所述响应于Java虚拟机加载目标类,判断所述目标类是否为动态类,包括:响应于Java虚拟机加载目标类,判断所述目标类的名称是否为所述业务系统的源代...

【专利技术属性】
技术研发人员:慕逍寒龙良
申请(专利权)人:奇安信安全技术珠海有限公司
类型:发明
国别省市:

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

1