1.本发明涉及计算机技术领域,尤其涉及一种漏洞分析方法、装置及电子设备。
背景技术:
2.嵌入式软件是嵌入在硬件中的操作系统和开发工具软件,其通常是包括许多软件在内的。在这些软件中,通常会涉及大量的开源软件。当嵌入式软件作为正式发布商业软件时,需要对商业软件中的漏洞产生的影响进行分析。在分析人员对正式发布的商业软件进行分析时,由于漏洞数量大、漏洞场景复杂,或是分析人员对商业软件中包含的开源软件的代码不熟悉,这些都会增加分析人员在分析时的时间成本。因此,如何提高漏洞分析的效率成为亟需解决的技术问题。
技术实现要素:
3.为了解决现有技术中存在的问题,本技术实施例提供了一种漏洞分析方法、装置、电子设备、计算机存储介质及包含计算机程序的产品,能够提高漏洞分析的效率。
4.第一方面,本技术提供一种漏洞分析方法,包括:获取目标软件中各个开源软件的漏洞信息;基于训练模型,确定漏洞信息中能够触发漏洞的函数;基于能够触发漏洞的函数在相应的开源软件源代码中所在的接口和目标软件的编译文件,判断目标软件中是否携带有该接口;输出目标软件的漏洞分析报告,漏洞分析报告指示了目标软件中是否携带有能够触发漏洞的函数。
5.这样,在通过训练模型,获取目标软件引用的开源软件的漏洞信息中,所包含的可能够触发漏洞的函数,接着获取到该函数在开源软件中所在的接口,判断该接口是否在开源软件的编译文件中,通过这样的方式来判断目标软件中是否引用到了该可能会触发漏洞的函数。这样,可以通过程序来对漏洞进行分析,可以提高漏洞分析的效率。
6.在一些可能的实现方式中,输出目标软件的漏洞分析报告,具体包括:基于接口的标识,查询接口的标识和接口所属的功能模块的标识间的映射关系,得到接口所属的功能模块的标识;分别判断功能模块的标识是否位于编译文件中;将得到的第一判断结果记录在漏洞分析报告中,输出漏洞分析报告。
7.在一些可能的实现方式中,该方法还包括:当第一功能模块对应的第一判断结果为位于编译文件中时,判断与第一功能模块关联的第一接口的标识是否位于编译文件中,第一功能模块为功能模块中的任意一个;将得到的第二判断结果记录在漏洞分析报告中。
8.这样,在目标软件引用了包含有可能会触发漏洞的函数所在的接口所对应的功能模块,此时可以在漏洞分析报告中记录该功能模块,以对分析人员进行提示。
9.在一些可能的实现方式中,该方法还包括:当第一功能模块关联的第一接口的标识位于编译文件中时,将第一接口所关联的业务记录在漏洞分析报告中。
10.这样,在判定可能会触发漏洞的函数所在的接口被目标软件引用了,那么可以将目标软件中使用到该接口的业务在漏洞报告中进行记载,以提示分析人员该漏洞造成的影
响有多大。
11.在一些可能的实现方式中,输出目标软件的漏洞分析报告,具体包括:分别判断接口的标识是否位于编译文件中;将得到的第三判断结果记录在漏洞分析报告中,输出漏洞分析报告。
12.这样,虽然目标软件引用了可能会触发漏洞的函数所在接口对应的功能模块,但是,目标软件的正常运行,并没有使用到该接口,那么该函数虽然可能会触发漏洞,但是对目标软件并无影响。这样可以使漏洞分析更加精确。
13.在一些可能的实现方式中,该方法还包括:当第二接口的标识位于编译文件中时,将第二接口所关联的业务记录在漏洞分析报告中,第二接口为接口中的任意一个。
14.在一些可能的实现方式中,目标软件为嵌入式软件。
15.在一些可能的实现方式中,该方法包括:对漏洞信息进行处理,以得到漏洞信息中包含的目标漏洞,目标漏洞包括:信息泄露类漏洞和/或争议型漏洞,争议型漏洞为至少出现一次且无法复现的漏洞;将目标漏洞记录在漏洞分析报告中。
16.这样,在漏洞分析报告中放入更全面的漏洞信息,可以使漏洞分析报告更加全面。
17.在一些可能的实现方式中,该方法还包括:对漏洞信息进行处理,以得到漏洞信息中包含的漏洞数据,漏洞数据包括:漏洞触发场景、漏洞所影响的软件的版本和漏洞的补丁信息中的至少一项;将漏洞数据记录在漏洞分析报告中。
18.第二方面,本技术提供一种漏洞分析装置,包括获取模块以及处理模块。其中,获取模块用于获取目标软件中各个开源软件的漏洞信息。处理模块用于基于训练模型,确定漏洞信息中能够触发漏洞的函数。处理模块还用于基于能够触发漏洞的函数在相应的开源软件源代码中所在的接口和目标软件的编译文件,判断目标软件中是否携带有能够触发漏洞的函数;输出目标软件的漏洞分析报告,漏洞分析报告指示了目标软件中是否携带有能够触发漏洞的函数。
19.在一些可能的实现方式中,处理模块还用于基于接口的标识,查询接口的标识和接口所属的功能模块的标识间的映射关系,得到接口所属的功能模块的标识;分别判断功能模块的标识是否位于编译文件中;将得到的第一判断结果记录在漏洞分析报告中,输出漏洞分析报告。
20.在一些可能的实现方式中,处理模块还用于当第一功能模块对应的第一判断结果为位于编译文件中时,判断与第一功能模块关联的第一接口的标识是否位于编译文件中,第一功能模块为功能模块中的任意一个;将得到的第二判断结果记录在漏洞分析报告中。
21.在一些可能的实现方式中,处理模块还用于当第一功能模块关联的第一接口的标识位于编译文件中时,将第一接口所关联的业务记录在漏洞分析报告中。
22.在一些可能的实现方式中,处理模块还用于分别判断接口的标识是否位于编译文件中;将得到的第三判断结果记录在漏洞分析报告中,输出漏洞分析报告。
23.在一些可能的实现方式中,处理模块还用于当第二接口的标识位于编译文件中时,将第二接口所关联的业务记录在漏洞分析报告中,第二接口为接口中的任意一个。
24.在一些可能的实现方式中,目标软件为嵌入式软件。
25.在一些可能的实现方式中,处理模块还用于对漏洞信息进行处理,以得到漏洞信息中包含的目标漏洞,目标漏洞包括:信息泄露类漏洞和/或争议型漏洞,争议型漏洞为至
少出现一次且无法复现的漏洞;将目标漏洞记录在漏洞分析报告中。
26.在一些可能的实现方式中,处理模块还用于对漏洞信息进行处理,以得到漏洞信息中包含的漏洞数据,漏洞数据包括:漏洞触发场景、漏洞所影响的软件的版本和漏洞的补丁信息中的至少一项;将漏洞数据记录在漏洞分析报告中。
27.第三方面,本技术提供一种计算机可读存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如第一方面任一项所述的方法。
28.第四方面,本技术提供一种电子设备,包括处理器和存储器,其中,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时,执行如第一方面任一项所述的方法。
29.第五方面,本技术提供一种包含计算机程序的产品,当计算机程序产品在处理器上运行时,使得所述处理器执行如第一方面任一项所述的方法。
30.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
31.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
32.图1是本技术实施例提供的一种嵌入式软件的示意图;
33.图2是本技术实施例提供的一种漏洞分析方法的示意图;
34.图3是本技术实施例提供的一种得到漏洞分析报告的过程示意图;
35.图4是本技术实施例提供的一种漏洞分析装置的示意图;
36.图5是本技术实施例提供的一种计算设备的示意图。
具体实施方式
37.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本文中符号“/”表示关联对象是或者的关系,例如a/b表示a或者b。
39.本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
40.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨
在以具体方式呈现相关概念。
41.在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
42.为便于对本技术实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
43.首先,对本技术所涉及的技术术语进行介绍:
44.1.嵌入式软件,是指在执行独立功能的专用计算机系统中嵌入的系统软件和应用软件。在嵌入式软件中,通常可以引用多个开源软件。
45.2.漏洞,是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
46.3.自然语言处理(natural language processing,nlp),是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。nlp可以用于文本分类、文本语义对比等方面。
47.接下来,对本技术实施例提供的技术方案进行介绍。
48.示例性的,图1示出了一种嵌入式软件的示意图。如图1中的(a)所示,嵌入式软件中可以包括系统软件、多个自己研发的自研软件,以及多个引用的开源软件。在开源软件中,每个开源软件都可以包括多个模块,每个模块可以实现不同的功能。举例来说,如图1中的(b)所示,开源软件a可以包括两个模块,分别为模块a和模块b。其中,模块a可以实现注册的功能,模块b可以实现登录的功能。在嵌入式软件引用开源软件时,可以是对开源软件的全部引用,也可以是对开源软件的部分引用。例如,如图1中的(c)所示,在嵌入式软件对开源软件a进行引用时,对开源软件a全部引用,此时的嵌入式软件可以实现模块a的注册功能,以及模块b的登录功能。又例如,如图1中的(d)所示,在嵌入式软件中,只需要实现注册功能,并不需要实现登功能,此时,嵌入式软件可以只对开源软件a所包含的模块a进行引用,而不需要对模块b进行引用。值得注意的是,在本实施例中,以模块a和模块b分别实现一个功能为例进行描述,在实际使用中,模块a和模块b可以分别实现多个功能,模块也可以理解为是多个功能的集合。
49.在一款开源软件发布之后,随着用户的不断深入使用,在开源软件中存在的漏洞会被不断的暴露出来。这些早先被发现的漏洞也会不断被开源软件的供应商发布的补丁软件修补,或在以后发布的新版软件中得以纠正。而在新版软件纠正了旧版本中具有的漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。这样,在嵌入式软件引用了具有漏洞的开源软件时,也就可能在嵌入式软件中引入了漏洞。
50.在现有的漏洞发布网站中,通常都对开源软件的漏洞进行了描述。但是在嵌入式软件对开源软件引用时,可能并没有引用到具有漏洞的开源软件的模块。例如,请继续参阅图1,图1中的(b)所示的开源软件a中具有两个模块,其中模块a不具有漏洞,模块b具有漏洞,在图1中的(d)所示的嵌入式软件对开源软件a进行引用时,只引用了开源软件a的模块a。此时,开源软件a的漏洞就不会对嵌入式软件造成影响。因此,在嵌入式软件发布时,需要对软件中是都引用到了具有漏洞的代码进行分析。由分析人员来一一进行分析,由于漏洞
数量大,场景复杂等问题,这大大增加了时间成本。
51.有鉴于此,本技术实施例提供一种漏洞分析方法,可以先对目标软件所引用的开源软件对应的漏洞信息进行处理,得到各个漏洞信息中所指示的会触发漏洞的函数;接着,可以判断包括该函数在开源软件中对应的接口和功能模块是否使用在了目标软件中。当目标软件使用到该函数在开源软件中对应的接口和功能模块时,就会对目标软件的安全性造成影响。将判断结果记录在漏洞分析报告中,以使开发人员可以根据漏洞分析报告对目标软件进行维护。示例性的,目标软件可以为嵌入式软件。示例性地,图2示出了一种漏洞分析方法。该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图2所示,该漏洞分析方法可以包括如下步骤:
52.s201:获取目标软件中各个开源软件的漏洞信息。
53.在本实施例中,可以在各个开源软件的9游会官网上获取到开源软件的漏洞信息,也可以是在漏洞信息发布网站上获取开源软件的漏洞信息。例如,在目标软件中所引用的开源软件是openssl软件,在openssl的9游会官网有新闻栏目,在该栏目下,会有openssl发布的漏洞信息。因此可以在openssl的9游会官网获取到该开源软件的漏洞信息。
54.s202:基于训练模型,确定漏洞信息中能够触发漏洞的函数。
55.在本实施例中,在获取到漏洞信息后,可以通过预先训练好的数据处理模型,对各个漏洞信息进行处理,得到各个漏洞信息中所指示的能够触发漏洞的函数。其中,数据处理模型可以选择神经网络模型,也可以选择自然语言处理模型。
56.举例来说,获取到了openssl软件的一个漏洞,为cve-2022-0778,在获取到该漏洞的漏洞信息后,可以使用预先训练好的自然语言处理模型对该漏洞的漏洞信息进行处理,得到高漏洞信息中所指示的可以触发漏洞的函数,为bn_mod_sqrt()函数。
57.在一些实施例中,数据处理模型为自然语言处理模型。在对自然语言处理模型进行训练时,可以先在漏洞发布网站上获取大量的漏洞信息,将这些漏洞信息作为语料文本。接着,为每个漏洞信息中的关键字贴标签,以使得自然语言处理模型可以根据标签学习这些内容。利用这个贴过标签的语料文本,训练自然语言处理模型。在自然语言处理模型经过足量的训练后,可以得到训练好的处理模型,该处理模型可以对漏洞信息进行处理,得到漏洞信息中所指示的可以触发漏洞的代码。示例性地,自然语言处理模型可以为词向量模型word2vec。
58.s203:基于能够触发漏洞的函数在相应的开源软件源代码中所在的接口和目标软件的编译文件,输出目标软件的漏洞分析报告,漏洞分析报告指示了目标软件中是否携带有能够触发漏洞的函数。其中,编译文件是一种构建脚本(例如makefile),其中存放有软件实现所需的多个接口和软件所包括的功能模块,一个功能模块与至少一个接口对应,表示该功能模块的实现用到了哪个接口。
59.在一些实施例中,基于能够触发漏洞的函数在相应的开源软件的源代码中所在的接口和目标软件的编译文件,对目标软件进行漏洞分析,以得到目标软件的漏洞分析报告,具体包括:
60.分别判断各个接口的标识是否位于编译文件中,将得到的各个第三判断结果记录在漏洞分析报告中。其中,第三判断结果用于指示能够触发漏洞的接口是否在编译文件中。
61.在本实施例中,在获取到可能触发漏洞的函数后,可以将该可能会触发漏洞的函
数作为搜索条件,对该函数所在的开源软件的源代码进行搜索,得到在源代码中该函数所在的接口。示例性的,在对开源软件的源代码进行搜索是,可以采用内容匹配的方式进行搜索,也可以是通过正则表达式的方式对源代码进行搜索,还可以是使用现有的软件对源代码进行搜索。接着,可以将该接口的接口标识作为匹配条件,与目标软件的编译文件的内容进行匹配。将匹配的结果记录在目标软件的漏洞分析报告中,匹配结果即为第三判断结果。其中,匹配的结果可以包括成功与不成功两种。匹配成功,表明在目标软件中使用到了包含有可能会触发漏洞的函数的接口,该函数可能会对目标软件造成影响。匹配不成功,表明在目标软件中没有使用到包含有可能会触发漏洞的函数的接口,也就不会使用到该可能会触发漏洞的函数,该函数也就不会对目标软件造成影响。将这些情况都记录在漏洞分析报告中。
62.举例来说,在获取到bn_mod_sqrt()函数可能会触发openssl软件的漏洞时,可以将“bn_mod_sqrt”作为搜索条件,使用doxygen工具对openssl的源代码进行搜索。经过搜索,可以得到该bn_mod_sqrt()函数所在的接口为bn_mod_sqrt()(函数名与接口明相同,表明该函数就是接口函数)。接着,使用“bn_mod_sqrt”作为匹配条件,与目标软件的编译文件中所记载的内容进行匹配。当匹配成功时,表明在目标软件中使用到了bn_mod_sqrt()函数,就可能会触发漏洞,影响目标软件的安全。当匹配不成功时,表明在目标软件中并未使用到该bn_mod_sqrt()函数,则该漏洞对目标软件不会产生影响。将这些情况都记录在漏洞分析报告中。
63.在一些实施例中,当第二接口的标识位于编译文件中时,将第二接口所关联的业务记录在漏洞分析报告中,第二接口为各个接口中的任意一个。
64.在本实施例中,当接口标识在目标软件的编译文件中匹配成功时,表示目标软件引用了该可能会触发漏洞的接口,因此对关联该接口的业务都会造成影响。可以根据接口标识,获取接口标识所在的业务,将接口所关联的业务记录在漏洞分析报告中。
65.在一些实施例中,当目标软件所引用的开源软件的模块可能不包含有触发漏洞的函数所在的接口时,还可以获取到触发漏洞的函数所在的模块,基于该模块的标识和目标软件的编译文件,对目标软件进行漏洞分析,以得到目标软件的漏洞分析报告。
66.示例性的,图3示出了一种得到漏洞分析报告的过程。如图3所示,基于各个函数在相应的开源软件的源代码中所在的接口和目标软件的编译文件,对目标软件进行漏洞分析,以得到目标软件的漏洞分析报告,具体可以包括:
67.s301:基于各个接口的标识,查询接口的标识和接口所属的功能模块的标识间的映射关系,得到各个接口所属的功能模块的标识。
68.在本实施例中,由于在开源软件的编译文件中存储有功能模块以及功能模块所包括的接口,因此,可以在获取到接口的接口标识后,将接口标识作为搜索条件,对开源软件的编译文件中的内容进行搜索,得到功能模块的标识。示例性的,标识可以为名称。
69.举例来说,开源软件openssl的编译文件中存储有功能模块bn,以及功能模块bn所包括的接口bn_mod_sqrt。在获取到可能会触发漏洞的函数bn_mod_sqrt()后,根据该函数获取到了函数所在的接口bn_mod_sqrt。此时,可以用接口的标识(名称)作为搜索条件,对openssl的编译文件中的内容进行搜索,得到功能模块的名称“bn”。
70.s302:分别判断各个功能模块的标识是否位于目标软件的编译文件中。
71.在本实施例中,在获取到功能模块的标识后,可以将功能模块的标识作为匹配条件,与目标软件的编译文件中的内容做匹配。当匹配成功时,确定功能模块的标识位于目标软件的编译文件中。当匹配不成功时,确定功能模块的标识没有位于目标软件的编译文件中。
72.s303:将得到的各个第一判断结果记录在漏洞分析报告中。
73.在本实施例中,当匹配成功时,确定功能模块的标识位于目标软件的编译文件中,表明在目标软件中引用了可能会触发漏洞的函数。此时的目标软件可能有产生漏洞的安全隐患。当匹配不成功时,确定功能模块的标识没有位于目标软件的编译文件中,表明在目标软件中没有引用可能会触发漏洞的函数。此时,虽然开源软件具有漏洞,但是该漏洞并不会对目标软件产生影响。将这些判断结果都记录在漏洞分析报告中。其中,第一判断结果用于指示第一功能模块是否位于编译文件中。此时,在漏洞分析报告中可以记录,目标软件中使用到了与可能会触发漏洞的函数所在的接口所对应的功能模块,该可能会触发漏洞的函数可能会对目标软件造成影响。
74.在一些实施例中,当第一功能模块对应的第一判断结果为位于编译文件中时,判断与第一功能模块关联的第一接口的标识是否位于编译文件中,第一功能模块为各个功能模块中的任意一个;将得到的第二判断结果记录在漏洞分析报告中。其中,第二判断结果用于指示在第一功能模块位于编译文件中的情况在,第一接口是否位于编译文件中。此时,在漏洞分析报告中可以记录,目标软件中使用到了与可能会触发漏洞的函数所在的接口所对应的功能模块,但是该可能会触发漏洞的函数不会对目标软件造成影响。
75.在本实施例中,功能模块可以由多个接口组成,虽然目标软件引用了可能会触发漏洞的功能模块,但是可能并没有使用到会触发漏洞的函数所在的接口。因此,当判断功能模块的标识位于目标软件的编译文件中(匹配成功,即功能模块对应的第一判断结果为位于编译文件中)时,可以将会触发漏洞的函数所在的接口的接口标识作为匹配条件,与目标软件的编译文件中的内容做匹配。将匹配的结果记录在漏洞分析报告中。
76.在一些实施例中,当第一功能模块关联的第一接口的标识位于目标软件的编译文件中时,将第一接口所关联的业务记录在漏洞分析报告中。
77.在本实施例中,当接口标识在目标软件的编译文件中匹配成功时,表示目标软件引用了该可能会触发漏洞的接口,因此对关联该接口的业务都会造成影响。可以根据接口标识,获取接口标识所在的业务,将接口所关联的业务记录在漏洞分析报告中。
78.在一些实施例中,在前述步骤s202执行时,在对开源软件的漏洞信息进行处理时,获取到漏洞信息中并不包括的触发漏洞的代码,但是包括漏洞在什么情况下会被触发。例如,漏洞cve-2021-20322,在漏洞信息中并不包含有触发漏洞的代码,但是在该漏洞的漏洞信息中有描述,为“发现linux内核功能中接收到的控制报文协议(internet control message protocol,icmp)错误(需要icmp碎片和icmp重定向)处理过程中存在缺陷,允许快速扫描打开的用户数据报协议(user datagram protocol,udp)端口。此漏洞允许非路径远程用户有效绕过源端口udp随机化”。也就是说,在该漏洞信息中并没有指出具体的触发漏洞的代码,但是指出了通过icmp错误报文可能会截取udp端口的信息。换而言之,此漏洞是可能会对某些信息造成泄漏的漏洞,因此可以将该漏洞类型称为信息泄露类型漏洞。此时,可以将信息泄露漏洞的泄露的方法记录在漏洞分析报告中。
79.在一些实施例中,在前述步骤s202执行时,在对开源软件的漏洞信息进行处理时,还可以得到漏洞信息中所包括的漏洞影响子软件哪个版本的信息。例如,在openssl软件的漏洞cve-2022-0778的漏洞信息中有描述,为“漏洞影响的版本1.0.2、1.1.1、3.0”,则说明该漏洞影响openssl软件的版本为openssl1.0.2、openssl1.1.1、openssl3.0这三个版本。将这个漏洞影响子软件哪个版本的信息记录在漏洞分析报告中。
80.在一些实施例中,在前述步骤s202执行时,在对开源软件的漏洞信息进行处理时,还可以得到漏洞信息中所包括的漏洞补丁相关信息。例如,在在openssl软件的漏洞cve-2022-1473的漏洞信息中有描述,为“cve-2022-1473openssl拒绝服务漏洞:openssl3.0用户应升级到3.0.3”。即,官方已经发布具有补丁的软件版本,在该版本中,已经解决了该漏洞的问题。可以将漏洞信息中的补丁相关信息记录在漏洞分析报告中。
81.在一些实施例中,在前述步骤s202执行时,在对开源软件的漏洞信息进行处理时,还可以得到漏洞信息中所包括的漏洞在什么场景下会触发。例如,在openssl软件的漏洞cve-2022-1473的漏洞信息中有描述,为“此功能在解码证书或密钥时使用,如果一个长期存在的进程定期解码证书或密钥,它的内存使用量将无限扩大,并且该进程可能会被操作系统终止,从而导致拒绝服务”,表明在一个定期解码证书或密钥的进程,在内存使用过大被操作系统终止的场景下,会触发漏洞。将这个漏洞可能被触发的场景记录在漏洞分析报告中。
82.在一些实施例中,在前述步骤s202执行时,在对开源软件的漏洞信息进行处理时,还可以得到该漏洞是一个有争议的漏洞。有争议的漏洞是指,该漏洞无法通过场景复现的方式,再次产生该漏洞,使得不同的人对该漏洞的观点不同。对于有争议的漏洞,暂时没有j9九游会真人的解决方案。同样可以将该漏洞记录在漏洞分析报告中。
83.由上述各实施例可知,本技术中通过对目标软件所引用的开源软件对应的漏洞信息进行处理,得到各个漏洞信息中所指示的会触发漏洞的函数;接着,可以判断包括该函数在开源软件中对应的接口和功能模块是否使用在了目标软件中。当目标软件使用到该函数在开源软件中对应的接口和功能模块时,就会对目标软件的安全性造成影响。将判断结果记录在漏洞分析报告中,以使开发人员可以根据漏洞分析报告对目标软件进行维护。这样,在漏洞分析时,大大减少了分析人员需要做的工作,可以提高漏洞分析效率。
84.可以理解的是,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。此外,在一些可能的实现方式中,上述实施例中的各步骤可以根据实际情况选择性执行,可以部分执行,也可以全部执行,此处不做限定。本技术的任意实施例的任意特征的全部或部分在不矛盾的前提下,可以自由地、任何地组合。组合后的技术方案也在本技术的范围之内。
85.基于上述实施例中的方法,本技术实施例还提供一种漏洞分析装置。
86.示例性地,图4示出了一种漏洞分析装置。如图4所示,该漏洞分析装置400可以包括获取模块410以及处理模块420。
87.其中,获取模块410用于获取目标软件中各个开源软件的漏洞信息。处理模块420用于基于训练模型,确定漏洞信息中能够触发漏洞的函数。处理模块420还可以用于,基于能够触发漏洞的函数,在相应的开源软件源代码中所在的接口和目标软件的编译文件,判
memory),例如只读存储器(read-only memory,rom),快闪存储器,机械硬盘(hard disk drive,hdd)或固态硬盘(solid state drive,ssd)。
101.存储器506中存储有可执行的程序代码,处理器504执行该可执行的程序代码以分别实现前述获取模块410和处理模块420的功能,从而实现上述实施例中方法的全部或部分步骤。也即,存储器506上存有用于执行上述实施例方法中全部或部分步骤的指令。
102.或者,存储器506中存储有可执行的代码,处理器504执行该可执行的代码以分别实现前述提升内存安全的装置400的功能,从而实现上述实施例方法中全部或部分步骤。也即,存储器506上存有用于执行上述实施例方法中全部或部分步骤的指令。
103.通信接口503使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备500与其他设备或通信网络之间的通信。
104.基于上述实施例中的方法,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行上述实施例中的方法。
105.基于上述实施例中的方法,本技术实施例提供了一种计算机程序产品,当计算机程序产品在处理器上运行时,使得处理器执行上述实施例中的方法。
106.可以理解的是,本技术的实施例中的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
107.本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。
108.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬
盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
109.可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。