漏洞修复方法及装置与流程

文档序号:12809814阅读:314来源:国知局
漏洞修复方法及装置与流程

本发明涉及信息安全技术领域,特别是一种漏洞修复方法及装置。



背景技术:

在win10中,微软引入了新的windows更新发布机制,即不再使用过去的分散独立安装包的形式,而是改用每月一个大累计更新包的形式。这种形式解决了系统更新碎片化严重的问题,使得系统更新过程更加简单。但也存在一些问题,例如,累计更新包体积比较大(如win10x64累计更新已超过1g),包含了大而全的更新信息,而这些信息对于具体某个用户终端来说,并非都是必须的,对具体的某个用户终端来说,累计更新包中存在很多无用信息,这会造成不必要的流量浪费。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的漏洞修复方法及相应的装置。

依据本发明的一方面,提供了一种漏洞修复方法,包括:

加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;

利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,进而利用所述多个更新文件对本地漏洞进行修复。

可选地,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库,包括:

获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

加载获取的所述扫描库。

可选地,所述文件服务器包括多个内容分发网络cdn结点和kv服务器,各cdn结点同步有各补丁对应的更新文件;所述kv服务器建立有更新文件的标识和地址信息的索引。

可选地,所述扫描库中记录有各补丁对应的更新文件的标识,确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,包括:

根据所述扫描库中记录的各补丁对应的更新文件的标识,确定所述待安装的补丁对应的备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

可选地,各cdn结点还同步有各补丁对应的更新包,所述更新包中包含多个更新文件的标识,所述kv服务器还建立有更新包的标识和地址信息的索引。

可选地,所述扫描库中记录有各补丁对应的更新包的标识,确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,包括:

根据所述扫描库中记录的各补丁对应的更新包的标识,确定所述待安装的补丁对应的目标更新包的标识;

利用所述目标更新包的标识从所述kv服务器处获取所述目标更新包的地址信息;

利用所述目标更新包的地址信息从相应的cdn结点处下载得到所述目标更新包;

解压所述目标更新包确定所述多个更新文件的标识。

可选地,解压所述目标更新包确定所述多个更新文件的标识,包括:

解压所述目标更新包得到备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

可选地,利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,包括:

利用所述多个更新文件的标识从所述kv服务器处获取所述多个更新文件的地址信息;

利用所述多个更新文件的地址信息从相应的cdn结点处下载得到所述多个更新文件。

可选地,利用所述多个更新文件对本地漏洞进行修复,包括:

将下载得到的所述多个更新文件复制到所述临时安装目录;

安装所述临时安装目录中的文件,以对本地漏洞进行修复。

可选地,所述索引中还包括下列至少之一的索引信息:

更新文件的摘要信息、大小、发布时间、校验信息。

可选地,将下载得到的所述多个更新文件复制到所述临时安装目录,包括:

利用所述多个更新文件的标识,从所述kv服务器处获取所述多个更新文件的包含更新文件的校验信息的索引信息;

利用所述校验信息对下载得到所述多个更新文件进行校验,在校验通过后,将所述多个更新文件复制到所述临时安装目录。

可选地,利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,包括:

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集;

从所述扫描结果集中选取待安装的补丁。

可选地,利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集,包括:

枚举加载的所述扫描库中所有的补丁,得到更新列表;

遍历所述更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到所述扫描结果集中。

依据本发明的另一方面,还提供了一种漏洞修复装置,包括:

加载模块,适于加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

确定模块,适于利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;

漏洞修复模块,适于利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,进而利用所述多个更新文件对本地漏洞进行修复。

可选地,所述加载模块还适于:

获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

加载获取的所述扫描库。

可选地,所述文件服务器包括多个内容分发网络cdn结点和kv服务器,各cdn结点同步有各补丁对应的更新文件;所述kv服务器建立有更新文件的标识和地址信息的索引。

可选地,所述确定模块还适于:

根据所述扫描库中记录的各补丁对应的更新文件的标识,确定所述待安装的补丁对应的备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

可选地,各cdn结点还同步有各补丁对应的更新包,所述更新包中包含多个更新文件的标识,所述kv服务器还建立有更新包的标识和地址信息的索引。

可选地,所述确定模块还适于:

根据所述扫描库中记录的各补丁对应的更新包的标识,确定所述待安装的补丁对应的目标更新包的标识;

利用所述目标更新包的标识从所述kv服务器处获取所述目标更新包的地址信息;

利用所述目标更新包的地址信息从相应的cdn结点处下载得到所述目标更新包;

解压所述目标更新包确定所述多个更新文件的标识。

可选地,所述确定模块还适于:

解压所述目标更新包得到备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

可选地,所述漏洞修复模块还适于:

利用所述多个更新文件的标识从所述kv服务器处获取所述多个更新文件的地址信息;

利用所述多个更新文件的地址信息从相应的cdn结点处下载得到所述多个更新文件。

可选地,所述漏洞修复模块还适于:

将下载得到的所述多个更新文件复制到所述临时安装目录;

安装所述临时安装目录中的文件,以对本地漏洞进行修复。

可选地,所述索引中还包括下列至少之一的索引信息:

更新文件的摘要信息、大小、发布时间、校验信息。

可选地,所述漏洞修复模块还适于:

利用所述多个更新文件的标识,从所述kv服务器处获取所述多个更新文件的包含更新文件的校验信息的索引信息;

利用所述校验信息对下载得到所述多个更新文件进行校验,在校验通过后,将所述多个更新文件复制到所述临时安装目录。

可选地,所述确定模块还适于:

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集;

从所述扫描结果集中选取待安装的补丁。

可选地,所述确定模块还适于:

枚举加载的所述扫描库中所有的补丁,得到更新列表;

遍历所述更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到所述扫描结果集中。

在本发明实施例中,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;进而利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;之后利用多个更新文件的标识从文件服务器处获取多个更新文件,进而利用多个更新文件对本地漏洞进行修复。由此可见,本发明实施例在进行漏洞修复时直接加载与自身系统平台匹配的扫描库,可以提高扫描效率,并提升漏洞修复的有效性。并且,本发明实施例无需从程序提供者处获取并处理用于修复程序漏洞的累计更新数据,而是直接从发布至的文件服务器处获取更新文件,能够提高获取更新文件的效率,从而提高漏洞修复的效率。另外,由于累计更新包体积比较大,本发明实施例从文件服务器处获取待安装的补丁对应的、且本地系统中未存在的多个更新文件,相比于现有技术中获取包含了大而全的更新信息的累计更新数据,本发明实施例能够节省数据流量,进一步提高漏洞修复的效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一实施例的漏洞修复方法的流程图;

图2示出了客户端的一种扫描流程的示意图;

图3示出了客户端的一种安装流程的示意图;

图4示出了根据本发明一实施例的漏洞修复系统的结构示意图;以及

图5示出了根据本发明一实施例的漏洞修复装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为解决上述技术问题,本发明实施例提供了一种漏洞修复方法,该方法可以应用在用户终端的客户端上。图1示出了根据本发明一实施例的漏洞修复方法的流程图。如图1所示,该方法至少可以包括以下步骤s102至步骤s106。

步骤s102,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库。

步骤s104,利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识。

步骤s106,利用多个更新文件的标识从文件服务器处获取多个更新文件,进而利用多个更新文件对本地漏洞进行修复。

在本发明实施例中,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;进而利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;之后利用多个更新文件的标识从文件服务器处获取多个更新文件,进而利用多个更新文件对本地漏洞进行修复。由此可见,本发明实施例在进行漏洞修复时直接加载与自身系统平台匹配的扫描库,可以提高扫描效率,并提升漏洞修复的有效性。并且,本发明实施例无需从程序提供者处获取并处理用于修复程序漏洞的累计更新数据,而是直接从发布至的文件服务器处获取更新文件,能够提高获取更新文件的效率,从而提高漏洞修复的效率。另外,由于累计更新包体积比较大,本发明实施例从文件服务器处获取待安装的补丁对应的、且本地系统中未存在的多个更新文件,相比于现有技术中获取包含了大而全的更新信息的累计更新数据,本发明实施例能够节省数据流量,进一步提高漏洞修复的效率。

上文步骤s102中加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库,本发明实施例提供了一种可选的方案,即,获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库,进而加载获取的扫描库。

进一步地,数据发布服务器可以按照指定时间周期从程序提供者处同步获取用于修复程序漏洞的累计更新数据;从累计更新数据中提取包含一个或多个更新补丁的全平台扫描库,对全平台扫描库按照系统平台进行拆分,得到各平台的扫描库;将累计更新数据中的更新文件发布到文件服务器,以及通过指定通道发布各平台的扫描库。此外,数据发布服务器在同步累计更新数据时,可以按照指定时间周期从程序提供者处同步获取用于修复程序漏洞的累计更新数据的描述信息,其中,描述信息中包含下载累计更新数据的下载地址;进而根据描述信息中的下载地址下载得到累计更新数据。

上文步骤s104中利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,本发明实施例提供了一种可选的方案,在该方案中,可以利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集,进而从扫描结果集中选取待安装的补丁。

在可选的实施例中,可以枚举加载的扫描库中所有的补丁,得到更新列表,随后遍历更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到扫描结果集中;若是,则继续从更新列表中选取下一个补丁,判断下一个补丁是否已经安装在本地系统上,以此类推。

在可选的实施例中,在遍历更新列表,判断各补丁是否已经安装在本地系统上之前,还可以判断各补丁的父依赖是否检测通过,若是,则判断各补丁是否已经安装在本地系统上;若否,则继续从更新列表中选取下一个补丁,判断下一个补丁的父依赖是否检测通过,以此类推。

在本发明的可选实施例中,文件服务器可以包括多个cdn(contentdeliverynetwork,内容分发网络)结点和kv服务器。多个cdn结点中的各cdn结点适于同步各补丁对应的更新文件,kv服务器适于获取更新文件的标识和更新文件所在各cdn结点的地址信息,并建立更新文件的包含标识和地址信息的索引。这里的索引可以是key-value的形式,索引中的标识可以作为key,地址信息可以作为value。在可选的实施例中,索引中还可以包括更新文件的摘要信息、大小、发布时间、校验信息等索引信息,这些索引信息均可以作为value。

在可选的实施例中,在各cdn结点同步更新文件时,可以是由数据发布服务器将更新文件上传到cdn发布服务器并同步到各cdn结点。

在发明的可选实施例中,获取的扫描库中记录有各补丁对应的更新文件的标识,上文步骤s104中确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,本发明实施例提供了一种可选的方案,即,根据扫描库中记录的各补丁对应的更新文件的标识,确定待安装的补丁对应的备选更新文件的标识;根据备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件,若否,则将该备选更新文件的标识写入差量文件清单中,并将差量文件清单中文件的标识作为多个更新文件的标识;若是,则将本地系统上的该备选更新文件复制到临时安装目录。这里的备选更新文件可以认为是待安装的补丁对应的所有更新文件,多个更新文件是差量更新文件。

在发明的可选实施例中,各cdn结点还同步有各补丁对应的更新包,更新包中包含多个更新文件的标识,kv服务器还建立有更新包的标识和地址信息的索引。并且,扫描库中记录有各补丁对应的更新包的标识,上文步骤s104中确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,本发明实施例还提供了一种可选的方案,在该方案中,可以根据扫描库中记录的各补丁对应的更新包的标识,确定待安装的补丁对应的目标更新包的标识;进而利用目标更新包的标识从kv服务器处获取目标更新包的地址信息;随后利用目标更新包的地址信息从相应的cdn结点处下载得到目标更新包;之后解压目标更新包确定多个更新文件的标识。

进一步地,解压目标更新包确定多个更新文件的标识,本发明实施例提供了一种可选的方案,即,解压目标更新包得到备选更新文件的标识,进而根据备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件,若否,则将该备选更新文件的标识写入差量文件清单中,并将差量文件清单中文件的标识作为多个更新文件的标识;若是,则将本地系统上的该备选更新文件复制到临时安装目录。

在步骤s104确定多个更新文件的标识后,步骤s106利用多个更新文件的标识从文件服务器处获取多个更新文件,具体地,利用多个更新文件的标识从kv服务器处获取多个更新文件的地址信息,进而利用多个更新文件的地址信息从相应的cdn结点处下载得到多个更新文件。接下来,将下载得到的多个更新文件复制到临时安装目录,并安装临时安装目录中的文件,以对本地漏洞进行修复。也就是说,将多个更新文件与本地系统上已经存在的文件进行合并,进而对本地漏洞进行修复。

在可选的实施例中,为了保证多个更新文件的有效性,还可以对多个更新文件进行信息校验,具体地,可以利用多个更新文件的标识,从kv服务器处获取多个更新文件的包含更新文件的校验信息的索引信息,进而利用校验信息对下载得到多个更新文件进行校验,在校验通过后,将多个更新文件复制到临时安装目录。

以上介绍了图1所示的实施例中各个环节的多种实现方式,下面以一具体应用实例来介绍本发明实施例提供的漏洞修复方法,该方法可以应用在各个用户终端的客户端上。

以程序提供者为微软为例,如前文介绍,在win10中,微软引入了新的windows更新发布机制,即不再使用过去的分散独立安装包的形式,而是改用每月一个大累计更新包的形式。本发明实施例针对各个用户终端提供相应的更新文件,从而来节省数据流量,提高漏洞修复的效率。

首先,搭建一台标准wsus(windowsserverupdateservices,windows服务器更新服务)服务器,它包含一个标准wsus服务以及一系列自实现的数据发布工具。

一方面,wsus服务负责定期地从微软云服务器同步最新的更新数据库,更新数据库里面会包含重要的描述信息,主要有全平台扫描库、所有补丁的快速体验包url(uniformresourcelocator,统一资源定位符)、所有补丁的完整包url及更新的psf文件url,等等。

另一方面,数据发布工具负责根据上述更新数据库中的描述信息,将累计更新数据(如全平台扫描库、补丁的快速体验包、补丁的完整包、各补丁的psf文件等)下载到wsus服务器上。接着,从累计更新数据中提取包含一个或多个更新补丁的全平台扫描库,对全平台扫描库按照系统平台进行拆分,得到各平台的扫描库。然后,将累计更新数据中的更新文件发布到文件服务器,以及通过指定通道发布各平台的扫描库。最后,将重要数据进行备份。作为唯一的运营数据来源,一台wsus服务器就可以了,同时这台服务器的安全性也至关重要。

接下来,由文件服务器同步来自数据发布服务器发布的更新文件,这里的文件服务器是一个抽象的概念,作为数据发布的目的地,文件服务器并非单独的一台或几台服务器,而是一系列相互配合的服务器集群。文件服务器主要包含cdn结点和kv服务器两个部分。一方面,分布于全国各地的各cdn结点负责及时同步最新发布的更新文件,同时负责响应数以亿计的客户端文件下载请求。另一方面,kv服务器集群负责及时建立更新数据的索引,同时负责响应数以亿计的客户端索引请求,具体地,kv服务器获取更新文件的标识和更新文件所在各cdn结点的地址信息,并建立更新文件的包含标识和地址信息的索引。

数据发布完成后,就是发挥这些数据作用的时候了,也就是客户端从kv服务器及cdn结点请求数据并应用这些数据更新操作系统或应用程序,这个阶段可以分为扫描阶段和安装阶段两个部分。

1)扫描阶段

用户手动或后台定时器触发扫描时,客户端首先更新增量扫描库libleak2_diff.dat,请求成功后,加载通过指定通道发布的与本地系统平台匹配的目标扫描库的最新版本,然后再依据目标扫描库中规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集,从扫描结果集中选取待安装的补丁。

图2示出了客户端的一种扫描流程的示意图,如图2所示,客户端的扫描流程可以包括以下步骤s202至s230。

步骤s202,加载通过指定通道发布的与本地系统平台匹配的目标扫描库。

步骤s204,枚举目标扫描库中所有的补丁,得到更新列表。

步骤s206,判断更新列表是否遍历完毕,若否,则继续执行步骤s208;若是,则继续执行步骤s230。

步骤s208,从更新列表中取出一个补丁。

步骤s210,判断该补丁的父依赖是否检测通过,若否,则返回执行步骤s206;若是,则继续执行步骤s212。

步骤s212,枚举该补丁的所有子补丁,得到子更新列表,继续执行步骤s214。

步骤s214,判断子更新列表是否遍历完毕,若否,则继续执行步骤s216;若是,则继续执行步骤s226。

步骤s216,从子更新列表中取出一个子补丁。

步骤s218,判断该子补丁的父依赖是否检测通过,若否,则返回执行步骤s214;若是,则继续执行步骤s220。

步骤s220,判断该补丁是否已经安装在本地系统上,若是,则返回执行步骤s214;若否,则继续执行步骤s222。

步骤s222,判断该补丁是否适用,若否,则返回执行步骤s214;若是,则继续执行步骤s224。

步骤s224,添加该子补丁到子补丁扫描结果集。

步骤s226,判断子补丁扫描结果集是否为空,若是,则返回执行步骤s206;若否,则继续执行步骤s228。

步骤s228,添加当前补丁到更新扫描结果集,并继续执行步骤s206。

步骤s230,得到扫描结果集。

2)安装阶段

扫描完成后,用户可以从扫描结果集中选择需要安装的补丁(即待安装的补丁),然后启动安装过程。首先,根据目标扫描库计算出快速体验包(即待安装的补丁对应的更新包)key,使用该key向kv服务器请求快速体验包的索引信息(如,快速体验包的下载url、校验信息等),当kv服务器返回快速体验包的索引信息后,从中提取出快速体验包的下载url,然后利用该url向cdn结点请求快速体验包,当cdn返回快速体验包后,利用索引信息中的摘要等校验信息对快速体验包进行校验。快速体验包校验通过后,利用快速体验包计算出所需差量更新文件的key,使用这些key向kv服务器请求差量索引信息,当kv服务器返回差量索引信息后,从中提取出差量更新文件的下载url,然后利用该url向cdn结点请求差量更新文件,当cdn结点返回差量更新文件后,利用索引信息中的摘要等校验信息对差量更新文件进行校验。所有差量更新文件都校验通过后,通过合并本地文件及差量更新文件生成完整包,最后调用指定接口对合成的完整包进行安装。

图3示出了客户端的一种安装流程的示意图,如图3所示,客户端的安装流程可以包括以下步骤s302至s330。

步骤s302,下载快速体验包。

步骤s304,将快速体验包解压到临时安装目录。

在该步骤中,临时安装目录可以是默认的,也可以是自定义的。

步骤s306,枚举所有以psf.cix.xml结尾文件,得到xml文件集合。

步骤s308,判断xml文件集合是否取完,若否,则继续执行步骤s310;若是,则继续执行步骤s324。

步骤s310,取出集合中的一个xml文件。

步骤s312,枚举该xml文件中所有files/file节点,得到文件集合。

步骤s314,判断文件集合是否取完,若是,则返回执行步骤s308;若否,则继续执行步骤s316。

步骤s316,取出集合中的一个文件。

步骤s318,判断winsxs历史版本中是否已经存在该文件,若是,则执行步骤s320;若否,则继续执行步骤s322。

步骤s320,复制该文件到临时安装目录,返回执行步骤s314。

步骤s322,将该文件相对路径写入差量文件清单中,返回执行步骤s314。

步骤s324,判断差量文件清单是否为空,若是,则继续执行步骤s326;若否,则继续执行步骤s328。

步骤s326,通过指定接口启动安装临时安装目录中的文件。

步骤s328,通过差量文件清单向自有cdn结点请求差量文件包,继续执行步骤s330。

步骤s330,差量文件包下载成功后,将其解压到临时安装目录,继续执行步骤s326。

需要说明的是,此处列举的程序提供者微软仅仅是示意性的,并不对本发明进行限制,本发明实施例可以应用在任何需要对程序(如操作系统、应用程序等)进行漏洞修复的场景。

本发明实施例提供的漏洞修复方案,其核心思想是“累计更新数据的差量发布”,即,通过使用本平台的扫描库,对用户终端的当前系统环境进行扫描,从而计算出所有需更新文件的二进制差量(binarydiffpatch,即碎片文件),然后将所需的碎片文件从服务端下载到本地,最后使用这些碎片文件和本地文件合成所需的完整包进行安装,以修复用户终端上存在的漏洞。这种差量更新发布机制能节省80%以上的下载流量,可以从根本上解决现有实现方案存在的问题。

图4示出了根据本发明一实施例的漏洞修复系统的结构示意图。如图4所示,该漏洞修复系统400(图4中未示出)可以包括:wsus服务器410、cdn结点421、kv服务器422以及客户端430。

漏洞修复系统400的工作流程可以分为数据发布阶段和客户端更新阶段,下面将分别进行详细介绍。

首先介绍数据发布阶段。数据发布阶段,简单说就是当微软有数据更新时,漏洞修复系统及时将这些新数据同步过来并加以处理,然后以自己的方式发布给全网用户的过程。这是一个“推”的过程。数据发布阶段又可以分为同步更新数据、处理更新数据、发布更新数据、数据备份阶段。

(1)同步更新数据

为实现及时获取微软累计更新数据的需求,需要搭建一台标准wsus服务器410,wsus服务器410定期(如每30分钟一次等)地从微软云服务器同步获取用于修复系统程序漏洞的累计更新数据的描述信息,其中,累计更新数据包括全平台扫描库、补丁的快速体验包、补丁的完整包、各补丁的psf文件等,描述信息中包含下载累计更新数据的下载地址。

(2)处理更新数据

wsus服务器410根据描述信息中的下载地址下载得到累计更新数据。接着,从累计更新数据中提取包含一个或多个更新补丁的全平台扫描库,对全平台扫描库按照系统平台进行拆分,得到各平台的扫描库。

在对全平台扫描库进行拆分时,可以调用wsusutil命令从累计更新数据中提取包含一个或多个更新补丁的全平台扫描库,随后调用updatemake命令根据各系统平台的标识从全平台扫描库中导出各平台的补丁的更新列表,之后调用wsusscan命令根据全平台扫描库和更新列表生成各平台的扫描库。这里的各系统平台的标识可以如win7、win8.1、win10、office等,本发明不限于此。

(3)发布更新数据

数据准备好后,就可以开始发布数据了。wsus服务器410将累计更新数据中的更新文件发布到cdn结点421。之后,计算这些更新文件的key及索引信息(如更新文件的摘要信息、大小及发布到cdn上用于客户端430下载的url)推送到kv服务器422群集建立索引。然后,对新的更新文件中的pe文件进行加白。最后通过指定通道发布各平台扫描库。

(4)数据备份阶段

发布完成后,需要对重要的数据进行备份,这里主要需要备份已经计算完成的索引信息及各平台的扫描库,而且必须采用异地备份策略,备份于其它服务器。

其次为客户端更新阶段。数据发布完成后,就是发挥这些数据作用的时候了,也就是客户端从kv服务器及cdn结点请求数据并应用这些数据更新操作系统或应用程序,这个阶段可以分为扫描阶段和安装阶段两个部分,可以参见前文介绍,此处不再赘述。

需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。

基于上文各个实施例提供的漏洞修复方法,基于同一发明构思,本发明实施例还提供了一种漏洞修复装置。

图5示出了根据本发明一实施例的漏洞修复装置的结构示意图。如图5所示,该装置至少可以包括加载模块510、确定模块520以及漏洞修复模块530。

现介绍本发明实施例的漏洞修复装置的各组成或器件的功能以及各部分间的连接关系:

加载模块510,适于加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

确定模块520,与加载模块510相耦合,适于利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;

漏洞修复模块530,与确定模块520相耦合,适于利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,进而利用所述多个更新文件对本地漏洞进行修复。

在本发明一实施例中,所述加载模块510还适于:

获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

加载获取的所述扫描库。

在本发明一实施例中,所述文件服务器包括多个内容分发网络cdn结点和kv服务器,各cdn结点同步有各补丁对应的更新文件;所述kv服务器建立有更新文件的标识和地址信息的索引。

在本发明一实施例中,所述确定模块520还适于:

根据所述扫描库中记录的各补丁对应的更新文件的标识,确定所述待安装的补丁对应的备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

在本发明一实施例中,各cdn结点还同步有各补丁对应的更新包,所述更新包中包含多个更新文件的标识,所述kv服务器还建立有更新包的标识和地址信息的索引。

在本发明一实施例中,所述确定模块520还适于:

根据所述扫描库中记录的各补丁对应的更新包的标识,确定所述待安装的补丁对应的目标更新包的标识;

利用所述目标更新包的标识从所述kv服务器处获取所述目标更新包的地址信息;

利用所述目标更新包的地址信息从相应的cdn结点处下载得到所述目标更新包;

解压所述目标更新包确定所述多个更新文件的标识。

在本发明一实施例中,所述确定模块520还适于:

解压所述目标更新包得到备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

在本发明一实施例中,所述漏洞修复模块530还适于:

利用所述多个更新文件的标识从所述kv服务器处获取所述多个更新文件的地址信息;

利用所述多个更新文件的地址信息从相应的cdn结点处下载得到所述多个更新文件。

在本发明一实施例中,所述漏洞修复模块530还适于:

将下载得到的所述多个更新文件复制到所述临时安装目录;

安装所述临时安装目录中的文件,以对本地漏洞进行修复。

在本发明一实施例中,所述索引中还包括下列至少之一的索引信息:

更新文件的摘要信息、大小、发布时间、校验信息。

在本发明一实施例中,所述漏洞修复模块530还适于:

利用所述多个更新文件的标识,从所述kv服务器处获取所述多个更新文件的包含更新文件的校验信息的索引信息;

利用所述校验信息对下载得到所述多个更新文件进行校验,在校验通过后,将所述多个更新文件复制到所述临时安装目录。

在本发明一实施例中,所述确定模块520还适于:

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集;

从所述扫描结果集中选取待安装的补丁。

在本发明一实施例中,所述确定模块520还适于:

枚举加载的所述扫描库中所有的补丁,得到更新列表;

遍历所述更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到所述扫描结果集中。

根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:

在本发明实施例中,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;进而利用加载的扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;之后利用多个更新文件的标识从文件服务器处获取多个更新文件,进而利用多个更新文件对本地漏洞进行修复。由此可见,本发明实施例在进行漏洞修复时直接加载与自身系统平台匹配的扫描库,可以提高扫描效率,并提升漏洞修复的有效性。并且,本发明实施例无需从程序提供者处获取并处理用于修复程序漏洞的累计更新数据,而是直接从发布至的文件服务器处获取更新文件,能够提高获取更新文件的效率,从而提高漏洞修复的效率。另外,由于累计更新包体积比较大,本发明实施例从文件服务器处获取待安装的补丁对应的、且本地系统中未存在的多个更新文件,相比于现有技术中获取包含了大而全的更新信息的累计更新数据,本发明实施例能够节省数据流量,进一步提高漏洞修复的效率。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的漏洞修复装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

根据本发明的一方面,提供了a1、一种漏洞修复方法,包括:

加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;

利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,进而利用所述多个更新文件对本地漏洞进行修复。

a2、根据a1所述的方法,其中,加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库,包括:

获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

加载获取的所述扫描库。

a3、根据a1或a2所述的方法,其中,所述文件服务器包括多个内容分发网络cdn结点和kv服务器,各cdn结点同步有各补丁对应的更新文件;所述kv服务器建立有更新文件的标识和地址信息的索引。

a4、根据a3所述的方法,其中,所述扫描库中记录有各补丁对应的更新文件的标识,确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,包括:

根据所述扫描库中记录的各补丁对应的更新文件的标识,确定所述待安装的补丁对应的备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

a5、根据a3所述的方法,其中,各cdn结点还同步有各补丁对应的更新包,所述更新包中包含多个更新文件的标识,所述kv服务器还建立有更新包的标识和地址信息的索引。

a6、根据a5所述的方法,其中,所述扫描库中记录有各补丁对应的更新包的标识,确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识,包括:

根据所述扫描库中记录的各补丁对应的更新包的标识,确定所述待安装的补丁对应的目标更新包的标识;

利用所述目标更新包的标识从所述kv服务器处获取所述目标更新包的地址信息;

利用所述目标更新包的地址信息从相应的cdn结点处下载得到所述目标更新包;

解压所述目标更新包确定所述多个更新文件的标识。

a7、根据a6所述的方法,其中,解压所述目标更新包确定所述多个更新文件的标识,包括:

解压所述目标更新包得到备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

a8、根据a3-a7中任一项所述的方法,其中,利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,包括:

利用所述多个更新文件的标识从所述kv服务器处获取所述多个更新文件的地址信息;

利用所述多个更新文件的地址信息从相应的cdn结点处下载得到所述多个更新文件。

a9、根据a8所述的方法,其中,利用所述多个更新文件对本地漏洞进行修复,包括:

将下载得到的所述多个更新文件复制到所述临时安装目录;

安装所述临时安装目录中的文件,以对本地漏洞进行修复。

a10、根据a9所述的方法,其中,所述索引中还包括下列至少之一的索引信息:

更新文件的摘要信息、大小、发布时间、校验信息。

a11、根据a10所述的方法,其中,将下载得到的所述多个更新文件复制到所述临时安装目录,包括:

利用所述多个更新文件的标识,从所述kv服务器处获取所述多个更新文件的包含更新文件的校验信息的索引信息;

利用所述校验信息对下载得到所述多个更新文件进行校验,在校验通过后,将所述多个更新文件复制到所述临时安装目录。

a12、根据a1-a11中任一项所述的方法,其中,利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,包括:

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集;

从所述扫描结果集中选取待安装的补丁。

a13、根据a12所述的方法,其中,利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集,包括:

枚举加载的所述扫描库中所有的补丁,得到更新列表;

遍历所述更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到所述扫描结果集中。

根据本发明的另一方面,还提供了b14、一种漏洞修复装置,包括:

加载模块,适于加载与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

确定模块,适于利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到待安装的补丁,并确定所述待安装的补丁对应的、且本地系统中未存在的多个更新文件的标识;

漏洞修复模块,适于利用所述多个更新文件的标识从文件服务器处获取所述多个更新文件,进而利用所述多个更新文件对本地漏洞进行修复。

b15、根据b14所述的装置,其中,所述加载模块还适于:

获取本地系统的扫描库以及外部的数据发布服务器通过指定通道下发的与本地系统平台匹配的包含一个或多个更新补丁的扫描库;

加载获取的所述扫描库。

b16、根据b14或b15所述的装置,其中,所述文件服务器包括多个内容分发网络cdn结点和kv服务器,各cdn结点同步有各补丁对应的更新文件;所述kv服务器建立有更新文件的标识和地址信息的索引。

b17、根据b16所述的装置,其中,所述确定模块还适于:

根据所述扫描库中记录的各补丁对应的更新文件的标识,确定所述待安装的补丁对应的备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

b18、根据b16所述的装置,其中,各cdn结点还同步有各补丁对应的更新包,所述更新包中包含多个更新文件的标识,所述kv服务器还建立有更新包的标识和地址信息的索引。

b19、根据b18所述的装置,其中,所述确定模块还适于:

根据所述扫描库中记录的各补丁对应的更新包的标识,确定所述待安装的补丁对应的目标更新包的标识;

利用所述目标更新包的标识从所述kv服务器处获取所述目标更新包的地址信息;

利用所述目标更新包的地址信息从相应的cdn结点处下载得到所述目标更新包;

解压所述目标更新包确定所述多个更新文件的标识。

b20、根据b19所述的装置,其中,所述确定模块还适于:

解压所述目标更新包得到备选更新文件的标识;

根据所述备选更新文件的标识,判断本地系统上是否已经存在该备选更新文件;

若否,则将该备选更新文件的标识写入差量文件清单中,并将所述差量文件清单中文件的标识作为所述多个更新文件的标识;

若是,则将本地系统上的该备选更新文件复制到临时安装目录。

b21、根据b16-b20中任一项所述的装置,其中,所述漏洞修复模块还适于:

利用所述多个更新文件的标识从所述kv服务器处获取所述多个更新文件的地址信息;

利用所述多个更新文件的地址信息从相应的cdn结点处下载得到所述多个更新文件。

b22、根据b21所述的装置,其中,所述漏洞修复模块还适于:

将下载得到的所述多个更新文件复制到所述临时安装目录;

安装所述临时安装目录中的文件,以对本地漏洞进行修复。

b23、根据b22所述的装置,其中,所述索引中还包括下列至少之一的索引信息:

更新文件的摘要信息、大小、发布时间、校验信息。

b24、根据b23所述的装置,其中,所述漏洞修复模块还适于:

利用所述多个更新文件的标识,从所述kv服务器处获取所述多个更新文件的包含更新文件的校验信息的索引信息;

利用所述校验信息对下载得到所述多个更新文件进行校验,在校验通过后,将所述多个更新文件复制到所述临时安装目录。

b25、根据b14-b24中任一项所述的装置,其中,所述确定模块还适于:

利用加载的所述扫描库按照扫描规则对本地漏洞进行扫描,得到本地系统上未安装的补丁的扫描结果集;

从所述扫描结果集中选取待安装的补丁。

b26、根据b24所述的装置,其中,所述确定模块还适于:

枚举加载的所述扫描库中所有的补丁,得到更新列表;

遍历所述更新列表,判断各补丁是否已经安装在本地系统上,若否,则将该补丁添加到所述扫描结果集中。

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