一种应用安全实时热补丁方法及装置与流程
未命名
10-08
阅读:77
评论:0

1.本技术涉及应用安全技术领域,尤其涉及一种应用安全实时热补丁方法以及应用安全实时热补丁装置。
背景技术:
2.(1)应用安全技术rasp
3.数据rasp是指runtime application self-protection,是一种用于保护应用程序安全的技术。它通过在应用程序运行时检测和防御攻击,包括sql注入、跨站脚本攻击和文件包含攻击等常见漏洞,从而提高应用程序的安全性。
4.rasp技术通常是通过在应用程序中插入安全性代码来实现的,以便在应用程序执行时检测和防御攻击。它可以在应用程序的不同层次上进行操作,包括web层、应用程序层和操作系统层,以提供全面的保护。
5.rasp云端与探针端交互流程
6.rasp探针和云端云中心通常通过网络进行交互。具体来说,rasp探针会定期向云端云中心发送数据,包括设备状态、传感器数据、执行器指令等信息。云中心收到数据后,会对数据进行处理和分析,并将结果返回给rasp探针,例如控制执行器、调整传感器参数等。同时,云中心还可以将数据存储到数据库中,以便后续的数据分析和挖掘。
7.为了实现这种交互,rasp探针和云中心需要具备一定的通信协议和接口。通常情况下,rasp探针使用tcp/ip协议通过网络连接到云中心,并使用特定的api接口进行数据传输和操作。同时,为了确保通信的安全性和可靠性,rasp探针和云中心还需要进行身份认证和数据加密等操作。
8.(2)rasp热补丁技术
9.rasp热补丁(hot patching)是指在不停止程序运行的情况下,对程序的代码进行修改和替换,从而实现程序的更新和修复。rasp热补丁技术可以帮助开发者快速修复程序中的漏洞和错误,同时也可以方便地对程序进行更新和升级,而无需重新启动程序或者重新编译程序的完整版本。
10.目前,rasp(runtime application self-protection)的热补丁技术主要分为两种。
11.第一种是重新热加载构架rasp,这种方法可以理解为一种重启热加载的方式。具体而言,当需要更新rasp的hook点时,应用会重新热加载rasp探针端,并重新对hook点进行加载。虽然这种方法较为稳定,但是由于需要重启热加载,会导致cpu过高的问题。此外,当同一个机器上有多个应用程序进行加载时,也会导致机器负载过高,甚至引发崩溃的情况。
12.而第二种方法则是通过rasp探针和云端云中心进行交互时下发威胁特征信息,rasp探针更新后,在下次触发时会去判断是否符合新的威胁特征。这种方法的优势在于可以较为及时地更新威胁特征信息,从而提高应用的安全性。但是,该方法也存在一些缺陷。首先,覆盖面不够全面。如果在初始hook时无法覆盖到某些威胁特征,那么在后续的热补丁
过程中也无法覆盖到这些特征。其次,由于需要通过网络下发威胁特征,因此在网络延迟或不稳定的情况下,可能会导致更新失败或延迟,从而影响系统的安全性。
13.因此,希望有一种技术方案来解决或至少减轻现有技术的上述不足。
技术实现要素:
14.本发明的目的在于提供一种应用安全实时热补丁方法来至少解决上述的一个技术问题。
15.本发明提供了下述方案:
16.根据本发明的一个方面,提供一种应用安全实时热补丁方法,所述应用安全实时热补丁方法包括:
17.为客户应用服务加载rasp探针;
18.将instrumentation实例保存至全局变量;
19.获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;
20.根据获取的动态防护hook信息获取hook的目标函数;
21.对所述目标函数进行保护并获取进行保护后的字节码文件。
22.可选地,所述将instrumentation实例保存至全局变量包括:
23.当所述rasp探针加载成功后,触发java agent的premain方法入口;
24.通过premain方法入口去获取premain方法参数;
25.在premain方法参数中获取instrumentation实例;
26.将instrumentation实例保存在一个全局变量。
27.可选地,所述用于指示新漏洞的动态防护hook信息包括类名、函数名、函数参数信息、防护函数调用信息。
28.可选地,所述根据获取的动态防护hook信息获取hook的目标函数包括:
29.通过反射的方式,获取到需要hook的目标函数。
30.可选地,所述通过反射的方式,获取到需要hook的目标函数包括:
31.通过hook信息中的类名创建class类的对象;
32.调用class类的对象中的getdeclaredmethod方法传入所述hook信息中的函数名以及函数参数信息,从而获取hook信息中的目标函数的字节码信息。
33.可选地,所述对所述目标函数进行保护并获取进行保护后的字节码文件包括:
34.通过asm库加载目标函数的字节码信息;
35.通过asm库将防护函数调用信息插入至字节码信息中,从而形成修改过后的字节码文件。
36.可选地,所述应用安全实时热补丁方法进一步包括:
37.将修改过后的字节码文件封装成classdefinition对象,并调用所述保存至全局变量中的instrumentation的redefineclasses方法来重新定义java类,从而使修改生效。
38.本技术还提供了一种native函数防御攻击的装置,所述native函数防御攻击的装置包括:
39.加载模块,所述加载模块用于为客户应用服务加载rasp探针;
40.保存模块,所述保存模块用于将instrumentation实例保存至全局变量;
41.动态防护hook获取模块,所述动态防护hook获取模块用于获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;
42.目标函数获取模块,所述目标函数获取模块用于根据获取的动态防护hook信息获取hook的目标函数;
43.保护模块,所述保护模块用于对所述目标函数进行保护并获取进行保护后的字节码文件。
44.本技术还提供了一种电子设备,所述电子设备包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行如上所述的应用安全实时热补丁方法的步骤。
45.本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现如上所述的应用安全实时热补丁方法的步骤。
46.本技术的应用安全实时热补丁方法可以基本避免人为去重启应用的操作,并且不会中断客户应用服务。在性能方面,只需要加载客户应用对应的单个类,而不需要进行应用内所有类重新加载,因此也得到了提升。此外,从运营场景上来看,如果发现了新漏洞的发生,可以直接在云端进行配置,然后统一下发,从而让所有应用全免疫,提升了rasp功能的可靠性。本技术的应用安全实时热补丁方法能够更好地保护应用程序免受各种攻击,提高了系统的安全性和可靠性,为用户带来更好的使用体验。
附图说明
47.图1是本技术一实施例中的应用安全实时热补丁方法的流程示意图。
48.图2是本技术一实施例中提供的应用安全实时热补丁方法的电子设备结构框图。
49.图3是本技术一实施例中的应用安全实时热补丁方法的详细流程示意图。
具体实施方式
50.下面将结合附图对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.图1是本技术一实施例中的应用安全实时热补丁方法的流程示意图。
52.如图1以及图3所示的应用安全实时热补丁方法包括:
53.步骤1:为客户应用服务加载rasp探针;
54.步骤2:将instrumentation实例保存至全局变量;
55.步骤3:获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;
56.步骤4:根据获取的动态防护hook信息获取hook的目标函数;
57.步骤5:对所述目标函数进行保护并获取进行保护后的字节码文件。
58.本技术的应用安全实时热补丁方法可以基本避免人为去重启应用的操作,并且不
会中断客户应用服务。在性能方面,只需要加载客户应用对应的单个类,而不需要进行应用内所有类重新加载,因此也得到了提升。此外,从运营场景上来看,如果发现了新漏洞的发生,可以直接在云端进行配置,然后统一下发,从而让所有应用全免疫,提升了rasp功能的可靠性。本技术的应用安全实时热补丁方法能够更好地保护应用程序免受各种攻击,提高了系统的安全性和可靠性,为用户带来更好的使用体验。
59.在本实施例中,用于指示新漏洞的动态防护hook信息包括类名、函数名、函数参数信息、防护函数调用信息。
60.在本实施例中,将instrumentation实例保存至全局变量包括:
61.通过参数instrumentation来获取instrumentation实例;
62.将instrumentation实例保存在一个全局变量。
63.在本实施例中,所述根据获取的动态防护hook信息获取hook的目标函数包括:
64.通过反射的方式,获取到需要hook的目标函数。
65.在本实施例中,所述通过反射的方式,获取到需要hook的目标函数包括:
66.通过hook信息中的类名创建class类的对象;
67.调用class类的对象中的getdeclaredmethod方法传入所述hook信息中的函数名以及函数参数信息,从而获取hook信息中的目标函数的字节码信息。
68.在本实施例中,所述对所述目标函数进行保护并获取进行保护后的字节码文件包括:
69.通过asm库加载目标函数的字节码信息;
70.通过asm库将防护函数调用信息插入至字节码信息中,从而形成修改过后的字节码文件。
71.具体而言,安全运营人员通过目标函数漏洞场景判断、在云中心配置动态hook时定义好该漏洞是对应什么类型的目标函数、例如是sql注入类就插入sql注入类的防护函数、是命令执行类就插入命令执行的目标函数。
72.在本实施例中,所述应用安全实时热补丁方法进一步包括:
73.将修改过后的字节码文件封装成classdefinition对象,并调用所述保存至全局变量中的instrumentation的redefineclasses方法来重新定义java类,从而使修改生效。
74.在本实施例中,在对目标函数进行防护时,需要对目标函数的参数进行规则判断,以判断是否存在携带威胁的请求或者请求参数是否合法。例如,可以对参数进行正则表达式匹配、长度限制、数据类型检查等规则判断,以过滤掉恶意请求或者非法参数。同时,也可以对参数进行解析和过滤,以确保请求参数的合法性和安全性。需要注意的是,规则判断需要基于具体的业务场景和安全需求来设计,以确保规则的有效性和适用性。同时,规则判断也需要考虑性能和稳定性等因素,以确保防护函数不会影响应用程序的性能和稳定性。
75.本技术的应用安全实时热补丁方法提供了一种在不需要重启应用的情况下,通过动态热补丁的方式进行hook的方法。这种方法需要云端云中心下发动态hook位置,其中包括目标应用源码中的类名、函数名、函数返回值、函数参数等信息。rasp探针端接收到这些信息后,需要对它们进行解析,并判断它们是否符合实际应用。如果不符合,则会向云端返回失败信息。如果符合,则会通过应用源码中的类名、函数名、函数返回值、函数参数等信息去加载该对应的函数,并在函数体的第一行处插入已经预留好的防护逻辑函数调用。
76.这个防护逻辑函数调用会引用函数特定参数作为方法入参,并对类信息进行修改。修改完成后,rasp探针端会调用类加载器重新加载该类至jvm虚拟机中。这种方法丰富了应用程序的安全性和可靠性,能够更好地保护应用程序免受各种攻击。
77.本技术还提供了一种native函数防御攻击的装置,所述native函数防御攻击的装置包括加载模块、保存模块、动态防护hook获取模块、目标函数获取模块以及保护模块,其中,
78.加载模块用于为客户应用服务加载rasp探针;
79.保存模块用于将instrumentation实例保存至全局变量;
80.动态防护hook获取模块用于获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;
81.目标函数获取模块用于根据获取的动态防护hook信息获取hook的目标函数;
82.保护模块用于对所述目标函数进行保护并获取进行保护后的字节码文件。
83.图2是本发明一个或多个实施例提供的一种电子设备结构框图。
84.如图2所示,本技术还公开了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行native函数防御攻击的方法的步骤。
85.本技术还提供了一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现native函数防御攻击的方法的步骤。
86.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
87.电子设备包括硬件层,运行在硬件层之上的操作系统层,以及运行在操作系统上的应用层。该硬件层包括中央处理器(cpu,central processing unit)、内存管理单元(mmu,memory management unit)和内存等硬件。该操作系统可以是任意一种或多种通过进程(process)实现电子设备控制的计算机操作系统,例如,linux操作系统、unix操作系统、android操作系统、ios操作系统或windows操作系统等。并且在本发明实施例中该电子设备可以是智能手机、平板电脑等手持设备,也可以是桌面计算机、便携式计算机等电子设备,本发明实施例中并未特别限定。
88.本发明实施例中的电子设备控制的执行主体可以是电子设备,或者是电子设备中能够调用程序并执行程序的功能模块。电子设备可以获取到存储介质对应的固件,存储介质对应的固件由供应商提供,不同存储介质对应的固件可以相同可以不同,在此不做限定。电子设备获取到存储介质对应的固件后,可以将该存储介质对应的固件写入存储介质中,具体地是往该存储介质中烧入该存储介质对应固件。将固件烧入存储介质的过程可以采用现有技术实现,在本发明实施例中不做赘述。
89.电子设备还可以获取到存储介质对应的重置命令,存储介质对应的重置命令由供应商提供,不同存储介质对应的重置命令可以相同可以不同,在此不做限定。
90.此时电子设备的存储介质为写入了对应的固件的存储介质,电子设备可以在写入
了对应的固件的存储介质中响应该存储介质对应的重置命令,从而电子设备根据存储介质对应的重置命令,对该写入对应的固件的存储介质进行重置。根据重置命令对存储介质进行重置的过程可以现有技术实现,在本发明实施例中不做赘述。
91.为了描述的方便,描述以上装置时以功能分为各种单元、模块分别描述。当然在实施本技术时可以把各单元、模块的功能在同一个或多个软件和/或硬件中实现。
92.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
93.对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
94.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器或者网络设备等)执行本技术各个实施方式或者实施方式的某些部分所述的方法。
95.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:
1.一种应用安全实时热补丁方法,其特征在于,所述应用安全实时热补丁方法包括:为客户应用服务加载rasp探针;将instrumentation实例保存至全局变量;获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;根据获取的动态防护hook信息获取hook的目标函数;对所述目标函数进行保护并获取进行保护后的字节码文件。2.根据权利要求1所述的应用安全实时热补丁方法,其特征在于,所述将instrumentation实例保存至全局变量包括:当所述rasp探针加载成功后,触发java agent的premain方法入口;通过premain方法入口去获取premain方法参数;在premain方法参数中获取instrumentation实例;将instrumentation实例保存在一个全局变量。3.根据权利要求2所述的应用安全实时热补丁方法,其特征在于,所述用于指示新漏洞的动态防护hook信息包括类名、函数名、函数参数信息、防护函数调用信息。4.如权利要求3所述的应用安全实时热补丁方法,其特征在于,所述根据获取的动态防护hook信息获取hook的目标函数包括:通过反射的方式,获取到需要hook的目标函数。5.如权利要求4所述的应用安全实时热补丁方法,其特征在于,所述通过反射的方式,获取到需要hook的目标函数包括:通过hook信息中的类名创建class类的对象;调用class类的对象中的getdeclaredmethod方法传入所述hook信息中的函数名以及函数参数信息,从而获取hook信息中的目标函数的字节码信息。6.如权利要求5所述的应用安全实时热补丁方法,其特征在于,所述对所述目标函数进行保护并获取进行保护后的字节码文件包括:通过asm库加载目标函数的字节码信息;通过asm库将防护函数调用信息插入至字节码信息中,从而形成修改过后的字节码文件。7.如权利要求6所述的应用安全实时热补丁方法,其特征在于,所述应用安全实时热补丁方法进一步包括:将修改过后的字节码文件封装成classdefinition对象,并调用所述保存至全局变量中的instrumentation的redefineclasses方法来重新定义java类,从而使修改生效。8.一种native函数防御攻击的装置,其特征在于,所述native函数防御攻击的装置包括:加载模块,所述加载模块用于为客户应用服务加载rasp探针;保存模块,所述保存模块用于将instrumentation实例保存至全局变量;动态防护hook获取模块,所述动态防护hook获取模块用于获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护hook信息;目标函数获取模块,所述目标函数获取模块用于根据获取的动态防护hook信息获取
hook的目标函数;保护模块,所述保护模块用于对所述目标函数进行保护并获取进行保护后的字节码文件。9.一种电子设备,其特征在于,所述电子设备包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行如权利要求1至7中任意一项所述的应用安全实时热补丁方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现如权利要求1至7中任意一项所述的应用安全实时热补丁方法的步骤。
技术总结
本申请公开了一种应用安全实时热补丁方法及装置,涉及应用安全技术领域。所述应用安全实时热补丁方法包括:为客户应用服务加载rasp探针;将Instrumentation实例保存至全局变量;获取云中心在收到所述rasp探针的发起请求后所发送的用于指示新漏洞的动态防护HOOK信息;根据获取的动态防护HOOK信息获取HOOK的目标函数;对所述目标函数进行保护并获取进行保护后的字节码文件。本申请的应用安全实时热补丁方法能够更好地保护应用程序免受各种攻击,提高了系统的安全性和可靠性,为用户带来更好的使用体验。更好的使用体验。更好的使用体验。
技术研发人员:唐卫民 刘允 王德明 张耀文 段杨宇 范龙瑞
受保护的技术使用者:北京国御网络安全技术有限公司
技术研发日:2023.07.03
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/