1.本发明涉及代码开发技术领域,具体涉及一种代码漏洞扫描方法、系统、终端及存储介质。
背景技术:2.在互联网时代下,由于技术的更新迭代和代码的实现有着密切的关系,代码的质量安全成为我们越来越关注的方面。对于行数极多的代码,只依赖人为来检视其质量和安全,是很难保证质量的,所以我们需要借助于代码扫描工具进行初步的代码扫描,提高代码的质量和安全性。
3.基于上述问题,在现有的技术中只是对代码的分支进行了比对,并筛选出发生变更的代码分支,对更改的分支代码进行扫描,但是这种方法无法定位到问题的责任人;同时现有技术中针对漏洞进行了一些id的记录,以便于之后的查看,但是对于一些无需修复的漏洞,就需要每次都对代码进行分析来判断是否为需要修复的漏洞。这就导致代码扫描的重复性,降低了扫描效率。
技术实现要素:4.针对现有技术的上述不足,本发明提供一种代码漏洞扫描方法、系统、终端及存储介质,以解决上述技术问题。
5.第一方面,本发明提供一种代码漏洞扫描方法,包括:
6.从历史代码扫描结果中汇总历史漏洞id和相应漏洞信息,生成漏洞信息表;
7.从当前次扫描结果中提取所有漏洞id;
8.判断漏洞id在漏洞信息表中是否存在匹配历史漏洞id:
9.若是,则将所述匹配历史漏洞id的漏洞信息输出;
10.若否,则利用扫描工具对所述漏洞id对应的漏洞进行分析,获取所述漏洞id对应的漏洞信息。
11.进一步的,所述从历史代码扫描结果中汇总历史漏洞id和相应漏洞信息,包括:
12.从历次扫描结果中提取历史漏洞id和对应的漏洞解释、修复需求、严重级别和责任人信息。
13.进一步的,所述方法还包括:
14.将历次扫描结果标记扫描时间后保存至数据库;
15.根据代码更新时间判断数据库中是否存在最新版本的扫描结果:
16.若否,则调用扫描工具对更新后的代码进行扫描。
17.进一步的,所述方法还包括:
18.将当前次扫描获取的漏洞id对应的漏洞信息保存至漏洞信息表。
19.第二方面,本发明提供一种代码漏洞扫描系统,包括:
20.历史漏洞汇总单元,配置用于从历史代码扫描结果中汇总历史漏洞id和相应漏洞
信息,生成漏洞信息表;
21.id提取单元,配置用于从当前次扫描结果中提取所有漏洞id;
22.id匹配单元,配置用于判断漏洞id在漏洞信息表中是否存在匹配历史漏洞id;
23.历史漏洞输出单元,配置用于若漏洞id在漏洞信息表中存在匹配历史漏洞id,则将所述匹配历史漏洞id的漏洞信息输出;
24.漏洞分析单元,配置用于若漏洞id在漏洞信息表中不存在匹配历史漏洞id,则利用扫描工具对所述漏洞id对应的漏洞进行分析,获取所述漏洞id对应的漏洞信息。
25.进一步的,所述历史漏洞汇总单元包括:
26.信息汇总模块,配置用于从历次扫描结果中提取历史漏洞id和对应的漏洞解释、修复需求、严重级别和责任人信息。
27.进一步的,所述系统还包括:
28.结果保存单元,配置用于将历次扫描结果标记扫描时间后保存至数据库;
29.时间校对单元,配置用于根据代码更新时间判断数据库中是否存在最新版本的扫描结果;
30.扫描执行单元,配置用于若不存在最新版本的扫描结果,则调用扫描工具对更新后的代码进行扫描。
31.进一步的,所述系统还包括:
32.信息保存单元,配置用于将当前次扫描获取的漏洞id对应的漏洞信息保存至漏洞信息表。
33.第三方面,提供一种终端,包括:
34.处理器、存储器,其中,
35.该存储器用于存储计算机程序,
36.该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
37.第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
38.本发明的有益效果在于,
39.本发明提供的代码漏洞扫描方法、系统、终端及存储介质,通过对历史扫描结果中的漏洞信息进行汇总,并生成漏洞id对扫描出的漏洞进行标识,在后续扫描过程中,对已有漏洞id的漏洞无需再进行分析,只需调取相应的历史漏洞信息即可。因此本发明降低了代码扫描的工作量,提高了扫描效率,节省了检视时间。
40.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1是本发明一个实施例的方法的示意性流程图。
43.图2是本发明一个实施例的系统的示意性框图。
44.图3为本发明实施例提供的一种终端的结构示意图。
具体实施方式
45.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
46.图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种代码漏洞扫描系统。
47.如图1所示,该方法包括:
48.步骤110,从历史代码扫描结果中汇总历史漏洞id和相应漏洞信息,生成漏洞信息表;
49.步骤120,从当前次扫描结果中提取所有漏洞id;
50.步骤130,判断漏洞id在漏洞信息表中是否存在匹配历史漏洞id:
51.步骤140,若是,则将所述匹配历史漏洞id的漏洞信息输出;
52.步骤150,若否,则利用扫描工具对所述漏洞id对应的漏洞进行分析,获取所述漏洞id对应的漏洞信息。
53.具体的,所述代码漏洞扫描方法包括:
54.s1、从历史代码扫描结果中汇总历史漏洞id和相应漏洞信息,生成漏洞信息表。
55.首先,根据安装配置文件自动识别系统是否符合扫描软件安装的配置要求,若符合则安装软件包到指定目录下。
56.从首次扫描开始,将每次扫描结果中发现的漏洞分配id,每个漏洞的id是唯一的。对首次扫描结果中的漏洞分配id并分析漏洞信息,漏洞信息包括漏洞解释、修复需求(是否需要修复)、严重级别和责任人信息。后续进行扫描时如发现新增漏洞,则仍然分配id并分析漏洞信息。将所有具有漏洞id的漏洞及相关漏洞信息汇总至漏洞信息表。
57.s2、从当前次扫描结果中提取所有漏洞id。
58.对gitlab代码仓库中需要扫描的代码日期和代码扫描的结果(若有)日期进行标识,若扫描结果日期在代码日期之前,则说明没有最新版本的扫描结果,需要对代码进行扫描。
59.调用扫描工具对代码进行扫描,从扫描结果中提取所有漏洞id。
60.s3、判断漏洞id在漏洞信息表中是否存在匹配历史漏洞id:若是,则将所述匹配历史漏洞id的漏洞信息输出;若否,则利用扫描工具对所述漏洞id对应的漏洞进行分析,获取所述漏洞id对应的漏洞信息。
61.判断步骤s2提取的每个漏洞id是否均在漏洞信息表中存在匹配历史漏洞id,若有不存在匹配历史漏洞id的新增漏洞id,则对新增漏洞id所对应的漏洞进行分析,获取其漏洞信息。
62.对于在漏洞信息表中存在匹配历史漏洞id的漏洞id,直接将匹配历史漏洞id对应的漏洞信息输出即可。
63.汇总本次新增漏洞id的漏洞信息和具有匹配历史漏洞id的漏洞id的漏洞信息,即可得到本次扫描结果。
64.将新增漏洞id的漏洞信息保存至漏洞信息表。
65.如图2所示,该系统200包括:
66.历史漏洞汇总单元210,配置用于从历史代码扫描结果中汇总历史漏洞id和相应漏洞信息,生成漏洞信息表;
67.id提取单元220,配置用于从当前次扫描结果中提取所有漏洞id;
68.id匹配单元230,配置用于判断漏洞id在漏洞信息表中是否存在匹配历史漏洞id;
69.历史漏洞输出单元240,配置用于若漏洞id在漏洞信息表中存在匹配历史漏洞id,则将所述匹配历史漏洞id的漏洞信息输出;
70.漏洞分析单元250,配置用于若漏洞id在漏洞信息表中不存在匹配历史漏洞id,则利用扫描工具对所述漏洞id对应的漏洞进行分析,获取所述漏洞id对应的漏洞信息。
71.可选地,作为本发明一个实施例,所述历史漏洞汇总单元包括:
72.信息汇总模块,配置用于从历次扫描结果中提取历史漏洞id和对应的漏洞解释、修复需求、严重级别和责任人信息。
73.可选地,作为本发明一个实施例,所述系统还包括:
74.结果保存单元,配置用于将历次扫描结果标记扫描时间后保存至数据库;
75.时间校对单元,配置用于根据代码更新时间判断数据库中是否存在最新版本的扫描结果;
76.扫描执行单元,配置用于若不存在最新版本的扫描结果,则调用扫描工具对更新后的代码进行扫描。
77.可选地,作为本发明一个实施例,所述系统还包括:
78.信息保存单元,配置用于将当前次扫描获取的漏洞id对应的漏洞信息保存至漏洞信息表。
79.图3为本发明实施例提供的一种终端300的结构示意图,该终端300可以用于执行本发明实施例提供的代码漏洞扫描方法。
80.其中,该终端300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
81.其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。
82.处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integrated circuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗
相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(central processing unit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
83.通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
84.本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:rom)或随机存储记忆体(英文:random access memory,简称:ram)等。
85.因此,本发明通过对历史扫描结果中的漏洞信息进行汇总,并生成漏洞id对扫描出的漏洞进行标识,在后续扫描过程中,对已有漏洞id的漏洞无需再进行分析,只需调取相应的历史漏洞信息即可。因此本发明降低了代码扫描的工作量,提高了扫描效率,节省了检视时间,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
86.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
87.本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
88.在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
89.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
90.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
91.尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应
涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。