用于选择和发现有漏洞软件包的系统和方法技术方案

技术编号:39005644 阅读:6 留言:0更新日期:2023-10-07 10:37
一种用于发现软件包中的漏洞的系统和方法。方法包括:标识多个软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在至少一个潜在有漏洞软件包中的每一个的数据中来标识多个软件包中的至少一个漏洞,其中,基于潜在有漏洞软件包的版本标识符的可用性来选择用于至少一个潜在有漏洞软件包中的每一个的至少一个漏洞标识规则。每一个的至少一个漏洞标识规则。每一个的至少一个漏洞标识规则。

【技术实现步骤摘要】
【国外来华专利技术】用于选择和发现有漏洞软件包的系统和方法
[0001]相关申请的交叉引用
[0002]本申请要求2021年1月11日提交的第17/145,893号美国专利申请的权益,其内容通过引用结合在本文中。


[0003]本公开一般涉及检测软件漏洞,并且更具体地涉及在软件漏洞检测中增加漏洞覆盖。

技术介绍

[0004]随着基于软件的技术日益主导日常生活,检测和修复软件漏洞对于系统的普通功能来说变得至关重要。一些现有解决方案利用了被训练来审阅软件和使用这样的软件的过程的人类操作员来标识潜在的漏洞。这些过程会涉及对代码的人工审阅(例如,通过人工爬行软件库以搜索有漏洞软件包)或用户所报告的问题。然而,与自动化解决方案相比,这些过程的效率非常低,易受人为错误的影响,并且经常需要主观判断来确定是否存在产生矛盾结果的漏洞。
[0005]存在涉及扫描软件漏洞的一些自动化解决方案。然而,这些解决方案在准确标识软件漏洞时会面临重大挑战。具体讲,尽管一些自动化解决方案可以检查已知的问题,但是这些解决方案却难以标识先前未知的软件、现有软件的未知版本、或者缺少某种形式的标准化格式化的软件。对于操作系统的漏洞来说,大多数主流厂商可以提供可由现有解决方案利用的一致且标准的订阅源,但其他软件提供商可能就不能提供一致且标准的订阅源。这对于开源软件包或不具有单个真值源的任何其它软件来说尤其成问题。
[0006]因此,提供一种克服上述挑战的解决方案将是有利的。
[0007]专利技术概述
[0008]下面是本公开的几个示例性实施例的概述。提供本概述是为了方便读者对这些实施例的基本理解,而不是完全限定本公开的广度。本概述不是对所有预期实施例的广泛综述,并且既不旨在标识所有实施例的关键或重要要素,也不旨在描绘任何或所有方面的范围。其唯一目的是以简化形式呈上一个或多个实施例的一些专利技术构思,作为稍后呈上的更详细描述的铺垫。为了方便起见,术语“一些实施例”或“某些实施例”在本文中都可用于指本公开的单个实施例或多个实施例。
[0009]本文公开的某些实施例包括了用于发现软件包中的漏洞的方法。该方法包括:标识多个软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在至少一个潜在有漏洞软件包的每一个的数据中来标识多个软件包中的至少一个漏洞,其中,基于潜在有漏洞软件包的版本标识符的可用性来选择用于至少一个潜在有漏洞软件包的每一个中的至少一个漏洞标识规则。
[0010]本文公开的某些实施例还包括非暂时性计算机可读介质,其上存储有可使处理电
路执行一个过程的指令,该过程包括:标识多个软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在至少一个潜在有漏洞软件包的每一个的数据中来标识多个软件包中的至少一个漏洞,其中,基于潜在有漏洞软件包的版本标识符的可用性来选择用于至少一个潜在有漏洞软件包中的每一个的至少一个漏洞标识规则。
[0011]本文公开的某些实施例还包括了用于发现软件包中的漏洞的系统。该系统包括:处理电路;以及存储器,该存储器包含指令,当由处理电路执行时,该指令将系统配置成:标识多个软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在至少一个潜在有漏洞软件包的每一个的数据中来标识多个软件包中的至少一个漏洞,其中,基于潜在有漏洞软件包的版本标识符的可用性来选择用于至少一个潜在有漏洞软件包中的每一个的至少一个漏洞标识规则。
附图说明
[0012]在说明书结尾处的权利要求中特别指出并清楚地要求保护本文公开的主题。从下面结合附图的详细描述中,所公开的实施例的前述和其它目的、特征和优点将变得显而易见。
[0013]图1是用于描述各种公开的实施例的一个网络图;
[0014]图2是示出根据一个实施例的用于发现软件包中的未知软件漏洞的方法的一个流程图;
[0015]图3是示出根据一个实施例的用于标识潜在有漏洞的源的方法的一个流程图;
[0016]图4是示出根据一个实施例的用于将软件包映射到标准化漏洞标识符的方法的一个示例性流程图;
[0017]图5是根据一个实施例的漏洞检测器的一个示意图。
具体实施方式
[0018]重要的是请注意,本文公开的实施例仅是本文创新教导的许多有利使用的示例。通常,在本申请的说明书中所做的陈述不一定局限于各种要求保护的实施例中的任何一个。此外,一些陈述可以应用于一些专利技术特征而不是其它特征。通常,除非另外指出,否则单数的要素也可以是复数的,反之亦然,而不失一般性。在附图中,相同的附图标记在若干视图中表示相同的部件。
[0019]各种公开的实施例包括了用于检测软件漏洞的方法和系统。可以选择要分析的一个或多个储存库。每个储存库存储软件包。基于与软件包相关的数据,从所选储存库中的软件包的改变中选择一个或多个潜在有漏洞的源以供分析。使用可以基于诸如但不限于使用频率、创建日期、软件包是否被认为是开放源、其组合等因素的规则来标识潜在有漏洞的源。
[0020]在一个实施例中,标识潜在有漏洞的源可以包括查询和解析改变指令、跟踪特定开发者、分析代码评论、分析发布注释以及基于版本标识符推断潜在漏洞中的任何或全部。每个改变指令是改变数据的一部分的指令,因此表示改变被完成或确认。改变指令可以包
括但不限于提交语句(在此也称为“提交”)。
[0021]基于这些步骤的结果,标识对作为潜在有漏洞的源的软件包的安全相关的改变。可以为安全相关的改变创建唯一标识符。唯一标识符可被用于使改变匿名化,同时可以查找稍后导致漏洞的特定改变。这种改变的匿名化对于保存专有信息可能是重要的。
[0022]选择漏洞标识规则并将其应用在每个安全相关改变的数据中,以便标识由这些改变引起的任何漏洞,并因此标识由这些改变导致的有漏洞软件包。可以基于存储软件包的软件储存库的版本标识符的可用性来选择漏洞标识规则。例如,当软件储存库具有一些包的版本时,可以选择第一规则,当储存库具有一些发布的版本但不具有一些包的版本时,可以选择第二规则,并且,当储存库不具有软件包的任何版本标识符时,可以选择第三规则。不同的规则可以定义软件包被认定有漏洞的情况。因此,应用这样的漏洞标识规则可以客观地确定给定软件包是否有漏洞。
[0023]具有所标识的漏洞之一的每个软件包都可以被映射到按命名方案的已知名称的标准软件包上。这种软件包命名方案可以是但不限于公共平台枚举(CPE)。CPE是一种可用于软件漏洞的结构化命名方案。CPE采用了统一资源标识符(URI)的通用语法,并且包括形式名称格式、用于对照系统检查名称的方法、以及用于将文本和测试绑定到一个名称上的描述格式。CPE还利用了定义CPE的商定的名称列表的字典。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于发现软件包中的漏洞的方法,包括:标识多个软件包中的至少一个潜在有漏洞软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对所述至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在所述至少一个潜在有漏洞软件包的每一个的数据中来标识所述多个软件包中的至少一个漏洞,其中,基于所述潜在有漏洞软件包的版本标识符的可用性来选择用于所述至少一个潜在有漏洞软件包中的每一个的所述至少一个漏洞标识规则。2.根据权利要求1所述的方法,其中,当软件包的包版本可用时,为所述软件包选择的至少一个漏洞标识规则是第一规则,其中,所述第一规则将漏洞定义为是具有与在所述软件包的最近改变指令中指示的版本为较早版本或相同版本的包版本的软件包。3.根据权利要求2所述的方法,其中,当发布版本可用于软件包但包版本不可用于软件包时,为所述软件包选择的至少一个漏洞标识规则是第二规则,其中,所述第二规则将漏洞定义为是具有不在所述软件包的最近改变指令的一个阈值时间段内的发布版本的软件包。4.根据权利要求3所述的方法,其中,当软件包的包版本和发布版本都不可用时,为所述软件包选择的至少一个漏洞标识规则是第三规则,其中,所述第三规则将漏洞定义为是具有不在由所述软件包的包管理器指示的最近改变的一个阈值时间段内的创建时间的软件包。5.根据权利要求1所述的方法,其中,标识所述至少一个潜在有漏洞的源还包括以下中的至少一个:分析改变指令消息,跟踪至少一个预定消息,分析安全相关关键字的代码注释,分析发布日期的发布注释,以及,基于在更新版本指示符之后出现的对文件的改变来推断漏洞。6.根据权利要求1所述的方法,还包括:基于存储在多个软件包储存库的每一个中的软件包与存储在多个软件包储存库的每一个其它软件储存库中的软件包相比的相对使用量,从多个软件包储存库中选择至少一个软件包储存库,其中,多个软件包存储在所选择的至少一个软件包储存库中。7.根据权利要求6所述的方法,其中,从所述多个软件包储存库中选择所述至少一个软件包储存库还包括:分析用户数据以确定所述多个软件包储存库中的每一个的软件包使用频率,其中,所述至少一个软件包储存库中的每一个在所述多个软件包储存库中具有最高软件包使用频率。8.根据权利要求6所述的方法,其中,从所述多个软件包储存库中选择所述至少一个软件包储存库还包括:递归地爬行所述多个软件包储存库以寻找包依赖性清单;以及,针对所述多个软件包储存库中的每一个,基于取决于存储在所述软件包储存库中的每个软件包的数量,确定所述软件包储存库的相对使用量。9.根据权利要求1所述的方法,其中,所述至少一个标识的漏洞与所述多个软件包中的至少一个有漏洞软件包相关联,所述方法还包括:基于所标识的至少一个漏洞来生成依赖关系图,其中,依赖关系图指示软件包之间的多个依赖关系,其中,多个依赖关系包括对至少一个有漏洞软件包的至少一个依赖关系。
10.一种非暂时性计算机可读介质,其上存储有用于使处理电路执行一个过程的指令,所述过程包括:标识多个软件包中的至少一个潜在有漏洞软件包中的至少一个潜在有漏洞的源,其中,每个潜在有漏洞的源是对所述至少一个潜在有漏洞软件包中的一个的改变;以及,通过选择至少一个漏洞标识规则并将其应用在所述至...

【专利技术属性】
技术研发人员:L
申请(专利权)人:扭锁有限公司
类型:发明
国别省市:

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

1