一种热补丁方法及相关装置与流程

文档序号:37281560发布日期:2024-03-12 21:21阅读:14来源:国知局
一种热补丁方法及相关装置与流程

本技术涉及计算机,尤其涉及一种热补丁方法及相关装置。


背景技术:

1、目前,服务器的内核已经能够基于热补丁的方式在不重启系统的情况下,修复内核缺陷,称之为内核热补丁,但是要安全地操作服务器,仅修补其服务器内核是不够的。进程、线程、共享软件库也需要打补丁。否则,服务器可能面临利用heartbleed或ghost等漏洞的攻击。一般处理服务器的库漏洞的常用方法是重启服务器或重启导致停机和漏洞窗口的应用程序。此外,管理人员很少知道服务正在使用的哪些库,因此他们需重新启动整个服务器以更新服务。

2、因此,如何提供一种热补丁方法,可以在不重启进程的情况下对服务器上运行的软件库进行漏洞的修复,解决重启服务器或应用程序带来的服务暂停的损失,是亟待解决的问题。


技术实现思路

1、本技术实施例所要解决的技术问题在于,提供一种热补丁方法及相关装置,可以在不重启进程的情况下对服务器上运行的软件库进行漏洞的修复,解决重启服务器或应用程序带来的服务暂停的损失。

2、第一方面,本技术实施案例提供一种热补丁方法,其特征在于,所述方法包括:确定针对多个目标函数生成的补丁文件;基于所述多个目标函数从n个进程中确定m个目标进程,并记录所述m个目标进程的初始调用信息,所述初始调用信息包括每个所述目标进程调用所述多个目标函数的信息,n和m为大于0的整数,且n大于或等于m;确定所述m个目标进程中每个所述目标进程对应的当前调用信息,每个所述当前调用信息包括对应目标进程当前调用所述多个目标函数的信息;基于所述初始调用信息和每个所述目标进程对应的当前调用信息以及所述补丁文件,对所述m个目标进程分别进行热补丁操作。

3、在本发明实施例中,先确定调用漏洞函数的多个目标进程(即需要打补丁的进程),并记录下每个目标进程调用目标函数(如漏洞函数)的信息(即初始调用信息);接下来,再获取每个目标进程当前调用漏洞函数的信息(也可以理解为当前漏洞函数被调用的信息);进一步地,可以基于当前漏洞函数被调用的信息,确定当前可以进行打补丁的漏洞函数;最终,基于多个目标进程的初始调用信息确定当前可以进行打补丁的目标进程,并基于补丁文件对目标进程进行打补丁操作,从而可以在不重启进程的情况下对服务器上运行的软件库进行漏洞的修复,解决重启服务器或应用程序带来的服务暂停的损失。在现有技术中,需要等待所有目标进程都不调用漏洞函数时,一次性对所有目标进程(或线程)进行打补丁,导致打补丁效率低的问题。而在本技术中,由于提前记录下了所有需要打补丁的目标进程,以及每个目标进程调用漏洞函数的信息(即初始调用信息),在确定了当前可以进行打补丁的漏洞函数后,可以基于初始调用信息从多个目标进程中确定出当前可以进行打补丁的目标进程,从而可以实现根据优先级、或者策略灵活打补丁,从而提升了热补丁效率。

4、在一种可能的实现方式中,所述补丁文件包括所述多个目标函数中每个所述目标函数的修复信息,所述确定针对多个目标函数生成的补丁文件,包括:对比多个函数的原始代码和修复代码,从所述多个函数中确定所述多个目标函数;基于所述修复代码,确定所述多个目标函数中每个所述目标函数的所述修复信息。

5、在本发明实施例中,在电子设备上可以运行应用服务,应用服务中可能会调用多个函数。在应用服务运行过程中,若某一个或多个函数出现漏洞,则需要对出现漏洞的函数进行打补丁操作。在进行打补丁操作前,电子设备可以基于应用服务的原始代码和修复代码(可以理解为编程人员针对漏洞修改后的代码),先确定应用服务中出现漏洞的函数,然后在基于修复代码,能够得到针对所有漏洞函数的补丁文件,进而能够基于该补丁文件对漏洞函数进行打补丁操作,提升了系统的安全性。

6、在一种可能的实现方式中,所述对比多个函数的原始代码和修复代码,从所述多个函数中确定所述多个目标函数,包括:分别运行所述原始代码和所述修复代码,通过修改编译器参数获取所述原始代码的第一中间信息和所述修复代码的第二中间信息;基于所述第一中间信息和所述第二中间信息,从所述多个函数中确定所述多个目标函数。

7、在本发明实施例中,电子设备的编译器上可以分别运行应用服务的原始代码和修复代码,然后通过劫持gcc分别获取原始代码的中间文件,和修复代码的中间文件。进一步地,可以通过比较原始代码的中间文件和修复代码的中间文件,确定目标函数(如漏洞函数)。由于在本技术中,对用户(构建系统)屏蔽了复杂的流程,且能够一键生成用户态标准的补丁文件,而无需调用cc变量,就能够获取到原始代码和修复代码的中间信息,避免了通过改变构建项目的cc变量来间接的调用编译器获取原始代码和修复代码的中间文件,导致应用场景受限的问题,从而降低了调测开销,适用范围更广。

8、在一种可能的实现方式中,所述方法还包括:所述基于所述多个目标函数从n个进程中确定m个目标进程,包括:判断所述n个进程中每个进程是否调用所述多个目标函数中的至少一个;所述n个进程包括正在运行的进程、新拉起的进程和即将被拉起的进程中的一种或多种;若调用所述多个目标函数中的至少一个,则将对应的进程确定为所述目标进程。

9、在本发明实施例中,可以先判断正在运行的进程、新拉起的进程和即将被拉起的进程中是否存在调用目标函数(如漏洞函数)的进程,若存在则将其确定为目标进程,以提前记录下了所有需要打补丁的目标进程,和每个目标进程调用漏洞函数的信息,在确定了当前可以进行打补丁的漏洞函数后,可以基于初始调用信息从多个目标进程中确定出当前可以进行打补丁的目标进程,从而可以实现根据优先级、或者策略灵活打补丁,从而提升了热补丁效率。

10、在一种可能的实现方式中,所述记录所述m个目标进程的初始调用信息,包括:将所述m个目标进程中每个目标进程对应的内存页,替换为软中断指令,所述软中断指令用于暂停运行对应的目标进程;获取所述m个目标进程的所述初始调用信息。

11、在本发明实施例中,当确定了多个后续需要进行打补丁的目标进程后,可以将目标进程对应的内存页替换为软中断指令,以暂停运行目标进程,从而可以获取目标进程的初始调用信息,以提前记录下了所有需要打补丁的目标进程,和每个目标进程调用漏洞函数的信息,在确定了当前可以进行打补丁的漏洞函数后,可以基于初始调用信息从多个目标进程中确定出当前可以进行打补丁的目标进程,从而可以实现根据优先级、或者策略灵活打补丁,从而提升了热补丁效率。

12、在一种可能的实现方式中,所述确定所述m个目标进程中每个所述目标进程对应的当前调用信息,包括:记录所述m个目标进程中每个所述目标进程当前调用所述多个目标函数的信息,更新对应的所述当前调用信息。

13、在现有技术中,需要暂停所有线程(或进程),才能获取目标进程(或线程)的当前函数调用信息,导致业务性能效率降低的问题。而在本发明实施例中,目标进程每次调用漏洞函数时,都会将漏洞函数记录在对应的当前调用信息中,因此无需暂停所有线程或进程,就能获取到目标进程当前调用漏洞函数的信息,从而提升了热补丁效率,同时维护了进程的内存一致性。

14、在一种可能的实现方式中,所述基于所述初始调用信息和每个所述目标进程对应的当前调用信息以及所述补丁文件,对所述m个目标进程分别进行热补丁操作,包括:根据热补丁策略,基于所述初始调用信息和每个所述目标进程对应的当前调用信息以及所述多个目标函数中每个所述目标函数的所述修复信息,对所述m个目标进程中满足所述热补丁策略的目标进程进行热补丁操作。

15、在本发明实施例中,热补丁策略可以是自定义的策略,热补丁策略可以分为多个维度,例如,函数维度:某个漏洞函数不被所有进程/线程调用时,即漏洞函数(funcx)对应的值为0时,可以开始打补丁;线程维度:func1、func2、func3不在被thread_x调用时,即thread_x对应的值减为0时,可以开始打补丁;全维度:所有漏洞函数不被所有线程调用时,即所有漏洞函数对应的值均减至0时,可以开始打补丁。进一步地,可以根据热补丁策略和多个目标进程的初始调用信息以及每个目标进程当前调用漏洞函数的情况来决定何时开始打补丁,以实现根据优先级、策略灵活打补丁,从而提升了打补丁效率。

16、第二方面,本技术提供了一种热补丁装置,其特征在于,所述装置包括:第一处理单元,用于确定针对多个目标函数生成的补丁文件;第二处理单元,用于基于所述多个目标函数从n个进程中确定m个目标进程,并记录所述m个目标进程的初始调用信息,所述初始调用信息包括每个所述目标进程调用所述多个目标函数的信息,n和m为大于0的整数,且n大于或等于m;第三处理单元,用于确定所述m个目标进程中每个所述目标进程对应的当前调用信息,每个所述当前调用信息包括对应目标进程当前调用所述多个目标函数的信息;第四处理单元,用于基于所述初始调用信息和每个所述目标进程对应的当前调用信息以及所述补丁文件,对所述m个目标进程分别进行热补丁操作。

17、在一种可能的实现方式中,所述补丁文件包括所述多个目标函数中每个所述目标函数的修复信息,所述第一处理单元,具体用于:对比多个函数的原始代码和修复代码,从所述多个函数中确定所述多个目标函数;基于所述修复代码,确定所述多个目标函数中每个所述目标函数的所述修复信息。

18、在一种可能的实现方式中,所述第一处理单元,具体用于:分别运行所述原始代码和所述修复代码,通过修改编译器参数获取所述原始代码的第一中间信息和所述修复代码的第二中间信息;基于所述第一中间信息和所述第二中间信息,从所述多个函数中确定所述多个目标函数。

19、在一种可能的实现方式中,所述第二处理单元,具体用于:判断所述n个进程中每个进程是否调用所述多个目标函数中的至少一个;所述n个进程包括正在运行的进程、新拉起的进程和即将被拉起的进程中的一种或多种;若调用所述多个目标函数中的至少一个,则将对应的进程确定为所述目标进程。

20、在一种可能的实现方式中,所述第二处理单元,具体用于:将所述m个目标进程中每个目标进程对应的内存页,替换为软中断指令,所述软中断指令用于暂停运行对应的目标进程;获取所述m个目标进程的所述初始调用信息。

21、在一种可能的实现方式中,所述第三处理单元,具体用于:记录所述m个目标进程中每个所述目标进程当前调用所述多个目标函数的信息,更新对应的所述当前调用信息。

22、在一种可能的实现方式中,所述第四处理单元,具体用于:根据热补丁策略,基于所述初始调用信息和每个所述目标进程对应的当前调用信息以及所述多个目标函数中每个所述目标函数的所述修复信息,对所述m个目标进程中满足所述热补丁策略的目标进程进行热补丁操作。

23、第三方面,本技术提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面任意一项所述的方法。

24、第四方面,本技术实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第一方面提供的一种热补丁方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。

25、第五方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能,例如,生成或处理上述热补丁方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

26、第六方面,本技术提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第一方面中任意一项所述的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1