CN114091031A - 基于白规则的类加载防护方法及装置 - Google Patents
基于白规则的类加载防护方法及装置 Download PDFInfo
- Publication number
- CN114091031A CN114091031A CN202111183068.4A CN202111183068A CN114091031A CN 114091031 A CN114091031 A CN 114091031A CN 202111183068 A CN202111183068 A CN 202111183068A CN 114091031 A CN114091031 A CN 114091031A
- Authority
- CN
- China
- Prior art keywords
- class
- loading
- target thread
- stack
- matching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000012544 monitoring process Methods 0.000 claims abstract description 56
- 238000013515 script Methods 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 13
- 230000003068 static effect Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 5
- 241001388118 Anisotremus taeniatus Species 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 241000282470 Canis latrans Species 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种基于白规则的类加载防护方法及装置。其中,该方法包括:通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名;通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。该方法实现了对未知漏洞有效的防护。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种基于白规则的类加载防护方法及装置。
背景技术
基于Java的脚本攻击需要在Java虚拟机(Java Virtual Machine,简称JVM)中运行恶意脚本,类加载是Java脚本被JVM执行的必要前提。现有的基于Java开发的服务器的安全大多是通过黑名单的方式进行监控,比如百度的OpenRASP,是对常用框架中容易被攻击的节点设置监控,即对黑客常用的攻击类进行黑名单匹配并告警。这种基于黑规则的拦截方式只能针对过往出现过的漏洞进行防护。
发明内容
针对现有技术中的问题,本发明实施例提供一种基于白规则的类加载防护方法及装置。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种基于白规则的类加载防护方法,包括:通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作;若有加载类的操作,通过所述第一监控点提供的对应所述目标线程的文件路径,计算所述文件路径对应的文件的字节码特征码,将所述字节码特征码与白名单匹配,得到第一匹配结果,所述白名单包括所述字节码特征码和合法加载类的类名;通过第二监控点获取所述目标线程的所述加载类的类名,将所述类名与所述白名单匹配,得到第二匹配结果;若所述第一匹配结果和/或所述第二匹配结果为匹配失败,则所述目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
进一步地,所述通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作之前,还包括:通过静态收集模块对部署中间件及部署代码进行扫描,得到对应的合法加载类的类名和字节码特征码,并将所述合法加载类的类名和所述字节码特征码记录在所述白名单中。
进一步地,所述通过静态收集模块对部署中间件及部署代码进行扫描,包括:通过字节码解析框架对所述部署中间件及部署代码中的字节码文件进行解析。
进一步地,所述第一监控点包括SecurityManager类的checkRead方法,以及所述通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作,包括:通过SecurityManager类的checkRead方法获取所述目标线程的堆栈,对所述堆栈进行遍历检测,若检测到ClassLoader的子类,则确定所述目标线程有加载类的操作,否则,确定所述目标线程没有加载类的操作。
进一步地,所述第二监控点包括Instrumentation类的transform方法,以及所述通过第二监控点获取所述目标线程要加载的类的类名,包括:通过Instrumentation类的transform方法获取所述目标线程要加载的类的类名。
进一步地,所述生成告警信息之后,还包括:发送所述告警信息和/或存储所述告警信息,所述告警信息包括所述攻击脚本的文件路径、文件内容、文件加载时间、攻击类的类名、加载所述攻击类的加载器和加载时的堆栈信息。
第二方面,本发明实施例还提供了一种基于白规则的类加载防护装置,包括:第一处理模块,用于通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作;第二处理模块,用于若有加载类的操作,通过所述第一监控点提供的对应所述目标线程的文件路径,计算所述文件路径对应的文件的字节码特征码,将所述字节码特征码与白名单匹配,得到第一匹配结果,所述白名单包括所述字节码特征码和合法加载类的类名;第三处理模块,用于通过第二监控点获取所述目标线程的所述加载类的类名,将所述类名与所述白名单匹配,得到第二匹配结果;若所述第一匹配结果和/或所述第二匹配结果为匹配失败,则所述目标线程为攻击脚本的线程,生成告警信息;否则继续执行类加载操作。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述基于白规则的类加载防护方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述基于白规则的类加载防护方法的步骤。
第五方面,本发明实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述基于白规则的类加载防护的步骤。
本发明实施例提供的基于白规则的类加载防护方法及装置,通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作;若有加载类的操作,通过所述第一监控点提供的对应所述目标线程的文件路径,计算所述文件路径对应的文件的字节码特征码,将所述字节码特征码与白名单匹配,得到第一匹配结果,所述白名单包括所述字节码特征码和合法加载类的类名;通过第二监控点获取所述目标线程的所述加载类的类名,将所述类名与所述白名单匹配,得到第二匹配结果;若所述第一匹配结果和/或所述第二匹配结果为匹配失败,则所述目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。可以看出,针对需要类加载的脚本,通过类名和字节码特征码分别与白名单匹配的拦截方式,能够有效的针对未知漏洞进行防护,对没有在白名单中的类名和字节码特征码进行告警,通过这个防护手段能够有效发现恶意脚本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于白规则的类加载防护方法实施例流程图;
图2为本发明构建白名单的方法实施例流程图;
图3为本发明基于白规则的类加载防护方法的另一些实施例流程图;
图4为本发明基于白规则的类加载防护方法的应用场景的示意图;
图5为本发明基于白规则的类加载防护装置实施例结构示意图;
图6为本发明电子设备实体实施例结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明基于白规则的类加载防护方法实施例流程图。如图1所示,本发明实施例的基于白规则的类加载防护方法包括:
S101,通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作。
在一些实施例中,目标线程对应的脚本可以是Java脚本或者其他需要进行类加载操作的脚本。Java脚本需要在JVM中运行,类加载是Java脚本被JVM执行的必要前提。当类被加载时,会触发第一监控点,通过第一监控点获取目标线程的堆栈。其中,本发明对扫描的方式不做限定。
S102,若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名。
在一些实施例中,文件路径对应要运行的脚本的路径。在文件被加载之前,需要先确定文件路径,通过第一监控点可以获得对应目标线程的文件路径。文件路径对应的文件可以是Java语言编写的文件。Java和C语言很大的不同是C语言不是跨平台的,C语言编译后就是对应CPU的汇编指令,不同操作系统的汇编指令有差异,所以无法跨平台。而Java语言编译之后是字节码,字节码需要通过JVM来运行,而不同操作系统的Java虚拟机是定制的,所以针对不同的操作系统,JVM会将相同格式的字节码翻译成对应操作系统的汇编指令运行,所以JVM也不是跨平台的。尽管JVM不是跨平台的,但是Java代码是可以跨平台运行的。Java跨平台最大原因就是因为编译成了字节码,从而实现“一次编译,到处运行”的特点。因此,可以根据文件路径找到文件,并根据文件内容计算对应的文件的字节码特征码。计算字节码特征码依据的算法可以是md5或者hash等。作为示例,第一匹配结果可以是“字节码特征码匹配不成功”或者“字节码特征码匹配成功”。本发明对字节码特征码的计算方式不做限定。本发明对匹配结果的表达形式不做限定。
S103,通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果。
作为示例,第二匹配结果可以是“类名匹配成功”或者“类名匹配不成功”等。
S104,若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
作为示例,第一匹配结果可以是“字节码特征码匹配不成功”,第二匹配结果可以是“类名匹配成功”,那么因为第一匹配结果匹配失败,所以目标线程为攻击脚本的线程,生成告警信息,也可以在生产告警信息的同时阻止加载类的操作。
本发明实施例提供的基于白规则的类加载防护方法,通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和加载类的类名;通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。可以看出,针对需要类加载的脚本,通过类名和字节码特征码分别与白名单匹配的拦截方式,能够有效的针对未知漏洞进行防护,对没有在白名单中的类名和字节码特征码进行告警,通过这个防护手段能够有效发现恶意脚本,也可用于保证基于Java开发的服务器安全。
图2为本发明构建白名单的方法实施例流程图。如图2所示,本发明实施例的构建白名单的方法,包括:
S201,通过静态收集模块对部署中间件及部署代码进行扫描,得到对应的合法加载类的类名和字节码特征码。
在一些实施例中,静态收集模块可以是现有的工具,也可以是根据需要开发或集成的工具。部署中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。部署代码指的是某个应用的源码。字节码特征码可以是经过信息-摘要算法5(Message-Digest Algorithm 5,简称md5)或者散列(hash)加密后的字节码文件。对部署中间件及部署代码进行扫描后,得到应用在执行过程中需要加载的类以及字节码文件,即得到类名和字节码特征码。
S202,将合法加载类的类名和字节码特征码记录在白名单中。
在一些实施例中,作为示例,也可以将白名单直接加载到内存中,也可以使用时再加载到内存中。作为示例,白名单可以是.xml的文件格式,白名单的内容可以参考以代码。
<?xml version="1.0"encoding="utf-8"?><white>
<classes>
<class>
<isSelfClass val="true"/>
<path
val="D:\DynamicStaticClass\attach.jar!\com\qianxin\runtime\AttachConfig.cl ass"/>
//类名
<superClass val="java.lang.Object"/>
<name val="com.qianxin.runtime.AttachConfig"/>
//字节码特征码
<md5 val="1538f21b87ebf1d9ba1982c7d67ca237"/>
</class>
<class>
<isSelfClass val="true"/>
<pathval="D:\DynamicStaticClass\attach.jar!\com\qianxin\runtime\Command.class"/>
//类名
<superClass val="java.lang.Object"/>
<name val="com.qianxin.runtime.Command"/>
//字节码特征码
<md5 val="64739e167ce9b3075379338d0878728d"/>
</class>
</classes>
<summary>
<total val="112920"/>
<createdAt val="2021-07-21 10:54:44"/>
</summary>
</white>
在一些可选的实现方式中,通过静态收集模块对部署中间件及部署代码进行扫描,包括:通过字节码解析框架对部署中间件及部署代码中的字节码文件进行解析。作为示例,可以用Javaassist等字节码解析框架对部署中间件及部署代码中的所有字节码文件进行解析,并获取其类名及对应字节码特征码。
本发明实施例提供的构建白名单的方法,通过静态收集模块对部署中间件及部署代码进行扫描,得到对应的类名和字节码特征码,并将类名和字节码特征码记录在白名单中,能够在某个应用使用前建立好白名单。
图3为本发明基于白规则的类加载防护方法的另一些实施例的流程图。如图3所示,本发明实施例的基于白规则的类加载防护方法包括:
S301,通过SecurityManager类的checkRead方法获取目标线程的堆栈,对堆栈进行遍历检测,若检测到ClassLoader的子类,则确定目标线程有加载类的操作,否则,确定目标线程没有加载类的操作。
在一些实施例中,SecurityManager类的checkRead方法还可以分析并检测所选文件的读取错误;可以分析和检测驱动器/分区上收集的所有文件的读取错误;可以通过比较MD5算法哈希来检查文件的完整性;还可以恢复和复制部分不可读的文件。JVM本身包含了一个Classloader类加载器,用来加载Java类到Java虚拟机中的一种加载器。
S302,若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名。
在一些实施例中,第一监控点包括SecurityManager类的checkRead方法,因此,若有加载类的操作,可以通过SecurityManager类的checkRead方法提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码。
S303,通过Instrumentation类的transform方法获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果。
在一些实施例中,当对应文件路径的文件被加载时,文件内容会以数据流的形式被加载,这时,第二监控点也可以根据数据流计算字节码特征码,将字节码特征码和监控到的类名与白名单进行匹配,以提高对恶意脚本检测的准确率。其中,第二监控点也可以是Instrumentation类的transform方法。即,通过Instrumentation类的transform方法获取目标线程要加载的类的类名和加载的数据流的字节码特征码,将类名以及字节码特征码分别与白名单匹配,得到第二匹配结果。作为示例,第二匹配结果可以是“类名和/或字节码特征码匹配成功”。
S304,若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
在一些可选实现方式中,生成告警信息之后,还可以包括:发送告警信息和/或存储告警信息,告警信息包括以下至少一种:攻击脚本的文件路径、文件内容、文件加载时间、攻击类的类名、加载攻击类的加载器和加载时的堆栈信息。
作为示例,文件路径可以是C:\Users\Administrator\Desktop\apache-tomcat-8.5.61\apache-tomcat-8.5.61\webapps\shiro\index.jsp;
文件内容可以是任意得内容,本发明对此不做限制;
加载时间可以是Mon Mar 01 21:02:50CST 2021;
加载类可以是index_jsp.class;
加载器可以是java.lang.AppClassLoader;
堆栈信息可以是java.lang.Thread.run->org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run->
java.util.concurrent.ThreadPoolExecutor$Worker.run->
java.util.concurrent.ThreadPoolExecutor.runWorker->
org.apache.tomcat.util.net.SocketProcessorBase.run->
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun->
org.apache.coyote.AbstractProtocol$ConnectionHandler.process->
org.apache.coyote.AbstractProcessorLight.process->
org.apache.coyote.http11.Http11Processor.service->
org.apache.catalina.connector.CoyoteAdapter.service->
org.apache.catalina.connector.CoyoteAdapter.postParseRequest->
org.apache.catalina.mapper.Mapper.map->
org.apache.catalina.mapper.Mapper.internalMap->
org.apache.catalina.mapper.Mapper.internalMapWrapper->
org.apache.catalina.webresources.StandardRoot.getResource->
org.apache.catalina.webresources.StandardRoot.getResource->
org.apache.catalina.webresources.Cache.getResource->
org.apache.catalina.webresources.CachedResource.validateResource->
org.apache.catalina.webresources.StandardRoot.getResourceInternal->
org.apache.catalina.webresources.DirResourceSet.getResource->
org.apache.catalina.webresources.AbstractFileResourceSet.file->
java.io.File.getCanonicalPath->java.io.Win32FileSystem.canonicalize->
java.io.File.exists->
本发明实施例提供的基于白规则的类加载防护的方法,通SecurityMa-nager类的checkRead方法和Instrumentation类的transform方法确定对应目标线程的字节码特征码和目标线程要加载的类的类名,在确定字节码特征码和/或类名不在白名单中后,将生成的告警信息发送和/或存储,从而对未知漏洞进行了有效的防护。
作为示例,如图4所示的一个应用场景,使用静态收集模块对中间件和源码运行扫描,得到白名单。将白名单加载到动态告警模块中,动态告警模块根据得到类名以及字节码特征码与白名单匹配,若匹配不成功,那么写入告警信息,也可以将告警信息发送至客户端或者保存在本地。
图5为本发明基于白规则的类加载防护装置实施例结构示意图。如图5所示,该基于白规则的类加载防护装置,包括:
第一处理模块501,用于通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;
第二处理模块502,用于若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名;
第三处理模块503,用于通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行类加载操作。
可选地,装置还包括:
第四处理模块,用于通过静态收集模块对部署中间件及部署代码进行扫描,得到对应的合法加载类的类名和字节码特征码,并将合法加载类的类名和字节码特征码记录在白名单中。
可选地,第四处理模块,包括:
解析单元,用于通过字节码解析框架对部署中间件及部署代码中的字节码文件进行解析。
可选地,第一监控点包括SecurityManager类的checkRead方法,以及第一处理模块501,包括:
检测单元,用于通过SecurityManager类的checkRead方法获取目标线程的堆栈,对堆栈进行遍历检测,若检测到ClassLoader的子类,则确定目标线程有加载类的操作,否则,确定目标线程没有加载类的操作。
可选地,第二监控点包括Instrumentation类的transform方法,以及第三处理模块503,包括:
获取类名单元,用于通过Instrumentation类的transform方法获取目标线程要加载的类的类名。
可选地,装置还包括:
发送告警信息模块,用于发送告警信息和/或存储告警信息,告警信息包括以下至少一种:攻击脚本的文件路径、文件内容、文件加载时间、攻击类的类名、加载攻击类的加载器和加载时的堆栈信息。
举个例子如下:
图6示例了一种电子设备的实体结构示意图,如图6示,该电子设备可以包括:处理器(processor)601、通信接口(Communications Interface)602、存储器(memory)603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。处理器601可以调用存储器603中的逻辑指令,以执行如下方法:通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名;通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
此外,上述的存储器603中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各实施例提供的基于白规则的类加载防护方法,例如包括:通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名;通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于白规则的类加载防护方法,例如包括:通过第一监控点获取目标线程的堆栈,对堆栈进行扫描,判断目标线程是否有加载类的操作;若有加载类的操作,通过第一监控点提供的对应目标线程的文件路径,计算文件路径对应的文件的字节码特征码,将字节码特征码与白名单匹配,得到第一匹配结果,白名单包括字节码特征码和合法加载类的类名;通过第二监控点获取目标线程的加载类的类名,将类名与白名单匹配,得到第二匹配结果;若第一匹配结果和/或第二匹配结果为匹配失败,则目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于白规则的类加载防护方法,其特征在于,所述方法包括:
通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作;
若有加载类的操作,通过所述第一监控点提供的对应所述目标线程的文件路径,计算所述文件路径对应的文件的字节码特征码,将所述字节码特征码与白名单匹配,得到第一匹配结果,所述白名单包括所述字节码特征码和合法加载类的类名;
通过第二监控点获取所述目标线程的所述加载类的类名,将所述类名与所述白名单匹配,得到第二匹配结果;
若所述第一匹配结果和/或所述第二匹配结果为匹配失败,则所述目标线程为攻击脚本的线程,生成告警信息;否则继续执行加载类的操作。
2.根据权利要求1所述的基于白规则的类加载防护方法,其特征在于,所述通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作之前,还包括:
通过静态收集模块对部署中间件及部署代码进行扫描,得到对应的合法加载类的类名和字节码特征码,并将所述合法加载类的类名和所述字节码特征码记录在所述白名单中。
3.根据权利要求2所述的基于白规则的类加载防护方法,其特征在于,所述通过静态收集模块对部署中间件及部署代码进行扫描,包括:
通过字节码解析框架对所述部署中间件及部署代码中的字节码文件进行解析。
4.根据权利要求1所述的基于白规则的类加载防护方法,其特征在于,所述第一监控点包括SecurityManager类的checkRead方法,以及
所述通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作,包括:
通过SecurityManager类的checkRead方法获取所述目标线程的堆栈,对所述堆栈进行遍历检测,若检测到ClassLoader的子类,则确定所述目标线程有加载类的操作,否则,确定所述目标线程没有加载类的操作。
5.根据权利要求1所述的基于白规则的类加载防护方法,其特征在于,所述第二监控点包括Instrumentation类的transform方法,以及
所述通过第二监控点获取所述目标线程的所述加载类的类名,包括:
通过Instrumentation类的transform方法获取所述目标线程的加载类的类名。
6.根据权利要求1所述的基于白规则的类加载防护方法,其特征在于,所述生成告警信息之后,还包括:
发送所述告警信息和/或存储所述告警信息,所述告警信息包括以下至少一种:所述攻击脚本的文件路径、文件内容、文件加载时间、攻击类的类名、加载所述攻击类的加载器和加载时的堆栈信息。
7.一种基于白规则的类加载防护装置,其特征在于,所述方法包括:
第一处理模块,用于通过第一监控点获取目标线程的堆栈,对所述堆栈进行扫描,判断所述目标线程是否有加载类的操作;
第二处理模块,用于若有加载类的操作,通过所述第一监控点提供的对应所述目标线程的文件路径,计算所述文件路径对应的文件的字节码特征码,将所述字节码特征码与白名单匹配,得到第一匹配结果,所述白名单包括所述字节码特征码和合法加载类的类名;
第三处理模块,用于通过第二监控点获取所述目标线程的所述加载类的类名,将所述类名与所述白名单匹配,得到第二匹配结果;若所述第一匹配结果和/或所述第二匹配结果为匹配失败,则所述目标线程为攻击脚本的线程,生成告警信息;否则继续执行类加载操作。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的基于白规则的类加载防护方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于白规则的类加载防护方法的步骤。
10.一种计算机程序产品,其上存储有可执行指令,其特征在于,该指令被处理器执行时使处理器实现如权利要求1至6中任一项所述基于白规则的类加载防护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183068.4A CN114091031A (zh) | 2021-10-11 | 2021-10-11 | 基于白规则的类加载防护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183068.4A CN114091031A (zh) | 2021-10-11 | 2021-10-11 | 基于白规则的类加载防护方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114091031A true CN114091031A (zh) | 2022-02-25 |
Family
ID=80296722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111183068.4A Pending CN114091031A (zh) | 2021-10-11 | 2021-10-11 | 基于白规则的类加载防护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114091031A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115314244A (zh) * | 2022-06-27 | 2022-11-08 | 深圳开源互联网安全技术有限公司 | 一种白名单安全防护方法、装置、设备及可读存储介质 |
CN115906104A (zh) * | 2023-02-23 | 2023-04-04 | 国网山东省电力公司泰安供电公司 | 一种二次封装后开源组件的安全检测方法及装置 |
CN118260750A (zh) * | 2024-05-27 | 2024-06-28 | 北京升鑫网络科技有限公司 | 攻击行为检测方法和装置、攻击行为阻断方法和装置 |
-
2021
- 2021-10-11 CN CN202111183068.4A patent/CN114091031A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115314244A (zh) * | 2022-06-27 | 2022-11-08 | 深圳开源互联网安全技术有限公司 | 一种白名单安全防护方法、装置、设备及可读存储介质 |
CN115314244B (zh) * | 2022-06-27 | 2023-10-10 | 深圳开源互联网安全技术有限公司 | 一种白名单安全防护方法、装置、设备及可读存储介质 |
CN115906104A (zh) * | 2023-02-23 | 2023-04-04 | 国网山东省电力公司泰安供电公司 | 一种二次封装后开源组件的安全检测方法及装置 |
CN118260750A (zh) * | 2024-05-27 | 2024-06-28 | 北京升鑫网络科技有限公司 | 攻击行为检测方法和装置、攻击行为阻断方法和装置 |
CN118260750B (zh) * | 2024-05-27 | 2024-09-17 | 北京升鑫网络科技有限公司 | 攻击行为检测方法和装置、攻击行为阻断方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12019734B2 (en) | Methods and apparatus for control and detection of malicious content using a sandbox environment | |
US10735374B2 (en) | Method, apparatus, and system for detecting terminal security status | |
US10581879B1 (en) | Enhanced malware detection for generated objects | |
CN102254111B (zh) | 恶意网站检测方法及装置 | |
US20190199730A1 (en) | Methods, systems and computer readable media for detecting command injection attacks | |
US8201245B2 (en) | System, method and program product for detecting computer attacks | |
CN114091031A (zh) | 基于白规则的类加载防护方法及装置 | |
CN110225029B (zh) | 注入攻击检测方法、装置、服务器及存储介质 | |
US12001543B2 (en) | System and method for container assessment using sandboxing | |
US20170316202A1 (en) | Rasp for scripting languages | |
US20040205411A1 (en) | Method of detecting malicious scripts using code insertion technique | |
US9372991B2 (en) | Detecting malicious computer code in an executing program module | |
CN114254304A (zh) | 容器安全入侵检测方法、装置、计算机设备及存储介质 | |
CN110659478B (zh) | 在隔离的环境中检测阻止分析的恶意文件的方法 | |
CN109684829B (zh) | 一种虚拟化环境中服务调用监控方法和系统 | |
CN116324773A (zh) | 用于保护智能合约免受攻击的方法和装置 | |
CN115348086B (zh) | 一种攻击防护方法及装置、存储介质及电子设备 | |
Cavalli et al. | Design of a secure shield for internet and web-based services using software reflection | |
CN115292707A (zh) | 基于动态类调用序列的可信度判断方法及装置 | |
CN115174192A (zh) | 应用安全防护方法及装置、电子设备和存储介质 | |
CN115292708A (zh) | 基于字节码的执行权限分析方法及装置 | |
Baiardi et al. | Transparent process monitoring in a virtual environment | |
Ali et al. | Unbundle-Rewrite-Rebundle: Runtime Detection and Rewriting of Privacy-Harming Code in JavaScript Bundles | |
CN112926058B (zh) | 代码处理方法、污点分析方法和装置 | |
US20240214396A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |