本发明实施例涉及开源软件技术领域,具体涉及一种开源软件的安全识别方法及装置。
背景技术:
开源软件具有开放、共享、自由等特性,在软件开发中扮演着越来越重要的角色,也是软件供应链的重要组成部分。随着越来越多的开源软件以直接安装或源码的形式被应用到各种系统之中,开源软件的管理问题会变得越来越复杂。开源软件中存在着大量的安全隐患,企业在享受开源软件带来的便利的同时,也在承担着巨大的安全风险。
现有技术通常是通过杀毒软件等工具对安装在操作系统中的所有软件进行一次性检测,对于某些开源软件的检测不够彻底,无法准确地识别每个开源软件是否存在安全风险。
因此,如何避免上述缺陷,能够准确识别开源软件是否存在安全风险,成为亟须解决的问题。
技术实现要素:
针对现有技术存在的问题,本发明实施例提供一种开源软件的安全识别方法及装置。
第一方面,本发明实施例提供一种开源软件的安全识别方法,所述方法包括:
获取待识别开源软件中各组件分别对应的多维度信息;
根据所有多维度信息,确定各组件分别对应的标识;
根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
第二方面,本发明实施例提供一种开源软件的安全识别装置,所述装置包括:
获取单元,用于获取待识别开源软件中各组件分别对应的多维度信息;
确定单元,用于根据所有多维度信息,确定各组件分别对应的标识;
识别单元,用于根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:
获取待识别开源软件中各组件分别对应的多维度信息;
根据所有多维度信息,确定各组件分别对应的标识;
根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如下方法:
获取待识别开源软件中各组件分别对应的多维度信息;
根据所有多维度信息,确定各组件分别对应的标识;
根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
本发明实施例提供的开源软件的安全识别方法及装置,先确定待识别开源软件中各组件分别对应的标识,再根据预设漏洞库对所有标识进行安全识别,能够准确识别开源软件是否存在安全风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例开源软件的安全识别方法流程示意图;
图2为本发明实施例开源软件的安全识别装置结构示意图;
图3为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例开源软件的安全识别方法流程示意图,如图1所示,本发明实施例提供的一种开源软件的安全识别方法,包括以下步骤:
s101:获取待识别开源软件中各组件分别对应的多维度信息。
具体的,装置获取待识别开源软件中各组件分别对应的多维度信息。装置可以理解为执行该方法的设备,不作具体限定。多维度信息可以包括源码信息、二进制信息、包管理器信息中的至少一种。进一步地,源码信息可以包括源码的文件名称、文件类型、文件大小、文件路径、文件hash等信息;二进制信息可以包括二进制文件名称、二进制文件类型、二进制文件大小、二进制文件路径、二进制文件hash等信息;包管理器信息可以包括项目组织唯一标识符、项目唯一标识符、版本、开发语言、包管理器平台等信息。例如可以将源码信息中的源码的文件名称、文件类型、文件大小、文件路径、文件hash等信息中的一种或多种信息作为多维度信息。
s102:根据所有多维度信息,确定各组件分别对应的标识。
具体的,装置根据所有多维度信息,确定各组件分别对应的标识。所述标识可以为ccid,即commoncomponentid,通用组件id。进一步地,可以根据所有多维度信息,确定各组件分别对应的ccid。所有ccid可以预存在ccid信息库中,该ccid信息库中的信息是随开源软件组件信息实时更新的。可以理解的是:根据多维度信息中的全部或部分信息,可以识别出每个组件的特征,进而根据该特征对每个组件进行识别区分,以确定是何种组件,并通过ccid对每个组件进行标记。
需要说明的是:当新的组件或者组件的版本有更新时,可以根据新的组件/版本的项目组织唯一标识符、项目唯一标识符、版本信息、语言信息等信息为新的组件/版本创建一个ccid。
s103:根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
具体的,装置根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。预设开源软件组件漏洞信息可以从cve、cnnvd、cnvd和安全论坛中的至少一种中获取,其中,cve即是commonvulnerabilitiesandexposures,即公共漏洞和暴露;cnnvd即是chinanationalvulnerabilitydatabaseofinformationsecurity,即国家信息安全漏洞库,cnvd即是chinanationalvulnerabilitydatabase,即国家信息安全漏洞共享平台,对上述获取漏洞信息的渠道不作具体限定。
根据预设漏洞库对所有标识进行安全识别,具体可以包括:
根据预设开源软件组件标识,确定与所有标识分别对应的目标标识。举例说明如下:假设待识别开源软件中共有两个组件,分别对应的标识为a和b,在预设开源软件组件标识中与a和b分别对应的目标标识为a和b。
根据所述对应关系,确定所有目标标识是否有对应的目标开源软件组件漏洞信息。假设在预设漏洞库中a对应有预设开源软件组件漏洞信息a1;在预设漏洞库中b没对应有任何预设开源软件组件漏洞信息,由于其中一个目标标识a有对应的目标开源软件组件漏洞信息a1,则确定该待识别开源软件存在安全风险(即这种情况无论另一个目标标识b是否有对应的目标开源软件组件漏洞信息,即可以直接确定该待识别开源软件存在安全风险)。
假设在预设漏洞库中a和b都没对应有任何预设开源软件组件漏洞信息,则确定该待识别开源软件不存在安全风险。
若判断获知至少一个目标标识有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件存在安全风险。可参照上述说明,不再赘述。
若判断获知所有目标标识都没有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件不存在安全风险。可参照上述说明,不再赘述。
需要说明的是:该方法还可以灵活地对预设漏洞库中的内容进行自动更新,具体可以包括:
当检测到新增预设开源软件组件时,生成与所述新增预设开源软件组件对应的新增预设开源软件组件标识。例如新增预设开源软件组件为x,生成的新增预设开源软件组件标识为x。
获取与所述新增预设开源软件组件标识对应的新增预设开源软件组件漏洞信息,并生成新增对应关系;所述新增对应关系是所述新增预设开源软件组件标识和新增预设开源软件组件漏洞信息之间的对应关系。假设与x对应的新增预设开源软件组件漏洞信息为x1,则,生成的新增对应关系为“x~x1”。
进一步地,还可以包括:若检测到所述预设开源软件组件漏洞信息进行了更新,则生成更新对应关系;其中,所述更新对应关系是所述预设开源软件组件标识和更新的预设开源软件组件漏洞信息之间的对应关系。参照上述说明,以对应关系“a~a1”为例,如果预设开源软件组件漏洞信息a1进行了更新,更新的预设开源软件组件漏洞信息为a2,则生成的更新对应关系为“a~a2”。
本发明实施例提供的开源软件的安全识别方法,先确定待识别开源软件中各组件分别对应的标识,再根据预设漏洞库对所有标识进行安全识别,能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述根据预设漏洞库对所有标识进行安全识别,包括:
根据预设开源软件组件标识,确定与所有标识分别对应的目标标识。
具体的,装置根据预设开源软件组件标识,确定与所有标识分别对应的目标标识。可参照上述实施例,不再赘述。
根据所述对应关系,确定所有目标标识是否有对应的目标开源软件组件漏洞信息。
具体的,装置根据所述对应关系,确定所有目标标识是否有对应的目标开源软件组件漏洞信息。可参照上述实施例,不再赘述。
若判断获知至少一个目标标识有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件存在安全风险。
具体的,装置若判断获知至少一个目标标识有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件存在安全风险。可参照上述实施例,不再赘述。
若判断获知所有目标标识都没有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件不存在安全风险。
具体的,装置若判断获知所有目标标识都没有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件不存在安全风险。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述方法还包括:
当检测到新增预设开源软件组件时,生成与所述新增预设开源软件组件对应的新增预设开源软件组件标识。
具体的,装置当检测到新增预设开源软件组件时,生成与所述新增预设开源软件组件对应的新增预设开源软件组件标识。可参照上述实施例,不再赘述。
获取与所述新增预设开源软件组件标识对应的新增预设开源软件组件漏洞信息,并生成新增对应关系;所述新增对应关系是所述新增预设开源软件组件标识和新增预设开源软件组件漏洞信息之间的对应关系。
具体的,装置获取与所述新增预设开源软件组件标识对应的新增预设开源软件组件漏洞信息,并生成新增对应关系;所述新增对应关系是所述新增预设开源软件组件标识和新增预设开源软件组件漏洞信息之间的对应关系。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,能够对预设漏洞库进行实时更新,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述方法还包括:
若检测到所述预设开源软件组件漏洞信息进行了更新,则生成更新对应关系;其中,所述更新对应关系是所述预设开源软件组件标识和更新的预设开源软件组件漏洞信息之间的对应关系。
具体的,装置若检测到所述预设开源软件组件漏洞信息进行了更新,则生成更新对应关系;其中,所述更新对应关系是所述预设开源软件组件标识和更新的预设开源软件组件漏洞信息之间的对应关系。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,能够对预设漏洞库进行实时更新,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述标识为ccid,相应的,所述根据所有多维度信息,确定各组件分别对应的标识,包括:
根据所有多维度信息,确定各组件分别对应的ccid。
具体的,装置根据所有多维度信息,确定各组件分别对应的ccid。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,通过ccid标识开源软件组件,能够更简单、高效地区分出开源软件组件,保证该技术方案正常进行。
在上述实施例的基础上,所述多维度信息包括源码信息、二进制信息、包管理器信息中的至少一种。
具体的,装置中的所述多维度信息包括源码信息、二进制信息、包管理器信息中的至少一种。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,通过具体的多维度信息能够识别出组件,保证该技术方案正常进行。
在上述实施例的基础上,所述预设开源软件组件漏洞信息从cve、cnnvd、cnvd和安全论坛中的至少一种中获取。
具体的,装置中的所述预设开源软件组件漏洞信息从cve、cnnvd、cnvd和安全论坛中的至少一种中获取。可参照上述实施例,不再赘述。
本发明实施例提供的开源软件的安全识别方法,能够简单、高效地获取到预设开源软件组件漏洞信息,进一步能够准确识别开源软件是否存在安全风险。
图2为本发明实施例开源软件的安全识别装置结构示意图,如图2所示,本发明实施例提供了一种开源软件的安全识别装置,包括获取单元201、确定单元202和识别单元203,其中:
获取单元201用于获取待识别开源软件中各组件分别对应的多维度信息;确定单元202用于根据所有多维度信息,确定各组件分别对应的标识;识别单元203用于根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
具体的,获取单元201用于获取待识别开源软件中各组件分别对应的多维度信息;确定单元202用于根据所有多维度信息,确定各组件分别对应的标识;识别单元203用于根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
在上述实施例的基础上,所述识别单元203具体用于:根据预设开源软件组件标识,确定与所有标识分别对应的目标标识;根据所述对应关系,确定所有目标标识是否有对应的目标开源软件组件漏洞信息;若判断获知至少一个目标标识有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件存在安全风险;若判断获知所有目标标识都没有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件不存在安全风险。
具体的,所述识别单元203具体用于:根据预设开源软件组件标识,确定与所有标识分别对应的目标标识;根据所述对应关系,确定所有目标标识是否有对应的目标开源软件组件漏洞信息;若判断获知至少一个目标标识有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件存在安全风险;若判断获知所有目标标识都没有对应的目标开源软件组件漏洞信息,则确定所述待识别开源软件不存在安全风险。
本发明实施例提供的开源软件的安全识别装置,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述装置还用于:当检测到新增预设开源软件组件时,生成与所述新增预设开源软件组件对应的新增预设开源软件组件标识;获取与所述新增预设开源软件组件标识对应的新增预设开源软件组件漏洞信息,并生成新增对应关系;所述新增对应关系是所述新增预设开源软件组件标识和新增预设开源软件组件漏洞信息之间的对应关系。
具体的,所述装置还用于:当检测到新增预设开源软件组件时,生成与所述新增预设开源软件组件对应的新增预设开源软件组件标识;获取与所述新增预设开源软件组件标识对应的新增预设开源软件组件漏洞信息,并生成新增对应关系;所述新增对应关系是所述新增预设开源软件组件标识和新增预设开源软件组件漏洞信息之间的对应关系。
本发明实施例提供的开源软件的安全识别装置,能够对预设漏洞库进行实时更新,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述装置还用于:若检测到所述预设开源软件组件漏洞信息进行了更新,则生成更新对应关系;其中,所述更新对应关系是所述预设开源软件组件标识和更新的预设开源软件组件漏洞信息之间的对应关系。
具体的,所述装置还用于:若检测到所述预设开源软件组件漏洞信息进行了更新,则生成更新对应关系;其中,所述更新对应关系是所述预设开源软件组件标识和更新的预设开源软件组件漏洞信息之间的对应关系。
本发明实施例提供的开源软件的安全识别装置,能够对预设漏洞库进行实时更新,进一步能够准确识别开源软件是否存在安全风险。
在上述实施例的基础上,所述确定单元202具体用于:根据所有多维度信息,确定各组件分别对应的ccid。
具体的,所述确定单元202具体用于:根据所有多维度信息,确定各组件分别对应的ccid。
本发明实施例提供的开源软件的安全识别装置,通过ccid标识开源软件组件,能够更简单、高效地区分出开源软件组件,保证该技术方案正常进行。
在上述实施例的基础上,所述多维度信息包括源码信息、二进制信息、包管理器信息中的至少一种。
具体的,所述多维度信息包括源码信息、二进制信息、包管理器信息中的至少一种。
本发明实施例提供的开源软件的安全识别装置,通过具体的多维度信息能够识别出组件,保证该技术方案正常进行。
在上述实施例的基础上,所述预设开源软件组件漏洞信息从cve、cnnvd、cnvd和安全论坛中的至少一种中获取。
具体的,所述预设开源软件组件漏洞信息从cve、cnnvd、cnvd和安全论坛中的至少一种中获取。
本发明实施例提供的开源软件的安全识别装置,能够简单、高效地获取到预设开源软件组件漏洞信息,进一步能够准确识别开源软件是否存在安全风险。
本发明实施例提供的开源软件的安全识别装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图3为本发明实施例提供的电子设备实体结构示意图,如图3所示,所述电子设备包括:处理器(processor)301、存储器(memory)302和总线303;
其中,所述处理器301、存储器302通过总线303完成相互间的通信;
所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取待识别开源软件中各组件分别对应的多维度信息;根据所有多维度信息,确定各组件分别对应的标识;根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待识别开源软件中各组件分别对应的多维度信息;根据所有多维度信息,确定各组件分别对应的标识;根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取待识别开源软件中各组件分别对应的多维度信息;根据所有多维度信息,确定各组件分别对应的标识;根据预设漏洞库对所有标识进行安全识别;所述预设漏洞库包括预设开源软件组件标识和预设开源软件组件漏洞信息之间的对应关系。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。