用于修复内核漏洞的方法和装置制造方法及图纸

技术编号:15241287 阅读:61 留言:0更新日期:2017-05-01 01:33
本申请公开了用于修复内核漏洞的方法和装置。该方法的一具体实施方式包括:收集待修复内核的属性信息,属性信息包括用于表征待修复内核所支持代码加载方式的特征信息;获取与特征信息匹配的漏洞修复代码,其中,漏洞修复代码用于调用补丁应用程序编程接口,补丁应用程序编程接口用于使漏洞修复代码与不同内核的内核函数适配;加载漏洞修复代码并对漏洞修复代码中包含的指令进行重定位;将漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复内核漏洞。该实施方式扩大了漏洞修复代码的使用范围,使其可应用于多种型号的内核。

Method and apparatus for repairing kernel vulnerability

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内核热补丁方案提出了极大挑战。目前业界的热补丁解决方案需要编译目标内核的源码和修复代码来生成补丁,同时也限定了补丁只能应用于此目标内核,如果需要应用于其他内核则需要重新编译生成新的补丁。当需要修补的内核版本较多时,需要花费大量的资源。
技术实现思路
本申请的目的在于提出一种改进的用于修复内核漏洞的方法,该方法包括:收集待修复内核的属性信息,属性信息包括用于表征待修复内核所支持代码加载方式的特征信息;获取与特征信息匹配的漏洞修复代码,其中,漏洞修复代码用于调用补丁应用程序编程接口,补丁应用程序编程接口用于使漏洞修复代码与不同内核的内核函数适配;加载漏洞修复代码并对漏洞修复代码中包含的指令进行重定位;将漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复内核漏洞。在一些实施例中,获取与特征信息匹配的漏洞修复代码,包括:获取服务器中存储的、与特征信息匹配的漏洞修复代码,其中,服务器中针对不同内核存储有相同的漏洞修复代码。在一些实施例中,特征信息包括:系统调用信息;以及获取与特征信息匹配的漏洞修复代码,包括:获取与系统调用信息匹配的内核模块类型的漏洞修复代码。在一些实施例中,特征信息包括:物理内存设备或内核驱动信息;获取与特征信息匹配的漏洞修复代码,包括:获取与物理内存设备或内核驱动信息匹配的指令序列类型的漏洞修复代码。在一些实施例中,加载漏洞修复代码并对漏洞修复代码中包含的指令进行重定位,包括:获取描述待修复内核的元数据信息;对漏洞修复代码中包含的指令进行重定位后,再加载漏洞修复代码,其中,漏洞修复代码在执行时使用元数据信息。在一些实施例中,元数据信息包括以下至少一项:内核函数名称和内核函数的地址,内核变量名称和内核变量地址,内核结构体名称,内核结构体地址,内核结构体成员名称,内核结构体成员大小。在一些实施例中,获取描述待修复内核的元数据信息,包括:通过补丁应用程序编程接口获取保存在内核中的元数据信息;和/或通过补丁应用程序编程接口从内核镜像中获取元数据信息,其中,内核镜像为内核在编译时产生的包含每个符号定义和地址的镜像;和/或以云方式下载元数据信息。第二方面,本申请提供了一种用于修复内核漏洞的装置,该装置包括:收集单元,用于收集待修复内核的属性信息,属性信息包括用于表征待修复内核所支持代码加载方式的特征信息;获取单元,用于获取与特征信息匹配的漏洞修复代码,其中,漏洞修复代码用于调用补丁应用程序编程接口,补丁应用程序编程接口用于使漏洞修复代码与不同内核的内核函数适配;重定位单元,用于加载漏洞修复代码并对漏洞修复代码中包含的指令进行重定位;替换单元,用于将漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为漏洞修复代码所调用的内核函数的地址;执行单元,用于执行地址替换后的漏洞修复代码以修复内核漏洞。在一些实施例中,获取单元进一步用于:获取服务器中存储的、与特征信息匹配的漏洞修复代码,其中,服务器中针对不同内核存储有相同的漏洞修复代码。在一些实施例中,特征信息包括:系统调用信息;以及获取单元进一步用于:获取与系统调用信息匹配的内核模块类型的漏洞修复代码。在一些实施例中,特征信息包括:物理内存设备或内核驱动信息;以及获取单元进一步用于:获取与物理内存设备或内核驱动信息匹配的指令序列类型的漏洞修复代码。在一些实施例中,该装置还包括元数据获取单元,用于获取描述待修复内核的元数据信息;以及重定位单元进一步用于对漏洞修复代码中包含的指令进行重定位后,再加载漏洞修复代码,其中,漏洞修复代码在执行时使用元数据信息。在一些实施例中,元数据信息包括以下至少一项:内核函数名称和内核函数的地址,内核变量名称和内核变量地址,内核结构体名称,内核结构体地址,内核结构体成员名称,内核结构体成员大小。在一些实施例中,元数据获取单元进一步用于:通过补丁应用程序编程接口获取保存在内核中的元数据信息;和/或通过补丁应用程序编程接口从内核镜像中获取元数据信息,其中,内核镜像为内核在编译时产生的包含每个符号定义和地址的镜像;和/或以云方式下载元数据信息。本申请提供的用于修复内核漏洞的方法和装置,获取与内核所支持的加载方式匹配的漏洞修复代码并对该漏洞修复代码进行重定位,并将漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为漏洞修复代码所调用的内核函数的地址,再执行地址替换后的漏洞修复代码,使得地址替换后的漏洞修复代码可以在内核中加载以实现对内核的漏洞修复。这种漏洞修复方法可以兼容于多个内核修复代码加载方法,不依赖于内核源码及其内核功能,漏洞修复代码可自适配不同的内核编译版本,克服了Linux系统碎片化的影响。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的用于修复内核漏洞的方法的一个实施例的流程图;图3是根据本申请的用于修复内核漏洞的方法的又一个实施例的流程图;图4是根据本申请的用于修复内核漏洞的装置的一个实施例的结构示意图;图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的用于修复内核漏洞的方法或用于修复内核漏洞的装置的实施例的示例性系统架构100。如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有安全软件等通讯客户端应用。终端设备101、102、103可以是各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(MovingPictureExpertsGroupAudioLaye本文档来自技高网...

【技术保护点】
一种用于修复内核漏洞的方法,其特征在于,所述方法包括:收集待修复内核的属性信息,所述属性信息包括用于表征所述待修复内核所支持代码加载方式的特征信息;获取与所述特征信息匹配的漏洞修复代码,其中,所述漏洞修复代码用于调用补丁应用程序编程接口,所述补丁应用程序编程接口用于使所述漏洞修复代码与不同内核的内核函数适配;加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位;将所述漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为所述漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复所述内核漏洞。

【技术特征摘要】
1.一种用于修复内核漏洞的方法,其特征在于,所述方法包括:收集待修复内核的属性信息,所述属性信息包括用于表征所述待修复内核所支持代码加载方式的特征信息;获取与所述特征信息匹配的漏洞修复代码,其中,所述漏洞修复代码用于调用补丁应用程序编程接口,所述补丁应用程序编程接口用于使所述漏洞修复代码与不同内核的内核函数适配;加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位;将所述漏洞修复代码中补丁应用程序编程接口重定位后的地址替换为所述漏洞修复代码所调用的内核函数的地址;执行地址替换后的漏洞修复代码以修复所述内核漏洞。2.根据权利要求1所述的方法,其特征在于,所述获取与所述特征信息匹配的漏洞修复代码,包括:获取服务器中存储的、与所述特征信息匹配的漏洞修复代码,其中,所述服务器中针对不同内核存储有相同的漏洞修复代码。3.根据权利要求1所述的方法,其特征在于,所述特征信息包括:系统调用信息;以及所述获取与所述特征信息匹配的漏洞修复代码,包括:获取与所述系统调用信息匹配的内核模块类型的漏洞修复代码。4.根据权利要求1所述的方法,其特征在于,所述特征信息包括:物理内存设备或内核驱动信息;所述获取与所述特征信息匹配的漏洞修复代码,包括:获取与所述物理内存设备或内核驱动信息匹配的指令序列类型的漏洞修复代码。5.根据权利要求1所述的方法,其特征在于,所述加载所述漏洞修复代码并对所述漏洞修复代码中包含的指令进行重定位,包括:获取描述所述待修复内核的元数据信息;对所述漏洞修复代码中包含的指令进行重定位后,再加载所述漏洞修复代码,其中,所述漏洞修复代码在执行时使用所述元数据信息。6.根据权利要求5所述的方法,其特征在于,所述元数据信息包括以下至少一项:内核函数名称和内核函数的地址,内核变量名称和内核变量地址,内核结构体名称,内核结构体地址,内核结构体成员名称,内核结构体成员大小。7.根据权利要求5所述的方法,其特征在于,所述获取描述所述待修复内核的元数据信息,包括:通过所述补丁应用程序编程接口获取保存在所述内核中的元数据信息;和/或通过所述补丁应用程序编程接口从内核镜像中获取元数据信息,其中,所述内核镜像为所述内核在编译时产生的包含每个符号定义和地址的镜像;和/或以云方式下载元数据...

【专利技术属性】
技术研发人员:夏良钊郑龙日卢永强包沉浮张煜龙韦韬
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京;11

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

1