The present invention discloses a method and a device for repairing kernel vulnerabilities. One embodiment of the method includes: attribute information collection to repair the kernel, the attribute information includes features for information representation to be repaired by the kernel code loading mode; acquisition and bug fixes code matching feature information which fixes code for invoking the patch application programming interface, application programming interface for patch bug fix code with different kernel function kernel adaptation; loading vulnerabilities repair code and the relocation of the vulnerability in the code contains instructions; the patch application programming interface fixes code relocation address after the replacement of the kernel function for the leak repair code calls the address code execution vulnerability; repair address after replacement to repair the kernel vulnerabilities. The implementation of the expansion of the use of loopholes in the repair code, so that it can be applied to various types of kernel.
【技术实现步骤摘要】
本申请涉及计算机
,具体涉及信息安全
,尤其涉及用于修复内核漏洞的方法和装置。
技术介绍
内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统等,决定着系统的性能和稳定性。由于采用替换内核并重启系统的内核漏洞修复代码方法,不能满足高可靠性要求,因此,需要一种支持在内核运行过程中可立即升级待修复内核功能的漏洞修复代码技术。现有的内核热漏洞修复代码技术以内存漏洞修复代码的形式在内核运行过程中对内核功能进行修复,不需要替换整个内核,有利于提高系统的可靠性。由于Linux等操作系统的内核的碎片化,不同的内核对于同一结构体的定义,同一函数的实现代码可能不同,不同的编译选项也可能会导致内核的差异,这给Linux内核热补丁方案提出了极大挑战。目前业界的热补丁解决方案需要编译目标内核的源码和修复代码来生成补丁,同时也限定了补丁只能应用于此目标内核,如果需要应用于其他内核则需要重新编译生成新的补丁。当需要修补的内核版本较多时,需要花费大量的资源。
技术实现思路
本申请的目的在于提出一种改进的用于修复内核漏洞的方法,该方法包括:收集待修复内核的属性信息,属性信息包括用于表征待修复内核所支持代码加载方式的特征信息;获取与特征信息匹配的漏洞修复代码,其中,漏洞修复代码用于调用补丁应用程序编程接口,补丁应用程序编程接口用于使漏洞修复代码与不同内核的内核函数适配;加载漏洞修复代码并对漏洞修复代码中包含的指令进行重定位;将漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复内核漏洞 ...
【技术保护点】
一种用于修复内核漏洞的方法,其特征在于,所述方法包括:收集待修复内核的属性信息,所述属性信息包括用于表征所述待修复内核所支持代码加载方式的特征信息;获取与所述特征信息匹配的漏洞修复代码,其中,所述漏洞修复代码用于调用补丁应用程序编程接口,所述补丁应用程序编程接口用于使所述漏洞修复代码与不同内核的内核函数适配;加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位;将所述漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为所述漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复所述内核漏洞。
【技术特征摘要】
1.一种用于修复内核漏洞的方法,其特征在于,所述方法包括:收集待修复内核的属性信息,所述属性信息包括用于表征所述待修复内核所支持代码加载方式的特征信息;获取与所述特征信息匹配的漏洞修复代码,其中,所述漏洞修复代码用于调用补丁应用程序编程接口,所述补丁应用程序编程接口用于使所述漏洞修复代码与不同内核的内核函数适配;加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位;将所述漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为所述漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复所述内核漏洞。2.根据权利要求1所述的方法,其特征在于,所述获取与所述特征信息匹配的漏洞修复代码,包括:获取服务器中存储的、与所述特征信息匹配的漏洞修复代码,其中,所述服务器中针对不同内核存储有相同的漏洞修复代码。3.根据权利要求1所述的方法,其特征在于,所述特征信息包括:系统调用信息;以及所述获取与所述特征信息匹配的漏洞修复代码,包括:获取与所述系统调用信息匹配的内核模块类型的漏洞修复代码。4.根据权利要求1所述的方法,其特征在于,所述特征信息包括:物理内存设备或内核驱动信息;所述获取与所述特征信息匹配的漏洞修复代码,包括:获取与所述物理内存设备或内核驱动信息匹配的指令序列类型的漏洞修复代码。5.根据权利要求1所述的方法,其特征在于,所述加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位,包括:获取描述所述待修复内核的元数据信息;对所述漏洞修复代码中包含的指令进行重定位后,再加载所述漏洞修复代码,其中,所述漏洞修复代码在执行时使用所述元数据信息。6.根据权利要求5所述的方法,其特征在于,所述元数据信息包括以下至少一项:内核函数名称和内核函数的地址,内核变量名称和内核变量地址,内核结构体名称,内核结构体地址,内核结构体成员名称,内核结构体成员大小。7.根据权利要求5所述的方法,其特征在于,所述获取描述所述待修复内核的元数据信息,包括:通过所述补丁应用程序编程接口获取保存在所述内核中的元数据信息;和/或通过所述补丁应用程序编程接口从内核镜像中获取元数据信息,其中,所述内核镜像为所述内核在编译时产生的包含每个符号定义和地址的镜像;和/或以云方式下载元数据...
【专利技术属性】
技术研发人员:夏良钊,郑龙日,卢永强,包沉浮,张煜龙,韦韬,
申请(专利权)人:百度在线网络技术北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。