CN115688119A - 漏洞修复方法、装置、电子设备及存储介质 - Google Patents
漏洞修复方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115688119A CN115688119A CN202211381711.9A CN202211381711A CN115688119A CN 115688119 A CN115688119 A CN 115688119A CN 202211381711 A CN202211381711 A CN 202211381711A CN 115688119 A CN115688119 A CN 115688119A
- Authority
- CN
- China
- Prior art keywords
- function
- system kernel
- vulnerability
- jump
- replacement
- 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 78
- 230000008439 repair process Effects 0.000 claims abstract description 20
- 230000009191 jumping Effects 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 347
- 239000007943 implant Substances 0.000 claims description 3
- 238000005067 remediation Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 6
- 238000002513 implantation Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种漏洞修复方法、装置、电子设备及存储介质,属于计算机技术领域。该方法用于修复***内核中的至少一个漏洞函数,***内核包括补丁文件,补丁文件包括至少一个数据段,一个数据段对应一个漏洞函数中存在漏洞的预设范围的数据,该方法包括:基于数据段,生成替换函数,替换函数用于在***内核运行时,替换数据段对应的漏洞函数;根据至少一个替换函数,生成热补丁;将热补丁植入***内核,***内核被配置为:在运行至漏洞函数时,跳转至替换函数并运行替换函数。通过在***内核运行时由替换函数代替漏洞函数,避免***重启导致上层业务的中断,有效降低了漏洞修复对***上层业务的影响。
Description
技术领域
本申请属计算机技术领域,具体涉及一种漏洞修复方法、装置、电子设备及存储介质。
背景技术
操作***内核是一个***的核心,决定着***的性能和稳定性,CVE(CommonVulnerabilities&Exposures,通用漏洞披露)是一种公开的***或软件的漏洞,如果***被披露存在CVE,容易对***在成极大的影响
目前,对于CVE的修复,是将植入了补丁的内核安装好之后,对操作***执行重启操作,从而完成内核的替换。
现有技术中至少存在如下问题:需要重启操作***,造成***上层业务的中断,进而影响***业务的工作。
发明内容
本申请实施例的目的是提供一种漏洞修复方法、装置、电子设备和存储介质,能够解决现有技术中修复内核的CVE需要重启***,进而导致上层业务终端,对业务造成较大影响的问题。
第一方面,本申请实施例提供了一种漏洞修复方法,用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,所述方法包括:基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数;根据至少一个所述替换函数,生成热补丁;将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
可选地,所述根据至少一个所述替换函数,生成热补丁,包括:根据至少一个所述替换函数,配置跳转函数,所述跳转函数包括至少一个跳转指令,一个所述跳转指令对应一个所述替换函数,且一个所述跳转指令对应一个漏洞函数;基于至少一个所述替换函数和所述跳转函数,生成热补丁。
可选地,所述根据至少一个所述替换函数,配置跳转函数,包括:根据至少一个所述替换函数,生成对应的至少一个跳转指令;配置预设算法,所述***内核通过运行所述预设算法确定与所述漏洞函数对应的跳转指令;基于至少一个所述跳转指令和所述预设算法,生成跳转函数。
可选地,所述***内核包括至少一个调用指令,一个调用指令对应一个函数,所述***内核通过所述调用指令跳转至所述函数并运行所述函数;所述调用指令包括跳转子指令,所述***内核基于所述跳转子指令的配置值确定跳转的函数;在所述将所述热补丁植入所述***内核之后,还包括:将所述漏洞函数对应的跳转子指令的配置值修改为第一预设值,,所述***内核根据所述第一预设值跳转至对应的所述替换函数。
可选地,所述数据段设置有修复指令;所述基于所述数据段,生成替换函数,包括:基于所述数据段,获取与所述数据段对应的漏洞函数;基于所述修复指令对获取的所述漏洞函数进行修复,得到替换函数。
可选地,在所述基于所述数据段,生成替换函数之前,还包括:在所述***内核中不存在与所述数据段匹配的数据的情况下,生成错误日志,所述错误日志用于反映所述补丁文件与所述***内核的版本不匹配。
可选地,在所述将所述热补丁植入所述***内核之后,还包括:在所述***内核运行异常的情况下,将所述热补丁从所述***内核中移除;生成提示日志,所述提示日志用于反映所述热补丁移除成功以及移除时间。
第二方面,本申请实施例提供了一种漏洞修复装置,用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,所述装置包括:函数生成模块,用于基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数;补丁生成模块,用于根据至少一个所述替换函数,生成热补丁;补丁植入模块,用于将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,通过***内核中补丁文件的数据段,生成对应的替换函数,并基于替换函数生成热补丁,进而将热补丁植入***内核。这样,在***内核运行时,运行至漏洞函数时,可以跳转至替换函数并运行替换函数,避免运行漏洞函数导致***内核的运行出现问题,并且在***内核的运行过程中完成了对漏洞函数的替换,避免了重启***的操作,进而避免了***上层业务的中断,有效降低了漏洞修复对***上层业务的影响。
附图说明
图1是本申请实施例的一种漏洞修复方法的步骤流程图;
图2是本申请实施例的一种漏洞修复方法的步骤流程图;
图3是本申请实施例的一种模块实现示意图;
图4是本申请实施例的一种漏洞修复流程示意图;
图5是本申请实施例的一种漏洞修复装置的框图;
图6是本申请实施例的一种电子设备的硬件结构示意图;
图7是本申请实施例的一种电子设备的硬件结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1是本申请实施例的一种漏洞修复方法的步骤流程图,该方法用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,该方法可以包括以下步骤:
步骤101:基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数。
本申请实施例中,***内核的源码中包含有多个函数,针对其中存在漏洞的函数,本申请实施例通过设置热补丁的方式,实现在***内核运行过程中,对漏洞函数进行替换,达到修复漏洞的效果。
示例性地,***内核的源码中可能存在多个漏洞函数,本申请实施例的一个热补丁仅针对有限数量的漏洞函数进行修复,可以通过设置多个热补丁来实现对***内核的源码中的所有漏洞函数进行修复。
***内核可以针对存在的漏洞生成补丁文件,具体地,将***内核的源码中存在漏洞的位置以及源码中该位置的上下文预设范围的代码作为一个数据段写入补丁文件。在进行热补丁的生成时,首先根据补丁文件中的数据段,可以编译生成一个新的函数,即替换函数,其对应于一个***内核中的漏洞函数,该替换函数为一可行的函数,即***内核若运行该替换函数,可以保证正常运行而不会出现异常问题。
步骤102:根据至少一个所述替换函数,生成热补丁。
示例性地,在得到至少一个替换函数后,基于得到的至少一个替换函数,构建一个热补丁,从而在热补丁植入***内核后,***可以跳转至替换函数避免调用漏洞函数。
步骤103:将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
示例性地,热补丁构建完成后,将该热补丁植入***内核。***内核在运行过程中,在调用漏洞函数时,可以跳转至对应的替换函数,即不再调用漏洞函数,转而调用对应的替换函数,从而保证***内核能够正常运行。
这样,本申请实施例中,根据***内核中的补丁文件的数据段,编译生成用于替换数据段对应的漏洞函数的替换函数,继而根据得到的至少一个替换函数,构建生成一个热补丁,并将热补丁植入***内核中,在***内核运行过程中,运行至漏洞函数时,若没有热补丁,则会调用漏洞函数,进而会使***内核运行出现异常,在植入热补丁后,***内核在调用漏洞函数时,可以跳转至替换函数,避免运行漏洞函数进而对***内核的异常,并且本申请实施例的漏洞修复方法是在***内核运行过程中完成的,,无需对***进行重启操作,避免了***上层业务的中断,有效降低漏洞修复对业务的影响。
图2是本申请实施例的一种漏洞修复方法的步骤流程图,该方法用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,该方法可以包括以下步骤:
步骤201:基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数。
该步骤具体可以参照上述步骤101,此处不再赘述。
步骤202:根据至少一个所述替换函数,生成热补丁。
该步骤具体可以参照上述步骤102,此处不再赘述。
步骤203:将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
该步骤具体可以参照上述步骤103,此处不再赘述。
可选地,本申请实施例中,步骤202可以包括以下步骤:
步骤2021:根据至少一个所述替换函数,配置跳转函数,所述跳转函数包括至少一个跳转指令,一个所述跳转指令对应一个所述替换函数,且一个所述跳转指令对应一个漏洞函数。
示例性地,***内核在调用漏洞函数时,需要跳转至对应的替换函数来实现漏洞修复效果,本申请实施例中通过设置一个跳转函数,并在其中设置至少一个跳转指令,跳转指令分别与具有对应关系的替换函数和漏洞函数对应,这样,***内核对至少一个漏洞函数进行调用时,会统一跳转至跳转函数,进而运行对应的跳转指令,以跳转至对应的替换函数并运行。本申请实施例中,通过设置一个统一跳转的函数,有效管理由漏洞函数切换到替换函数的过程,提高***内核运行热补丁时的稳定性。
可选地,本申请实施例中,还可以不设置跳转函数,***内核可以在掉调用漏洞函数时,不经由跳转函数,直接跳转至对应的替换函数实现替换过程。
步骤2022:基于至少一个所述替换函数和所述跳转函数,生成热补丁。
示例性地,跳转函数配置完成后,可以基于跳转函数和与其对应的至少一个替换函数,构建一个热补丁,该热补丁即为最终需要植入***内核的热补丁,***内核可以通过调用漏洞函数跳转到跳转函数,并运行其中对应的跳转指令,进而跳转到相应的替换函数,从而实现***内核运行过程中,替换函数对漏洞函数的替换,避免***内核运行漏洞函数,达到漏洞修复的效果,有效减小了漏洞修复对上层业务的影响。
可选地,本申请实施例中,步骤2021可以包括以下步骤:
步骤20211:根据至少一个所述替换函数,生成对应的至少一个跳转指令。
示例性地,在获得替换函数之后,可以进行编译生成跳转指令,运行跳转指令,可以跳转到替换函数,即运行跳转指令实现的是对替换函数的调用。
步骤20212:配置预设算法,所述***内核通过运行所述预设算法确定与所述漏洞函数对应的跳转指令。
示例性地,当***内核由漏洞函数跳转至跳转函数后,为了能够准确地调用相应的跳转指令,需要在跳转函数中配置一预设算法,运行该预设算法,能够根据跳转来源的漏洞函数,确定出需要调用的跳转指令,进而跳转至该跳转指令。
可选地,预设算法可以采用哈希算法,根据漏洞函数和对应的跳转指令建立哈希表,***内核通过调用哈希表,可以确定与漏洞函数对应的跳转指令,进而跳转到该跳转函数,从而实现漏洞函数与跳转指令的对应。
步骤20213:基于至少一个所述跳转指令和所述预设算法,生成跳转函数。
示例性地,在完成预设算法的配置后,便可以基于跳转指令和预设算法生成跳转函数,这样,***内核跳转至跳转函数后,便可以通过运行预设算法,来准确调用对应的跳转指令,进而保证准确地跳转至对应的替换函数,保证***内核运行的稳定性。
可选地,所述***内核包括至少一个调用指令,一个调用指令对应一个函数,所述***内核通过所述调用指令跳转至所述函数并运行所述函数;所述调用指令包括跳转子指令,所述***内核基于所述跳转子指令的配置值确定跳转的函数。
示例性地,***内核的源码中,为了代码编译的整洁与可观性等,一般主函数与其中需要使用的函数是分开编译的,对函数的调用是通过主函数中的一条调用指令来完成的;每一条调用指令在***底层都设置有一条跳转子指令,一般该跳转子指令会被置为nop,***内核调用指令,进而运行至跳转子指令时,不会做额外处理,而是正常跳转至调用指令对应的函数运行;本申请实施例中,为了使***内核由调用指令跳转至替换函数,需要对跳转子指令进行配置值的修改,以使***内核运行该跳转子指令时可以跳转至替换函数,进而避免运行漏洞函数。
在步骤203之后,本申请实施例的漏洞修复方法还可以包括以下步骤:
步骤204:将所述漏洞函数对应的跳转子指令的配置值修改为第一预设值,所述***内核根据所述第一预设值跳转至对应的所述替换函数。
示例性地,在将热补丁植入***内核之后,进一步需要找到热补丁中涉及的替换函数对应的漏洞函数的调用指令,并将其中的跳转子指令的配置值修改为第一预设值,这样,***内核在运行调用指令时,可以通过跳转子指令的配置值跳转至热补丁中对应的替换函数,从而实现函数的替换,实现漏洞修复的效果。
可选地,针对同一个热补丁涉及的漏洞函数,跳转子指令的配置值是统一的,即是同一个值,***内核基于这些跳转子指令的配置值统一跳转至热补丁中的跳转函数,进而再通过预设算法确定对应的跳转指令,然后运行跳转指令来调用替换函数,从而实现避免***内核运行漏洞函数,转而运行对应的替换函数。
示例性地,***内核中设置有内核符号表,该内核符号表中包括***内核源码的所有函数的函数名,可以根据函数的函数名由内核符号表跳转至该函数对应的调用指令处,进而调用运行该函数。
可选地,在针对***内核的漏洞需要添加新的函数时,可以在热补丁植入***内核之后,将该新函数注册至内核符号表中。
可选地,所述数据段设置有修复指令。
示例性地,数据段中,会在存在漏洞的位置进行标记,确定该位置是需要增加内容,还是删除内容,或是修改内容。对于需要增加内容的数据段,***维护人员可以根据该漏洞的具体情况,确定消除该漏洞所需要增加的内容,进而在漏洞函数的原代码基础上,编译增加相应的内容,进而生成替换函数;同理,对于需要删除内容或修改内容的数据段,***维护人员对相应内容进行删除或修改;实际应用中,根据漏洞的复杂程度,对漏洞函数的处理可能同时涉及增加内容,删除内容和修改内容,***维护人员可以根据具体情况,确定并编译最终可以替换漏洞函数并消除该漏洞的替换函数。
步骤201可以包括以下步骤:
步骤2011:基于所述数据段,获取与所述数据段对应的漏洞函数。
示例性地,通过数据段与***内核的源码进行对照,可以确定与该数据段对应的漏洞函数,进而***维护人员可以进行替换函数的编译工作。
步骤2012:基于所述修复指令对获取的所述漏洞函数进行修复,得到替换函数。
示例性地,在确定对应的漏洞函数后,***维护人员可以根据数据段中的修复指令,结合漏洞函数以及漏洞的具体情况,分析解决方法,进而在漏洞函数原代码的基础上,进行增加、删除或修改等编译操作,进而得到替换函数,***内核运行该替换函数可以避免漏洞函数所涉及的漏洞。
可选地,在步骤201之前,本申请实施例的漏洞修复方法还可以包括以下步骤:
步骤205:在所述***内核中不存在与所述数据段匹配的数据的情况下,生成错误日志,所述错误日志用于反映所述补丁文件与所述***内核的版本不匹配。
示例性地,***内核在工作过程中,会根据业务需求进行相应的版本更新,版本更新之后,***内核的源码相较之前的源码差异较大,在版本更新之后一定时间段内,对应于该版本的补丁文件还没有及时生成,此时获取的补丁文件则是对应上一个版本的,是不能应用于当前版本的漏洞修复作业的,因此,在获取补丁文件之后,需要判断该补丁文件与***内核的版本是否匹配,当确定版本匹配之后,在根据补丁文件进行替换函数的生成操作。
示例性地,对于补丁文件与***内核的版本是否匹配的判断,可以通过补丁文件中的数据段与***内核源码进行匹配,当***内核的源码中能够找到与补丁文件中每一个数据段完全一致的代码段时,则说明该补丁文件与***内核的版本是匹配的;而当存在数据段,在***内核的源码中没有找到一致的代码段时,则说明该补丁文件与***内核的版本是不匹配的,该补丁文件不能用于当前版本的***内核的漏洞修复,进而可以生成错误日志,提示该补丁文件与***内核的版本不匹配。
可选地,在步骤203之后,本申请实施例的漏洞修复方法还可以包括以下步骤:
步骤206:在所述***内核运行异常的情况下,将所述热补丁从所述***内核中移除。
示例性地,本申请实施例中,对于热补丁的植入,可能会带来其他的问题,导致***内核运行出现问题,考虑到这种情况,在热补丁植入***内核之后,可以实时判断***内核的运行是否正常,当存在异常时,可能是热补丁带来的新的问题,此时可以将热补丁从***内核中移除,即卸载热补丁,避免上述出现的问题对***内核造成影响,进而影响上层业务的运转。
步骤207:生成提示日志,所述提示日志用于反映所述热补丁移除成功以及移除时间。
示例性地,在热补丁卸载完成后,可以生成提示日志,以提示热补丁已经移除成功,并记录该热补丁移除的时间,以便后续查看。
图3是本申请实施例的一种模块实现示意图。
示例性地,本申请实施例中的漏洞修复方法可以通过补丁编译生成模块、补丁注入模块和补丁卸载模块来实现,上述三个模块均围绕用于实现***内核漏洞修复的热补丁进行工作。
其中,补丁编译生成模块用于热补丁的生成,实际操作中,补丁编译生成模块可以首先根据补丁文件分析确定***内核的源码中哪些函数需要进行替换,然后通过补丁文件与***内核源码的比对确定版本是否匹配,在版本匹配的情况下,在内核符号表中查找漏洞函数对应的函数名,从而可以索引到该漏洞函数的调用指令在***内核源码中的具***置,,进而找到该漏洞该函数的原代码,然后***维护人员可以根据补丁文件和漏洞函数确定替换函数的内容,进而注入逻辑,即,替换函数的生成,跳转函数的配置,以使热补丁植入***内核后,***内核能够通过跳转实现漏洞修复;最后,根据替换函数和跳转函数构建热补丁。
补丁注入模块用于在补丁编译生成模块生成热补丁之后,将该热补丁植入到***内核中。可选地,可以再次进行版本是否匹配的判断,以保证该热补丁能够完成***内核的漏洞修复工作。在热补丁植入后,可以检测***内核中是否包含有该热补丁,若包含,则说明热补丁植入成功,可以进一步生成日志,提示植入操作完成,并记录相应的植入时间节点,若不包含,则可以输出一个提示植入失败的日志。
补丁卸载模块,即补丁回退模块,用于在热补丁植入后,检测到***内核出现了其他的问题时,将热补丁从***内核中卸载移除,并在卸载完成后输出提示卸载成功的日志。
图4是本申请实施例的一种漏洞修复流程示意图。
示例性地,热补丁植入***内核中后,***内核可以首先加载热补丁,然后通过函数符号表,即内核符号表,查找热补丁涉及的全部符号,即函数名,并通过内核符号表找到对应漏洞函数的调用指令的位置,进而可以通过调用指令的跳转子指令的配置值跳转到跳转函数,然后根据跳转函数中的哈希表确定对应的跳转指令,进而根据跳转指令与替换函数的关系,跳转至替换函数运行,即使用新函数代替老函数,从而避免***内核运行有漏洞的函数,实现漏洞修复的效果。
示例性地,***内核中设置有reg->ip寄存器,其可以指向对应函数的地址;在实际应用中,***内核在运行过程中,可能会出现虽然跳转到了替换函数,依然会通过上述寄存器跳转回漏洞函数的情况,为避免这种情况的出现,在植入热补丁之后,还会对上述寄存器进行修改,使其指向漏洞函数对应的替换函数的地址,避免***内核运行过程中跳转回漏洞函数,保证漏洞修复工作能够正常完成。
综上所述,本申请实施例中,在***内核披露处存在漏洞时,可以执行对***内核的漏洞修复操作。首先,可以获取***内核中的补丁文件,然后对补丁文件中的数据段与***内核的源码进行匹配,当存在不匹配的数据段时,可以生成错误日志来提示补丁文件与***内核的版本不匹配;当数据段均匹配时,说明补丁文件与***内核的版本是匹配的;进一步,可以根据数据段,获取与其对应的漏洞函数的原代码,然后根据数据段中的修复指令,对漏洞函数的原代码进行相应的编辑操作,进而得到替换函数;然后根据得到的替换函数,编译跳转函数,并在跳转函数中设置与替换函数对应的跳转指令,进一步,在跳转函数中设置预设算法,建立漏洞函数与跳转指令的对应关系,然后基于替换函数和跳转函数,生成热补丁;进一步,将生成的热补丁植入到***内核中。热补丁植入***内核之后,***内核在运行过程中,当运行至漏洞函数对应的调用指令时,通过运行其中的跳转子指令,可以基于为其配置的第一预设值,跳转至热补丁的跳转函数中,进入***内核可以通过运行预设算法确定需要调用的跳转指令,并通过调用跳转指令,跳转至对应的替换函数,并运行该替换函数,从而实现替换函数代替漏洞函数;当***内核运行时出现了其他的异常时,说明热补丁的植入为***内核带来了其他问题,此时,需要尽快将热补丁从***内核中移除,避免对***内核造成较大的影响,到移除完成后,可以生成日志,提示移除完成并记录时间节点,以便后续查看。通过设置上述过程的跳转逻辑,使得***内核在运行过程中,可以跳过漏洞函数,转而运行替换函数,避免***内核因运行漏洞函数导致异常,通过这种方式,可以避免***内核的漏洞修复需要对***执行重启操作的问题,保证了***上层业务不会因漏洞修复工作而中断,有效降低了漏洞修复对上层业务的影响。
本申请实施例提供的漏洞修复方法,执行主体可以为漏洞修复装置。本申请实施例中以漏洞修复装置执行漏洞修复方法为例,说明本申请实施例提供的漏洞修复装置。
图5是本申请实施例的一种漏洞修复装置的框图。该装置用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,该装置可以包括:
函数生成模块301,用于基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数。
补丁生成模块302,用于根据至少一个所述替换函数,生成热补丁。
补丁植入模块303,用于将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
可选地,补丁生成模块302包括:
函数配置子模块3021,用于根据至少一个所述替换函数,配置跳转函数,所述跳转函数包括至少一个跳转指令,一个所述跳转指令对应一个所述替换函数,且一个所述跳转指令对应一个漏洞函数。
补丁生成子模块3022,用于基于至少一个所述替换函数和所述跳转函数,生成热补丁。
可选地,函数配置子模块3021包括:
指令生成单元30211,用于根据至少一个所述替换函数,生成对应的至少一个跳转指令。
算法配置单元30212,用于配置预设算法,所述***内核通过运行所述预设算法确定与所述漏洞函数对应的跳转指令。
函数配置单元30213,用于基于至少一个所述跳转指令和所述预设算法,生成跳转函数。
可选地,所述***内核包括至少一个调用指令,一个调用指令对应一个函数,所述***内核通过所述调用指令跳转至所述函数并运行所述函数;所述调用指令包括跳转子指令,所述***内核基于所述跳转子指令的配置值确定跳转的函数。本申请实施例的漏洞修复装置还可以包括::
指令配置模块304,用于在所述将所述热补丁植入所述***内核之后,将所述漏洞函数对应的跳转子指令的配置值修改为第一预设值,所述***内核根据所述第一预设值跳转至对应的所述替换函数。
可选地,所述数据段设置有修复指令;函数生成模块301包括:
函数获取子模块3011,用于基于所述数据段,获取与所述数据段对应的漏洞函数。
函数生成子模块3012,用于基于所述修复指令对获取的所述漏洞函数进行修复,得到替换函数。
可选地,本申请实施例的漏洞修复装置还可以包括:
日志生成模块305,用于在所述基于所述数据段,生成替换函数之前,在所述***内核中不存在与所述数据段匹配的数据的情况下,生成错误日志,所述错误日志用于反映所述补丁文件与所述***内核的版本不匹配。
可选地,本申请实施例的漏洞修复装置还可以包括:
补丁移除模块306,用于在所述将所述热补丁植入所述***内核之后,在所述***内核运行异常的情况下,将所述热补丁从所述***内核中移除。
日志生成模块305还用于生成提示日志,所述提示日志用于反映所述热补丁移除成功以及移除时间。
综上所述,本申请实施例中,在***内核披露处存在漏洞时,可以执行对***内核的漏洞修复操作。首先,可以获取***内核中的补丁文件,然后对补丁文件中的数据段与***内核的源码进行匹配,当存在不匹配的数据段时,可以生成错误日志来提示补丁文件与***内核的版本不匹配;当数据段均匹配时,说明补丁文件与***内核的版本是匹配的;进一步,可以根据数据段,获取与其对应的漏洞函数的原代码,然后根据数据段中的修复指令,对漏洞函数的原代码进行相应的编辑操作,进而得到替换函数;然后根据得到的替换函数,编译跳转函数,并在跳转函数中设置与替换函数对应的跳转指令,进一步,在跳转函数中设置预设算法,建立漏洞函数与跳转指令的对应关系,然后基于替换函数和跳转函数,生成热补丁;进一步,将生成的热补丁植入到***内核中。热补丁植入***内核之后,***内核在运行过程中,当运行至漏洞函数对应的调用指令时,通过运行其中的跳转子指令,可以基于为其配置的第一预设值,跳转至热补丁的跳转函数中,进入***内核可以通过运行预设算法确定需要调用的跳转指令,并通过调用跳转指令,跳转至对应的替换函数,并运行该替换函数,从而实现替换函数代替漏洞函数;当***内核运行时出现了其他的异常时,说明热补丁的植入为***内核带来了其他问题,此时,需要尽快将热补丁从***内核中移除,避免对***内核造成较大的影响,到移除完成后,可以生成日志,提示移除完成并记录时间节点,以便后续查看。通过设置上述过程的跳转逻辑,使得***内核在运行过程中,可以跳过漏洞函数,转而运行替换函数,避免***内核因运行漏洞函数导致异常,通过这种方式,可以避免***内核的漏洞修复需要对***执行重启操作的问题,保证了***上层业务不会因漏洞修复工作而中断,有效降低了漏洞修复对上层业务的影响。
本申请实施例中的漏洞修复装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性地,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的漏洞修复装置可以为具有操作***的装置。该操作***可以为安卓(Android)操作***,可以为ios操作***,还可以为其他可能的操作***,本申请实施例不作具体限定。
本申请实施例提供的漏洞修复装置能够实现图1至图4的方法实施例实现的各个过程,达到相同的技术效果,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供一种电子设备400,包括处理器401和存储器402,存储器402上存储有可在所述处理器401上运行的程序或指令,该程序或指令被处理器401执行时实现上述漏洞修复方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图7为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备5000包括但不限于:射频单元5001、网络模块5002、音频输出单元5003、输入单元5004、传感器5005、显示单元5006、用户输入单元5007、接口单元5008、存储器5009、以及处理器5010等部件。
本领域技术人员可以理解,电子设备5000还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理***与处理器5010逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
应理解的是,本申请实施例中,输入单元5004可以包括图形处理器(GraphicsProcessing Unit,GPU)50041和麦克风50042,图形处理器50041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元5006可包括显示面板50061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板50061。用户输入单元5007包括触控面板50071以及其他输入设备50072中的至少一种。触控面板50071,也称为触摸屏。触控面板50071可包括触摸检测装置和触摸控制器两个部分。其他输入设备50072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器5009可用于存储软件程序以及各种数据。存储器5009可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,,其中,第一存储区可存储操作***、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器5009可以包括易失性存储器或非易失性存储器,或者,存储器5009可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本申请实施例中的存储器5009包括但不限于这些和任意其它适合类型的存储器。
处理器5010可包括一个或多个处理单元;可选地,处理器5010集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作***、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器5010中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述漏洞修复方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述漏洞修复方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为***级芯片、***芯片、芯片***或片上***芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述漏洞修复方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种漏洞修复方法,其特征在于,用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,所述方法包括:
基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数;
根据至少一个所述替换函数,生成热补丁;
将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
2.根据权利要求1所述的方法,其特征在于,所述根据至少一个所述替换函数,生成热补丁,包括:
根据至少一个所述替换函数,配置跳转函数,所述跳转函数包括至少一个跳转指令,一个所述跳转指令对应一个所述替换函数,且一个所述跳转指令对应一个漏洞函数;
基于至少一个所述替换函数和所述跳转函数,生成热补丁。
3.根据权利要求2所述的方法,其特征在于,所述根据至少一个所述替换函数,配置跳转函数,包括:
根据至少一个所述替换函数,生成对应的至少一个跳转指令;
配置预设算法,所述***内核通过运行所述预设算法确定与所述漏洞函数对应的跳转指令;
基于至少一个所述跳转指令和所述预设算法,生成跳转函数。
4.根据权利要求1所述的方法,其特征在于,所述***内核包括至少一个调用指令,一个调用指令对应一个函数,所述***内核通过所述调用指令跳转至所述函数并运行所述函数;
所述调用指令包括跳转子指令,所述***内核基于所述跳转子指令的配置值确定跳转的函数;
在所述将所述热补丁植入所述***内核之后,还包括::
将所述漏洞函数对应的跳转子指令的配置值修改为第一预设值,所述***内核根据所述第一预设值跳转至对应的所述替换函数。
5.根据权利要求1所述的方法,其特征在于,所述数据段设置有修复指令;
所述基于所述数据段,生成替换函数,包括:
基于所述数据段,获取与所述数据段对应的漏洞函数;;
基于所述修复指令对获取的所述漏洞函数进行修复,得到替换函数。
6.根据权利要求1所述的方法,其特征在于,在所述基于所述数据段,生成替换函数之前,还包括:
在所述***内核中不存在与所述数据段匹配的数据的情况下,生成错误日志,所述错误日志用于反映所述补丁文件与所述***内核的版本不匹配。
7.根据权利要求1-6任一项所述的方法,其特征在于,在所述将所述热补丁植入所述***内核之后,还包括:
在所述***内核运行异常的情况下,将所述热补丁从所述***内核中移除;
生成提示日志,所述提示日志用于反映所述热补丁移除成功以及移除时间。
8.一种漏洞修复装置,其特征在于,用于修复***内核中的至少一个漏洞函数,所述***内核包括补丁文件,所述补丁文件包括至少一个数据段,一个所述数据段对应一个所述漏洞函数中存在漏洞的预设范围的数据,所述装置包括:
函数生成模块,用于基于所述数据段,生成替换函数,所述替换函数用于在所述***内核运行时,替换所述数据段对应的所述漏洞函数;
补丁生成模块,用于根据至少一个所述替换函数,生成热补丁;
补丁植入模块,用于将所述热补丁植入所述***内核,所述***内核被配置为:在运行至所述漏洞函数时,跳转至所述替换函数并运行所述替换函数。
9.一种电子设备,其特征在于,包括处理器和存储器,,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-7任一项所述的漏洞修复方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-7任一项所述的漏洞修复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211381711.9A CN115688119A (zh) | 2022-11-03 | 2022-11-03 | 漏洞修复方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211381711.9A CN115688119A (zh) | 2022-11-03 | 2022-11-03 | 漏洞修复方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115688119A true CN115688119A (zh) | 2023-02-03 |
Family
ID=85049076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211381711.9A Pending CN115688119A (zh) | 2022-11-03 | 2022-11-03 | 漏洞修复方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115688119A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257853A (zh) * | 2023-05-15 | 2023-06-13 | 北京赛博昆仑科技有限公司 | 利用运行时内存补丁防御***漏洞的方法和装置 |
-
2022
- 2022-11-03 CN CN202211381711.9A patent/CN115688119A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257853A (zh) * | 2023-05-15 | 2023-06-13 | 北京赛博昆仑科技有限公司 | 利用运行时内存补丁防御***漏洞的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642596B2 (en) | Embedded device and program updating method | |
CN107451474B (zh) | 用于终端的软件漏洞修复方法和装置 | |
US20070180441A1 (en) | Method and system for avoidance of software conflict | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN105468529A (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
CN108958843A (zh) | 基于轻量化脚本的插件构建方法、***、设备及介质 | |
CN115688119A (zh) | 漏洞修复方法、装置、电子设备及存储介质 | |
CN107704730B (zh) | 一种电子设备内嵌软件自加密方法 | |
CN110851168B (zh) | 数据处理方法及其装置、计算机可读存储介质 | |
CN113760339A (zh) | 漏洞修复方法和装置 | |
CN109271181A (zh) | 应用兼容性修复方法、终端设备及计算机可读存储介质 | |
CN110414218B (zh) | 内核检测方法、装置、电子设备及存储介质 | |
Pashakhanloo et al. | Pacjam: Securing dependencies continuously via package-oriented debloating | |
CN113282435B (zh) | 应用异常的处理方法和电子设备 | |
CN117130672A (zh) | 服务器启动流程控制方法、***、终端及存储介质 | |
US9804932B2 (en) | Method and device for processing data and electronic apparatus | |
CN112379973B (zh) | 重载方法和装置 | |
CN112491799B (zh) | 通信模块远程修复方法、装置、计算机设备和存储介质 | |
CN111949301B (zh) | 应用程序热更新方法、装置和计算机可读存储介质 | |
CN115080984A (zh) | 第三方库文件漏洞检测方法、装置、电子设备及存储介质 | |
CN104516752A (zh) | 一种信息处理方法及电子设备 | |
CN113010199B (zh) | 应用更新方法、装置、计算机设备和存储介质 | |
CN105160240A (zh) | 一种终端密码保护方法和装置 | |
KR100321999B1 (ko) | 스크립트를이용한프로그램패치방법 | |
CN116775356A (zh) | 应用程序运行控制方法、装置、设备和介质 |
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 |