CN115186270A - 一种漏洞修复方法、装置、存储介质及电子设备 - Google Patents

一种漏洞修复方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN115186270A
CN115186270A CN202210845196.9A CN202210845196A CN115186270A CN 115186270 A CN115186270 A CN 115186270A CN 202210845196 A CN202210845196 A CN 202210845196A CN 115186270 A CN115186270 A CN 115186270A
Authority
CN
China
Prior art keywords
program
patch
service application
bug
application program
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
Application number
CN202210845196.9A
Other languages
English (en)
Inventor
张锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202210845196.9A priority Critical patent/CN115186270A/zh
Publication of CN115186270A publication Critical patent/CN115186270A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本说明书公开了一种漏洞修复方法、装置、存储介质及电子设备,在监测到业务应用程序运行过程出现漏洞时,获取修复漏洞所需的补丁程序,并针对漏洞,确定在业务应用程序中部署补丁程序的切点。通过切面底座,将补丁程序注入到切点中,并运行。在执行业务应用程序过程中,通过执行补丁程序,以修复业务应用程序中的漏洞。通过补丁程序修复业务应用程序中的漏洞,补丁程序可以作为应急修复漏洞的程序代码,这样,能够在研发人员上线正确逻辑的程序代码之前,对漏洞进行暂时的应急修复,避免了安全漏洞未被修复时,业务应用程序对应的服务器或主机遭到入侵攻击。

Description

一种漏洞修复方法、装置、存储介质及电子设备
技术领域
本说明书涉及安全领域,尤其涉及一种漏洞修复方法、装置、存储介质及电子设备。
背景技术
目前,在应用软件等产品的开发过程中,难免存在有一些软件设计方面的安全漏洞,如果不及时对安全漏洞进行修复,应用软件就可能遭到入侵攻击,使得用户的隐私数据被窃取。
在现有技术中,研发人员可针对业务应用程序中出现的漏洞,开发出用于修复漏洞的修复代码,然后,通过将得到的修复代码补充到业务应用程序中的原始代码中,从而完成漏洞的修复。
但是,这种方式在开发用于修复漏洞的修复代码时,需要考虑业务应用程序中代码与代码之间的耦合度,导致修复代码开发周期较长,并且,开发出用于修复漏洞的修复代码与业务应用程序的原始代码耦合性较高,导致后期维护业务应用程序也较为困难。
发明内容
本说明书提供一种漏洞修复方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种漏洞修复方法,包括:
在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点;
通过预先部署的切面底座,将所述补丁程序注入到所述切点,并运行;
在执行所述业务应用程序对应的业务时,通过所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
可选地,获取修复所述漏洞所需的补丁程序,具体包括:
确定所述漏洞在所述业务应用程序中的位置,作为待修复位置;
根据所述待修复位置,确定修复所述漏洞所需的补丁程序的标识;
根据所述补丁程序的标识,生成用于获取所述补丁程序的获取请求;
向补丁程序管控平台发送所述获取请求,以使所述补丁程序管控平台根据所述获取请求,返回修复所述漏洞所需的补丁程序。
可选地,通过预先部署的切面底座,将所述补丁程序注入到所述切点,具体包括:
通过预先部署的切面底座,确定在所述业务应用程序中注入所述补丁程序的注入方式;
根据所述注入方式,将所述补丁程序注入至所述切点;
其中,所述注入方式包括静态代理、动态代理。
可选地,所述方法还包括:
若接收到所述补丁程序的开启指令,则将所述补丁程序对应的状态切换为开启状态,在执行所述业务应用程序对应的业务过程中,执行所述补丁程序;
若接收到所述补丁程序的关闭指令,则将所述补丁程序对应的状态切换为关闭状态,在执行所述业务应用程序对应的业务过程中,不执行所述补丁程序。
可选地,在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复,具体包括:
在执行到所述业务应用程序中的所述切点时,执行所述补丁程序,并通过所述补丁程序,对所述业务应用程序存在的漏洞进行修改。
可选地,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复,具体包括:
在执行完所述补丁程序后,根据所述补丁程序中包含的指示信息,从所述业务应用程序中所述指示信息指向的位置,继续执行所述业务应用程序。
本说明书提供了一种漏洞修复装置,包括:
补丁程序获取模块,用于在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点;
补丁程序部署模块,用于通过预先部署的切面底座,将所述补丁程序注入到所述切点,并运行;
漏洞修复模块,用于在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
可选地,所述补丁程序获取模块,具体用于确定所述漏洞在所述业务应用程序中的位置,作为待修复位置;根据所述待修复位置,确定修复所述漏洞所需的补丁程序的标识;根据所述补丁程序的标识,生成用于获取所述补丁程序的获取请求;向补丁程序管控平台发送所述获取请求,以使所述补丁程序管控平台根据所述获取请求,返回修复所述漏洞所需的补丁程序。
可选地,所述补丁程序部署模块,具体用于通过预先部署的切面底座,确定在所述业务应用程序中注入所述补丁程序的注入方式;根据所述注入方式,将所述补丁程序注入至所述业务应用程序中;其中,所述注入方式包括静态代理、动态代理。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述漏洞修复方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述漏洞修复方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的漏洞修复方法中,在监测到业务应用程序运行过程出现漏洞时,获取修复漏洞所需的补丁程序,并针对漏洞,确定在业务应用程序中部署补丁程序的切点。通过切面底座,将补丁程序注入到切点中,并运行。在执行业务应用程序过程中,通过执行补丁程序,以修复业务应用程序中的漏洞。
从上述方法中可以看出,本方法通过切面底座,将补丁程序注入至业务应用程序之中。通过补丁程序修复业务应用程序中的漏洞,补丁程序可以作为应急修复漏洞的程序代码,这样,能够在研发人员上线正确逻辑的程序代码之前,对漏洞进行暂时的应急修复,避免了安全漏洞未被修复时,业务应用程序对应的服务器或主机遭到入侵攻击。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种漏洞修复方法的流程示意图;
图2为本说明书提供的一种补丁程序修复漏洞的示意图;
图3为本说明书提供的一种漏洞修复方法的结构示意图;
图4为本说明书提供的一种漏洞修复装置的示意图;
图5为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
对于任何应用程序或者操作系统软件来说,通常都会存在有漏洞。应用软件或操作系统软件中的漏洞可能是由用户在使用过程中被发现的,也有可能是应用软件的测试人员在对应用软件进行测试的过程中发现的,甚至有可能是被不怀好意的攻击者发现的。
由于漏洞通常是应用软件或者操作系统软件的程序代码在逻辑设计上的缺陷或错误,以应用软件出现漏洞为例,传统的漏洞修复方式是:应用软件的研发人员在发现应用系统中出现的漏洞之后,进行软件代码研发迭代来修复漏洞,需要研发出新的软件代码来替换当前漏洞所对应的那一部分代码或者将新的软件代码插入应用软件的程序之中。这就需要应用软件的研发人员编写出软件代码后,再进行线下测试、集成测试等一系列操作后,才能将其替换漏洞所对应的那一部分代码,以对漏洞进行修复,漏洞修复周期较长,并且,为了保证应用软件的安全,在漏洞未被修复前,会使应用软件对应的应用程序暂时停止执行这一部分的业务,导致用户无法正常使用应用软件的部分功能。其中,之所以漏洞修复周期较长,是由于应用软件对应的业务应用程序中代码与代码之间的耦合度较高,为了保证插入新的软件代码后的业务应用程序还能够正常运行,就需要研发人员对代码不断的进行编写、测试以及修改。
另外,由于漏洞修复周期较长,在漏洞未被修复的这一段时间内,应用软件对应的服务器或主机随时可能被攻击者攻击,用户的隐私数据在应用软件的漏洞未被修复之前是非常容易被窃取的。
本说明书所提供的漏洞修复方法通过安全切面的方式,将补丁程序注入至业务应用程序中,以对安全漏洞进行快速的应急修复,从而免受到攻击者的攻击,保障了应用软件的安全。其中,由于切面程序与业务应用程序之间的耦合度较低,就不存在上述插入补丁程序之后,业务应用程序无法正常运行的顾虑,因此,本说明书提供的漏洞修复方法能够作为对漏洞的应急修复手段。
先对安全切面进行解释,其中,安全切面是指通过采用面向切面编程(Aspect-oriented Programming,AOP)的方式,在不修改业务应用程序的情况下,在业务应用程序的运行逻辑中动态的添加或修改用于实现安全切面业务的切面程序(即,本方法中的补丁程序)的方法。使得在实现安全切面业务的同时,使实现安全切面业务的程序(补丁程序)与业务应用程序解耦,从而避免高耦合导致的开发迭代问题。
这里说的切面程序,即基于业务运行逻辑来实现安全切面业务的增强程序,以此来修复当前在业务应用程序中由于业务运行逻辑异常所导致的漏洞。可通过采用面向切面编程的方式,将切面程序(补丁程序)注入至业务应用程序的相应切点处,该切面程序在执行业务应用程序的过程中被触发执行,实现通过切面程序来修复业务应用程序中出现的漏洞。
而业务应用程序在执行业务时,业务应用程序通常通过方法之间的调用进行业务执行。因此,可将业务应用程序中的任意方法作为切面程序的切入点,即切点,并将切面程序注入对应切点。使得业务应用程序在执行至切点,即调用该切点对应的业务应用程序的方法时,执行在该切点注入的切面程序。
通常,负责将切面程序注入至切点的过程的代码存在较高的可复用性,因此,通常将实现这一过程的程序抽象为一个服务模块,即切面底座。切面底座可从提供安全切面业务的第三方获取需要部署的切面程序以及获取业务应用程序中的切点,在应用容器启动后被环境并在业务应用程序的切点处注入对应的切面程序。
业务应用程序可以是业务平台的服务器中提供业务服务的业务应用程序。其中,业务服务可以是业务平台的服务器向用户提供的业务服务,如,查询业务、支付业务等。业务服务还可以是业务平台的某服务器向其他服务器提供的业务服务,如,结算业务等。
当然了,由上述描述可知,为了使安全切面业务的程序与业务应用程序解耦,本说明书通过采用面向切面编程的方式使得安全切面业务的程序(即,补丁程序)与业务应用程序在业务执行时相互交织,但又互相平行可各自独立维护。因此,区别于业务应用程序的业务提供方,提供安全切面业务的第三方可通过管控平台管理安全切面业务所涉及的内容,例如,安全切面业务管控策略的配置、切面程序的版本迭代、切面程序的部署规则配置等等。当然,提供安全切面业务的可以是第三方,也可以是业务提供方。
管控平台在管理安全切面业务所涉及的内容时,可通过配置文件记录各种配置信息,例如各种策略的配置、切面程序的部署规则配置等。使得切面底座可根据配置文件完成对切面程序的部署,或者管控平台可根据配置文件实现安全切面业务。
在实际应用中,业务提供方通常设置有包括若干物理机或物理服务器的机房,通过物理机提供业务应用程序所需的物理资源。当然,一个业务应用程序可能无需整个物理机的所有物理资源,于是,一般还会通过虚拟化技术在一个物理机上运行多个虚拟主机(virtual hosting)。各个虚拟主机之间是互相独立的,各自享有物理机的部分物理资源。然后,可在虚拟主机中部署应用容器,并通过应用容器运行业务应用程序。应用容器通常包含分配给该应用容器的物理资源,如CPU、内存等,以及提供给该应用容器的运行环境,如操作系统(Operating System,OS)或其他运行环境数据,如,容器的序列(Serial Number,SN)号、分配的IP(Influential Property)、应用名、租户、环境变量等)。业务应用程序可部署在应用容器中以执行业务。
而在基于安全切面执行业务的场景中,业务提供方或者提供安全切面业务的第三方的服务器可提供管控平台,通过管控平台管理安全切面业务所涉及的内容,并将切面底座部署在应用容器中,通过切面底座将切面程序注入业务应用容器中的业务应用程序中,以为业务提供方的应用容器提供安全切面业务的支持。
于是,可预先在业务提供方的应用容器中部署切面底座。一般情况下,在启动应用容器时,可唤起提供给应用容器的操作系统,以及运行预先部署的切面底座,通过切面底座从管控平台中得到切面程序和业务应用程序的切点,并将切面程序注入应用容器中的业务应用程序的切点处。此外,切面底座也可在业务应用程序执行过程中,从管控平台中得到切面程序和业务应用程序的切点,并将切面程序注入应用容器中的业务应用程序的切点处。
当然,切面底座如何从管控平台中得到部署切面程序所需的信息,可根据需要设置。例如,可以是根据配置文件主动从管控平台中拉取所需的信息,或者管控平台可主动下发使切面底座接收所需的信息。
将切面程序注入业务应用程序的切点后,业务应用程序在执行过程中,即可触发该切面程序从而实现相应的安全切面业务功能,即补丁程序在修复漏洞后所对应的业务功能。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中一种漏洞修复方法的流程示意图,具体包括以下步骤:
S100:在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点。
在实际操作中,当业务应用程序被研发出来后,为了避免其存在安全漏洞等问题,会对其进行测试,在测试期间,有可能会发现业务应用程序中存在的安全漏洞。另外,由于无法百分之百的保证业务应用程序所隐藏的所有安全漏洞能够在上线之前均能被发现,因此,在执行业务应用程序对应的业务过程中,也需要时刻检测业务应用程序中是否存在漏洞。
基于上述说明,本说明书所提供的漏洞修复方法,可以是由业务应用程序对应的服务器或电子设备执行,例如,笔记本电脑、手机等,还可以由另外的监控系统执行,其中监控系统部署在独立的服务器中,其作为用于监控业务应用程序是否存在安全漏洞,本说明书对此不作限制。
以下仅以业务应用程序对应的服务器作为执行主体为例进行说明。
具体的,服务器可实时业务应用程序,当业务应用程序无法按照预定的业务流程正常执行某个业务时,可确定业务应用程序出现了漏洞,服务器可获取修复漏洞所需的补丁程序,对业务应用程序中存在的漏洞进行修复。同时,服务器可针对漏洞,确定出获取到的补丁程序在业务应用程序中所应注入的位置,即切点。
对于服务器获取修复漏洞所需的补丁程序,在本说明书提供的漏洞修复方法中,设置了用于管理各个补丁程序的补丁程序管控平台。服务器在监测到业务应用程序存在漏洞时,可向补丁管控平台发送用于获取修复漏洞所需的补丁程序的获取请求。补丁程序管控平台在接收到服务器发送的获取请求后,将补丁程序返回给服务器。
其中,补丁程序可以是预先生成并存储在补丁管控平台的,也可以是基于当前业务应用程序中的漏洞,实时生成的补丁程序,本说明书对此不作限制。
S102:通过预先部署的切面底座,将所述补丁程序注入到所述切点,并运行。
本说明书所提供的漏洞修复方法,是通过安全切面的方式,将补丁程序注入至业务应用程序中,其中,安全切面的本质是通过面向切面编程的方式,将补丁程序注入至业务应用程序中,使得补丁程序与业务应用程序相互交织,可实现对业务应用程序中漏洞的修复。
具体的,服务器可通过切面底座,确定在业务应用程序中补丁程序的注入方式,根据确定出的注入方式,将补丁程序注入至切点。其中,切点可以理解为将补丁程序注入至业务应用程序中的指定的类的指定函数的指定部位,其中,指定部位可以是程序代码的起始点、结束点或者异常抛出点,例如:before、return或者throw。
注入方式可以是静态代理或者动态代理,其中,静态代理是将当前正在运行的业务应用程序停止,将补丁程序注入后,再将注入了补丁程序的业务应用程序重新启动,动态代理是在业务应用程序在运行的过程中,直接将补丁程序注入至业务应用程序中,无需停止运行业务应用程序。在实际操作中,服务器通常以动态代理作为主要注入方式,但本说明对具体的部署方式不作限制。
可将服务器通过切面底座将补丁程序注入至业务应用程序的方式看作是以安全切面的方式对补丁程序注入至业务应用程序之中。
之后,服务器可运行已经注入有补丁程序的业务应用程序,以使补丁程序发挥修复业务应用程序中存在的漏洞的作用。
S104:在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
值得注意的是,当业务应用程序或操作系统软件存在漏洞后,为了能够彻底解决其出现的问题,还是需要采用上述说明的传统的安全漏洞修复方法。但是,为了避免在安全漏洞被完全修复完毕之前被攻击者入侵攻击,本说明书提供的漏洞修复方法可作为一种应急的修复手段,其可以暂时保障业务应用程序的安全。
具体的,服务器是以按照顺序执行业务应用程序的代码,来执行业务应用程序对应的业务。其中,通过补丁程序修复漏洞通常存在多种情况,其一是:当在漏洞对应的代码中补充了补丁程序后,当前业务应用程序存在的逻辑问题就能够被解决,即,业务应用程序中的漏洞即可被修复。还有一种情况是当前业务应用程序中漏洞对应的代码存在逻辑问题,需要采用补丁程序替代这段存在逻辑问题的代码后,即,不执行业务应用程序中漏洞对应的代码,执行补丁代码,业务应用程序中的漏洞可被修复。
基于此,补丁程序中可包含有用于指示业务应用程序在执行完毕补丁程序后,指导业务应用程序执行后续的代码的指示信息。在执行完补丁程序后,业务应用程序可根据补丁程序中包含有指示信息,从业务应用程序中指示信息所指示的位置,继续执行业务应用程序。其中,指示信息所指示的位置是指业务应用程序对应的代码中的某一函数的某一类的某一位置。
其中,指示信息可以是指示执行完补丁程序后,按照顺序继续往下执行业务应用程序,也可以是在执行完补丁程序后,返回到补丁程序中的指示信息所指示的某一函数后,顺序执行业务应用程序等,本说明书对此不作限制。
在通过补丁程序修复漏洞的过程中,补丁程序通常作为增强代码,来增加当前业务应用程序中的逻辑,以解决当前业务应用程序中的漏洞所存在的逻辑问题,即,通过补丁程序修复业务应用程序中的漏洞。
举例来说,以通过执行补丁代码,而不执行漏洞对应的代码的方式对业务应用程序中存在的漏洞进行修复为例,修复漏洞操作可如图2所示,模块A、模块B、模块C分别代表业务应用程序中对应的不同业务对应的代码模块,在正常情况下,执行业务应用程序对应的业务的流程为:模块A、模块B、模块C。当发现模块B存在逻辑设计问题时,即,业务应用程序存在漏洞,模块B对应的程序代码为漏洞对应的代码,服务器可确定能够临时替代模块B作用的补丁程序,即,模块B’,作为应急的修复模块。在使用模块B’对业务应用程序进行应急修复,即,执行业务应用程序对应的业务的流程可为:模块A、模块B’、模块C,这样,业务应用程序还能够正常执行,不影响用户的使用,同时,在这期间,业务应用程序的研发人员还可对模块B的代码进行彻底的修复。
基于图1所示的漏洞修复方法,在本说明书提供的漏洞修复方法中,在监测到业务应用程序运行过程出现漏洞时,获取修复漏洞所需的补丁程序,并针对漏洞,确定在业务应用程序中部署补丁程序的切点。通过切面底座,将补丁程序注入到切点中,并运行。在执行业务应用程序过程中,通过执行补丁程序,以修复业务应用程序中的漏洞。
从上述方法中可以看出,本方法通过切面底座,将补丁程序注入至业务应用程序之中。通过补丁程序修复业务应用程序中的漏洞,补丁程序可以作为应急修复漏洞的程序代码,这样,能够在研发人员上线正确逻辑的程序代码之前,对漏洞进行暂时的应急修复,避免了安全漏洞未被修复时,业务应用程序对应的服务器或主机遭到入侵攻击
进一步的,在获取补丁程序时,服务器可确定漏洞在业务应用程序中所在的位置,作为待修复位置,之后,服务器可根据待修复位置,确定修复漏洞的补丁程序的标识,再根据补丁程序的标识,生成获取请求,并将其发送给补丁程序管控平台。补丁程序管控平台可对接收到的获取请求进行解析,按照获取请求中的补丁程序的标识,在各补丁程序中,确定出修复漏洞的补丁程序,并返回给服务器。
其中,服务器可根据在历史上业务应用程序出现的各漏洞,生成各补丁程序,并对每个补丁程序进行标识,并将每个补丁程序与该补丁程序的标识对应存储在补丁程序管控平台中。其中,针对每个补丁程序,服务器可根据该补丁程序对应的修复位置,确定该补丁程序对应的标识,还可以其他依据确定各补丁程序对应的标识,本说明书对此不作限制。
另外,补丁程序可以是切面程序,服务器可通过切面底座将补丁程序直接注入业务应用程序中,补丁程序也可以是非切面程序,服务器可通过切面底座,将补丁程序转换为切面程序,再将其注入至业务应用程序中。
具体的,可预先设置将非切面程序转换为切面程序的转换规则,切面底座可按照转换规则,将属于非切面程序的补丁程序的每一行代码进行转换,以得到属于切面程序的补丁程序。
另外,业务应用程序对应的服务器与补丁程序管控平台之间的结构如图3所示,具体的,在确定业务应用程序出现漏洞时,工作人员可通过补丁程序平台配置补丁程序防御规则以及对于补丁程序的配置开关程序,并将其发送给服务器中的切面底座。其中,补丁程序防御规则可以包括补丁程序的切点、补丁程序的标识等信息,服务器可补丁程序的配置开关程序控制业务应用程序是否执行补丁程序。
切面底座可对接收到补丁程序防御规则进行解析,以确定出补丁程序的注入位置(切点)以及注入方式,切面底座跟按照注入方式,将补丁程序注入至业务应用程序中的切点。其中,待修复位置可以与切点为相同位置,也可以是不同位置,本说明书对此不作说明。其中,切点可以是补丁程序具体的插入位置,而待修复位置可以看作是漏洞所在的位置,但是在本说明书实施例中,补丁程序并不一定注入至在待修复位置上才能起到修复漏洞的作用,即待修复位置可相当于切点(补丁程序的注入位置),也可以与切点不是同一位置。
进一步的,为了避免将补丁程序注入业务应用程序后,导致业务应用程序还存在漏洞的这种极端情况的出现,还可对补丁程序的配置开关进行灵活部署。当业务应用程序在注入了补丁程序后出现故障时,可通过补丁程序的配置开关变更为关闭状态,这样,在执行业务应用程序过程中,就不会执行补丁程序,从而起到了降级的作用。可以理解为,将补丁程序的配置开关关闭后,由于业务应用程序不会再执行补丁程序,那么,在执行过程中,此时的业务应用程序也就与注入补丁程序之前并无二样。
以上为本说明书的一个或多个实施例提供的漏洞修复方法,基于同样的思路,本说明书还提供了相应的漏洞修复装置,如图4所示。
图4为本说明书提供的一种漏洞修复装置示意图,具体包括:
补丁程序获取模块401、补丁程序部署模块402、漏洞修复模块403,其中:
补丁程序获取模块401,用于在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点;
补丁程序部署模块402,用于通过预先部署的切面底座,将所述补丁程序注入至所述切点,并运行;
漏洞修复模块403,用于在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
可选地,所述补丁程序获取模块401,具体用于确定所述漏洞在所述业务应用程序中的位置,作为待修复位置;根据所述待修复位置,确定修复所述漏洞所需的补丁程序的标识;根据所述补丁程序的标识,生成用于获取所述补丁程序的获取请求;向补丁程序管控平台发送所述获取请求,以使所述补丁程序管控平台根据所述获取请求,返回修复所述漏洞所需的补丁程序。
可选地,所述补丁程序部署模块402,具体用于通过预先部署的切面底座,确定在所述业务应用程序中注入所述补丁程序的注入方式;根据所述注入方式,将所述补丁程序注入至切点;其中,所述注入方式包括静态代理、动态代理。
可选地,所述补丁程序部署模块402,还用于若接收到所述补丁程序的开启指令,则将所述补丁程序对应的状态切换为开启状态,在执行所述业务应用程序对应的业务过程中,执行所述补丁程序;若接收到所述补丁程序的关闭指令,则将所述补丁程序对应的状态切换为关闭状态,在执行所述业务应用程序对应的业务过程中,不执行所述补丁程序。
可选地,所述漏洞修复模块403具体用于,在执行到所述业务应用程序中的所述切点时,执行所述补丁程序,并通过所述补丁程序,对所述业务应用程序存在的漏洞进行修改。
可选地,所述漏洞修复模块403还用于,在执行完所述补丁程序后,根据所述补丁程序中包含的指示信息,从所述业务应用程序中所述指示信息指向的位置,继续执行所述业务应用程序。
需要说明的是,本申请中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的漏洞修复方法。
本说明书还提供了图5所示的电子设备的示意结构图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的漏洞修复方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (11)

1.一种漏洞修复方法,包括:
在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点;
通过预先部署的切面底座,将所述补丁程序注入到所述切点,并运行;
在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
2.如权利要求1所述的方法,获取修复所述漏洞所需的补丁程序,具体包括:
确定所述漏洞在所述业务应用程序中的位置,作为待修复位置;
根据所述待修复位置,确定修复所述漏洞所需的补丁程序的标识信息;
根据所述标识信息,生成用于获取所述补丁程序的获取请求;
向补丁程序管控平台发送所述获取请求,以使所述补丁程序管控平台根据所述获取请求,返回修复所述漏洞所需的补丁程序。
3.如权利要求1所述的方法,通过预先部署的切面底座,将所述补丁程序注入到所述切点,具体包括:
通过预先部署的切面底座,确定在所述业务应用程序中注入所述补丁程序的注入方式;
根据所述注入方式,将所述补丁程序注入至所述切点;
其中,所述注入方式包括静态代理、动态代理。
4.如权利要求1所述的方法,所述方法还包括:
若接收到所述补丁程序的开启指令,则将所述补丁程序对应的状态切换为开启状态,并在执行所述业务应用程序对应的业务时,执行所述补丁程序;
若接收到所述补丁程序的关闭指令,则将所述补丁程序对应的状态切换为关闭状态,在执行所述业务应用程序对应的业务时,不执行所述补丁程序。
5.如权利要求1所述的方法,在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复,具体包括:
在执行到所述业务应用程序中的所述切点时,执行所述补丁程序,并通过所述补丁程序,对所述业务应用程序存在的漏洞进行修改。
6.如权利要求1所述的方法,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复,具体包括:
在执行完所述补丁程序后,根据所述补丁程序中包含的指示信息,从所述业务应用程序中所述指示信息指向的位置,继续执行所述业务应用程序。
7.一种漏洞修复装置,包括:
补丁程序获取模块,用于在监测到业务应用程序运行过程中出现漏洞时,获取修复所述漏洞所需的补丁程序,并针对所述漏洞,确定在所述业务应用程序中部署所述补丁程序的切点;
补丁程序部署模块,用于通过预先部署的切面底座,将所述补丁程序注入到所述切点,并运行;
漏洞修复模块,用于在执行所述业务应用程序对应的业务时,通过执行所述补丁程序,以对所述业务应用程序存在的漏洞进行修复。
8.如权利要求7所述的装置,所述补丁程序获取模块,具体用于确定所述漏洞在所述业务应用程序中的位置,作为待修复位置;根据所述待修复位置,确定修复所述漏洞所需的补丁程序的标识信息;根据所述补丁程序的标识信息,生成用于获取所述补丁程序的获取请求;向补丁程序管控平台发送所述获取请求,以使所述补丁程序管控平台根据所述获取请求,返回修复所述漏洞所需的补丁程序。
9.如权利要求7所述的装置,所述补丁程序部署模块,具体用于通过预先部署的切面底座,确定在所述业务应用程序中注入所述补丁程序的注入方式;根据所述注入方式,将所述补丁程序注入至所述业务应用程序中;其中,所述注入方式包括静态代理、动态代理。
10.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~6任一项所述的方法。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~6任一项所述的方法。
CN202210845196.9A 2022-07-18 2022-07-18 一种漏洞修复方法、装置、存储介质及电子设备 Pending CN115186270A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210845196.9A CN115186270A (zh) 2022-07-18 2022-07-18 一种漏洞修复方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210845196.9A CN115186270A (zh) 2022-07-18 2022-07-18 一种漏洞修复方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN115186270A true CN115186270A (zh) 2022-10-14

Family

ID=83519428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210845196.9A Pending CN115186270A (zh) 2022-07-18 2022-07-18 一种漏洞修复方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN115186270A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024125108A1 (zh) * 2022-12-14 2024-06-20 支付宝(杭州)信息技术有限公司 移动端安全切面的按需开启方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024125108A1 (zh) * 2022-12-14 2024-06-20 支付宝(杭州)信息技术有限公司 移动端安全切面的按需开启方法及装置

Similar Documents

Publication Publication Date Title
CN109032825B (zh) 一种故障注入方法、装置及设备
US10496462B2 (en) Providing instructions to facilitate detection of corrupt stacks
CN115185534A (zh) 一种数据脱敏方法、装置、可读存储介质以及电子设备
CN115378735B (zh) 一种数据处理方法、装置、存储介质及电子设备
JP2014521184A (ja) 信頼レベルのアクティブ化
CN110795128B (zh) 一种程序漏洞修复方法、装置、存储介质及服务器
US9038048B2 (en) Methods, systems, and media for protecting applications from races
CN115374481B (zh) 数据脱敏处理的方法、装置、存储介质及电子设备
CN115186270A (zh) 一种漏洞修复方法、装置、存储介质及电子设备
CN115185777A (zh) 一种异常检测方法、装置、可读存储介质以及电子设备
CN115185755A (zh) 一种异常检测方法、装置、存储介质及电子设备
CN113987599B (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
CN106997313B (zh) 一种应用程序的信号处理方法、系统及终端设备
CN111190692A (zh) 一种基于鲲鹏处理器的监控方法、系统及可读介质
CN115185847A (zh) 一种故障测试方法、装置、存储介质及电子设备
CN115495343A (zh) 一种安全维护方法、装置、存储介质及电子设备
CN115277142A (zh) 一种安全防护方法、装置、存储介质及电子设备
CN115186269A (zh) 一种漏洞挖掘方法、装置、存储介质及电子设备
US20220382576A1 (en) Performing an application snapshot using process virtual machine resources
CN113342376B (zh) 一种针对物联网设备的操作系统进行升级的方法及装置
CN115495777A (zh) 一种数据保护方法、装置、存储介质及电子设备
CN111835513B (zh) 一种更新凭证数据的方法、装置及设备
CN116048827A (zh) 一种进程间的函数调用方法及相关设备
CN113574513A (zh) 检测用于保护存储器的存储密钥的更改
CN114780283B (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