CN117932564A - 一种依赖库风险检查方法、装置、设备及存储介质 - Google Patents
一种依赖库风险检查方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117932564A CN117932564A CN202311734432.0A CN202311734432A CN117932564A CN 117932564 A CN117932564 A CN 117932564A CN 202311734432 A CN202311734432 A CN 202311734432A CN 117932564 A CN117932564 A CN 117932564A
- Authority
- CN
- China
- Prior art keywords
- risk
- target
- library
- party
- target item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000008569 process Effects 0.000 claims abstract description 38
- 238000007689 inspection Methods 0.000 claims description 51
- 238000004590 computer program Methods 0.000 claims description 14
- 230000001419 dependent effect Effects 0.000 abstract description 9
- 230000001960 triggered effect Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种依赖库风险检查方法、装置、设备及存储介质,本实施例中当用户在目标项目的仓库中执行了目标操作后,会自动触发CICD流程提交目标文件到第三方库检查服务中,使得第三方库检查服务可根据目标文件中目标项目所依赖的第三方库的标识信息,调用第三方接口检索第三方库的安全风险,并在第三方库存在安全风险时,生成风险信息并向用户发出警告。本发明实施例能够在项目开发的过程中,及时发现项目所依赖的第三方库的安全风险并向用户发出警告,使得用户可以实时得知项目的安全风险并执行相对应的安全措施,解决了现有技术在项目的开发过程中无法及时检测出依赖库的安全风险的技术问题。
Description
技术领域
本申请实施例涉及软件开发领域,尤其涉及一种依赖库风险检查方法、装置、设备及存储介质。
背景技术
目前,在软件开发过程中,Go语言因有着高并发处理能力强、支持跨平台开发、标准库丰富以及能够适应云计算和微服务架构等特点,受到了广大开发者的喜爱。使用Go语言在开发过程中需要使用到大量的第三方库,然而第三方库的质量参差不齐,可能存在潜在的安全风险,如果开发者没有对第三方库进行充分的审查和测试,就可能引入安全风险。另外,即使依赖库在引入时是安全的,但是随着时间的推移,可能会出现新的安全风险,如果开发者没有持续跟踪和更新第三方库,可能会暴露出安全风险。
综上所述,如何在项目的开发过程中及时检测出依赖库的安全风险,成为了目前亟需解决的技术问题。
发明内容
本发明实施例提供了一种依赖库风险检查方法、装置、设备及存储介质,能够在软件开发过程中及时检测出依赖库的安全风险,解决了现有技术中无法及时检测出依赖库的安全风险的技术问题。
第一方面,本发明实施例提供了一种依赖库风险检查方法,包括:
接收CICD流程推送的目标文件,所述目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,所述目标文件用于管理所述目标项目所依赖的第三方库以及存储所述第三方库的标识信息;
解析所述目标文件的哈希值和部门标识,根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本;所述目标文件携带有所述部门标识;
当所述目标项目为新版本时,根据所述目标文件中的标识信息,调用第三方接口检查所述第三方库的安全风险;
当第三方库存在安全风险时,生成风险信息并向用户发出警告。
优选的,所述根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本,包括:
获取历史上接收到的与所述部门标识以及所述目标项目的项目名称相对应的历史目标文件;
解析所述历史目标文件的历史哈希值,判断所述历史哈希值是否与所述目标文件的哈希值相同;
当所述哈希值与所述历史哈希值不同时,确定所述目标项目为新版本。
优选的,在所述调用第三方接口检查所述第三方库的安全风险后,还包括:
根据检查结果确定风险等级、风险评分以及版本影响范围,根据所述风险等级、所述风险评分、所述版本影响范围以及所述第三方库的标识信息生成安全风险检查报告;
将所述安全风险检查报告与所述哈希值、所述部门标识以及所述项目名称组合成检查数据后,对所述组合数据进行保存。
优选的,还包括:
响应于版本迭代指令,根据所述版本影响范围确定所述目标项目的安全版本;
将所述目标项目的版本迭代至所述安全版本。
优选的,还包括:
获取所述目标项目中所有存在安全风险的第三方库的风险等级以及风险评分;
根据所述所有存在安全风险的第三方库的风险等级以及风险评分,确定所述目标项目当前的总体风险评分。
优选的,所述根据所述所有存在安全风险的第三方库的风险等级以及风险评分,确定所述目标项目当前的总体风险评分,包括:
将所述所有存在安全风险的第三方库的风险等级以及风险评分输入至预设的项目风险评分模型中,以使所述项目风险评分模型输出所述目标项目当前的总体风险评分。
优选的,所述目标操作包括代码推送、代码合并或者代码调度中的任意一种。
第二方面,本发明实施例提供了一种依赖库风险检查装置,包括:
文件接收模块,用于接收CICD流程推送的目标文件,所述目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,所述目标文件用于管理所述目标项目所依赖的第三方库以及存储所述第三方库的标识信息;
文件解析模块,用于解析所述目标文件的哈希值和部门标识,根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本;所述目标文件携带有所述部门标识;
风险检查模块,用于当所述目标项目为新版本时,根据所述目标文件中的标识信息,调用第三方接口检查所述第三方库的安全风险;
风险警告模块,用于当第三方库存在安全风险时,生成风险信息并向用户发出警告。
第三方面,本发明实施例提供了一种依赖库风险检查设备,所述依赖库风险检查设备包括处理器以及存储器;
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行如第一方面所述的一种依赖库风险检查方法。
第四方面,本发明实施例提供了一种存储计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的一种依赖库风险检查方法。
上述,本发明实施例提供了一种依赖库风险检查方法、装置、设备及存储介质,本实施例中当用户在目标项目的仓库中执行了目标操作后,会自动触发CICD流程提交目标文件到第三方库检查服务中,使得第三方库检查服务可根据目标文件中目标项目所依赖的第三方库的标识信息,调用第三方接口检索第三方库的安全风险,并在第三方库存在安全风险时,生成风险信息并向用户发出警告。本发明实施例能够在项目开发的过程中,及时发现项目所依赖的第三方库的安全风险并向用户发出警告,使得用户可以实时得知项目的安全风险并执行相对应的安全措施,解决了现有技术在项目的开发过程中无法及时检测出依赖库的安全风险的技术问题,且本发明实施例提供的依赖库风险检查方法无需繁琐配置,能够快速对接原有的CICD流程,且不对系统运行产生负面影响,侵入性低。
附图说明
图1为本发明实施例提供的一种依赖库风险检查方法的流程示意图。
图2为本发明实施例提供的一种风险信息的内容示意图。
图3为本发明实施例提供的一种依赖库风险检查方法的原理图。
图4为本发明实施例提供的一种Grafana面板的示意图。
图5为本发明实施例提供的一种检查周报的示意图。
图6为本发明实施例提供的另一种依赖库风险检查方法的流程示意图。
图7为本发明实施例提供的一种安全风险报告的示意图。
图8为本发明实施例提供的一种依赖库风险检查装置的结构示意图。
图9为本发明实施例提供的一种依赖库风险检查设备的结构示意图。
具体实施方式
以下描述和附图充分地示出本申请的具体实施方案,以使本领域的技术人员能够实践它们。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本申请的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,各实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。本文中,诸如第一和第二等之类的关系术语仅仅用于将一个实体或者操作与另一个实体或操作区分开来,而不要求或者暗示这些实体或操作之间存在任何实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的结构、产品等而言,由于其与实施例公开的部分相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
如图1所示,图1为本发明实施例提供的一种依赖库风险检查方法的流程图。本发明实施例提供的依赖库风险检查方法可以由依赖库风险检查设备执行,该依赖库风险检查设备可以通过软件和/或硬件的方式实现,该依赖库风险检查设备可以是两个或多个物理实体构成,也可以由一个物理实体构成。例如依赖库风险检查设备可以是电脑、上位机、平板等设备。本实施例中以依赖库风险检查方法由依赖库风险检查设备中的第三方库检查服务执行为例进行说明,方法包括以下步骤:
步骤101、接收CICD流程推送的目标文件,目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,目标文件用于管理目标项目所依赖的第三方库以及存储第三方库的标识信息。
本实施例中,开发人员在对目标项目进行开发和测试的过程中,当开发人员在目标项目的仓库中执行目标操作时,会触发CICD(持续集成、交付和部署)流程向第三方库检查服务推送目标文件。其中目标操作为预先设置的操作,例如目标操作包括代码推送、代码合并或者代码调度中的任意一种,其中代码推送是指将两个或多个分支的修改内容合并为一个分支的过程;代码推送是将本地的代码修改推送到远程仓库中的过程,调度则是对代码进行调度的过程。
另外,本实施例中的目标文件为用于管理目标项目所依赖的第三方库,以及存储第三方库的标识信息的文件,例如本实施例中的目标项目使用Go语言进行开发,仓库为Go项目仓库,目标文件为Go语言中的Go.mod文件,Go.mod文件用于管理项目所依赖的第三方库,以及存储第三方库的标识信息,其中第三方库的标识信息包括第三方库的路径以及版本,Go.mod文件的具体结构可参考现有技术,本实施例中不再进行赘述。本实施例中用户需要预先使用代码管理工具(例如Gitlab)在CICD文件中添加推送Go.mod文件的功能,以使得CICD流程在检测到Go项目仓库执行目标操作后,将Go.mod文件推送至第三方库检查服务中,本实施例中的第三方库检查服务可以是Go.mod检查服务。
步骤102、解析目标文件的哈希值和部门标识,根据哈希值、部门标识以及目标项目的项目名称,校验目标项目是否为新版本;目标文件携带有部门标识。
第三方库检查服务在接收到CICD流程推送的目标文件后,会对目标文件进行解析,以得到目标文件的哈希值以及部门标识,其中部门标识为目标项目所属部门的标识,部门标识携带在目标文件中,CICD流程在推送目标文件时,会获取部门标识并添加在目标文件中。第三方库检查服务在解析出目标文件的哈希值和部门标识后,会进一步获取目标项目的项目名称,并根据哈希值、部门标识以及项目名称,校验目标项目是否为新版本。
步骤103、当目标项目为新版本时,根据目标文件中的标识信息,调用第三方接口检查第三方库的安全风险。
当第三方库检查服务确定目标项目为新版本时,则第三方库检查服务会根据目标文件中所携带的第三方库的地址和版本,调用第三方接口检查相对应的第三方库以及第三方库的安全风险,例如第三方接口可以采用deps.dev(由谷歌开发和托管的服务),该接口可以检查每个依赖库指定版本对应的安全风险,也可以通过其他的接口辅助检查,本实施例中不进行具体限定。
步骤104、当第三方库存在安全风险时,生成风险信息并向用户发出警告。
当通过第三方接口确定第三方库存在安全风险时,则第三方库检查服务可以根据第三方库所存在的安全风险,生成风险信息并向用户发出警告,从而提示用户存在风险,例如风险信息的发送方式可以通过邮件、短信或软件消息的方式进行发送等,本实施例中不进行具体限定。示例性的,风险信息的内容如图2所示。一个实施例中,本发明实施例提供的依赖库风险检查方法的具体原理如图3所示。另外,对于存在风险的第三方库,第三方库检查服务还可以将第三方库的安全风险的详细信息在前端页面中进行显示,方便用户实时进行查看,例如可以在前端中配置Grafana面板,可监测不同部门对应Go项目依赖的第三方库的安全风险情况,如图4所示。另一个实施例中,第三方库检查服务也可以定期自动对目标项目所依赖的第三方库的安全风险进行检查,并生成检查周报,示例性的,检查周报如图5所示。
上述,本发明实施例提供了一种依赖库风险检查方法,本实施例中当用户在目标项目的仓库中执行了目标操作后,会自动触发CICD流程提交目标文件到第三方库检查服务中,使得第三方库检查服务可根据目标文件中目标项目所依赖的第三方库的标识信息,调用第三方接口检索第三方库的安全风险,并在第三方库存在安全风险时,生成风险信息并向用户发出警告。本发明实施例能够在项目开发的过程中,及时发现项目所依赖的第三方库的安全风险并向用户发出警告,使得用户可以实时得知项目的风险并执行相对应的安全措施,解决了现有技术在项目的开发过程中无法及时检测出依赖库的安全风险的技术问题,且本发明实施例提供的依赖库风险检查方法无需繁琐配置,能够快速对接原有的CICD流程,且不对系统运行产生负面影响,侵入性低。
本发明实施例海提供了另一种依赖库风险检查方法,如图6所示,图6为本发明实施例提供的另一种依赖库风险检查方法的流程示意图,本发明实施例提供的依赖库风险检查方法包括:
步骤201、接收CICD流程推送的目标文件,目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,目标文件用于管理目标项目所依赖的第三方库以及存储第三方库的标识信息。
步骤202、解析目标文件的哈希值和部门标识,目标文件携带有部门标识。
步骤203、获取历史上接收到的与部门标识以及目标项目的项目名称相对应的历史目标文件。
本实施例中,在从目标文件中解析出哈希值以及部门标识后,则可以进一步根据所解析出的部门标识以及目标项目的项目名称,获取相对应的历史目标文件,即历史上接收到的具有相同部门标识和相同项目名称的目标文件。
步骤204、解析历史目标文件的历史哈希值,判断历史哈希值是否与目标文件的哈希值相同。
在获取到历史目标文件后,需要进一步从历史目标文件中解析出相对应的历史哈希值,并判断历史目标文件的历史哈希值是否与目标文件的哈希值相同。
步骤205、当哈希值与历史哈希值不同时,确定目标项目为新版本。
当目标文件的哈希值与历史目标文件的哈希值不同时,则可以确定出目标项目为新版本。需要说明的是,本实施例中当目标项目所依赖的第三方库发生变动时,则认为目标项目的版本为新版本,而当所依赖的第三方发生变动时,目标文件中有关于第三方库的标识信息也会随之改变,即目标文件的数据发生变动,从而使得目标文件的哈希值与历史目标文件的哈希值产生差异,以便在每次目标项目所依赖的第三方库发生更新时,都对所有依赖的第三方库进行风险检查。
步骤206、当目标项目为新版本时,根据目标文件中的标识信息,调用第三方接口检查第三方库的安全风险。
步骤207、根据检查结果确定风险等级、风险评分以及版本影响范围,根据风险等级、风险评分、版本影响范围以及第三方库的标识信息生成安全风险检查报告。
本实施例中,在调用了第三方接口检查第三方库的安全风险后,第三方库检查服务则可以根据第三方接口的检查结果,确定出第三方库的风险等级、风险评分以及版本影响范围,其中风险等级是指安全风险的严重等级,而风险评分是指对安全风险的严重程度的评分,版本影响范围是指该安全风险所影响的目标项目的版本范围。一个实施例中,每个种类的安全风险相对应的风险等级以及风险评分可预先进行设置,或者是第三方库检查服务可以自动分析该安全风险所能够引起的后果以及影响范围,并根据所引起的后果以及影响范围确定该安全风险的风险等级以及风险评分。而版本影响范围则可以根据首次引入出现安全风险的第三方库的目标项目的版本进行确定,例如若当前目标项目的版本为V1.6,而首次引入出现安全风险的第三方库的目标项目的版本为V1.2,则版本影响范围则为V1.2-V1.6。
在确定了安全风险的风险等级、风险评分以及版本影响范围后,第三方库检查服务则可以根据风险等级、风险评分、版本影响范围以及第三方库的标识信息生成安全风险检查报告。可理解,当检查结果中第三方库不存在安全风险时,则不必确定风险等级、风险评分以及版本影响范围,直接根据检查结果以及以及第三方库的标识信息生成安全风险检查报告即可。一个实施例中,安全风险报告的格式如图7所示。
步骤208、将安全风险检查报告与哈希值、部门标识以及项目名称组合成检查数据后,对组合数据进行保存。
在生成安全风险检查报告后,则第三方库检查服务可以进一步将第三方库的安全风险检查报告与目标文件的哈希值、部门标识以及项目名称组合成检查数据后,对组合数据进行保存。一个实施例中,第三方库检查服务还可以将保存后的组合数据实施发送到前端中进行显示,以供用户实时进行查看。
步骤209、当第三方库存在安全风险时,生成风险信息并向用户发出警告。
在上述实施例的基础上,还包括:
步骤210、响应于版本迭代指令,根据版本影响范围确定目标项目的安全版本。
步骤211、将目标项目的版本迭代至安全版本。
一个实施例中,第三方库检查服务在确定出的安全风险的版本影响范围后,用户可以对目标项目的版本进行回滚,从而将目标项目的版本迭代至尚未引入安全风险之前。具体的,用户可以通过交互设备与依赖库风险检查设备的前端进行交互,从而向依赖库风险检查设备发送版本迭代指令,依赖库风险检查设备接收到版本迭代指令后,则将版本迭代指令转发至第三方库检查服务,第三方库检查服务则对版本迭代指令进行响应,根据安全风险的版本影响范围,确定出目标项目的安全版本,即尚未首次引入出现安全风险的第三方库的版本。之后将目标项目的版本迭代至安全版本,从而避免第三方库的安全风险对目标项目造成严重影响。
在上述实施例的基础上,还包括:
步骤212、获取目标项目中所有存在安全风险的第三方库的风险等级以及风险评分。
步骤213、根据所有存在安全风险的第三方库的风险等级以及风险评分,确定目标项目当前的总体风险评分。
一个实施例中,在检查出目标项目中所有存在安全风险的第三方库后,第三方库检查服务还可以获取所有存在安全风险的第三方库的风险等级以及风险评分,并根据所有存在安全风险的第三方库的风险等级以及风险评分,确定目标项目当前的总体风险评分。一个实施例中,第三方库检查服务可以为不同风险等级的安全风险设置不同的权重,并根据所设置的权重,对安全风险相对应的风险评分进行加权求和,从而得到目标项目当前的总体风险评分。另一个实施例中,也可以利用神经网络来确定目标项目当前的总体风险评分。具体的,将所有第三方库的风险等级以及风险评分输入至预设的项目风险评分模型中,以使项目风险评分模型输出目标项目当前的总体风险评分。其中项目风险评分模型可以预先对神经网络进行训练得到,神经网络可以采用BP神经网络,神经网络的具体类型可根据实际需要进行选择,本发明实施例中不进行具体限定。具体的,在对神经网络进行训练时,首先构建BP神经网络模型的训练集,即获取目标项目历史上发生安全风险的第三方库的历史风险等级以及历史风险评分,并在历史风险等级和历史风险评分上标注出目标项目的历史总体风险评分,得到训练集。之后以训练集作为输入,历史总体风险评分作为输出,对BP神经网络模型进行训练,直至BP神经网络模型的输出误差达到预设要求为止,从而得到训练好的项目风险评分模型。示例性的,当BP神经网络模型的输出的准确率达到设置的阈值时,则确定对应的项目风险评分模型完成,之后可将所有存在安全风险的第三方库的风险等级以及风险评分输入至项目风险评分模型中,从而输出当前目标项目的总体风险评分,并可以将总体风险评分在前端中进行显示,从而用户能够得知当前目标项目的总体风险情况。
上述,本发明实施例提供了一种依赖库风险检查方法,本实施例中当用户在目标项目的仓库中执行了目标操作后,会自动触发CICD流程提交目标文件到第三方库检查服务中,使得第三方库检查服务可根据目标文件中目标项目所依赖的第三方库的标识信息,调用第三方接口检索第三方库的安全风险,并在第三方库存在安全风险时,生成风险信息并向用户发出警告。本发明实施例能够在项目开发的过程中,及时发现项目所依赖的第三方库的安全风险并向用户发出警告,使得用户可以实时得知项目的风险并执行相对应的安全措施,解决了现有技术在项目的开发过程中无法及时检测出依赖库的安全风险的技术问题,且本发明实施例提供的依赖库风险检查方法无需繁琐配置,能够快速对接原有的CICD流程,且不对系统运行产生负面影响,侵入性低。
本发明实施例在确认第三方库存在安全风险后,还会进一步确定安全风险的风险等级、风险评分以及版本影响范围,并根据风险等级、风险评分以及版本影响范围生成安全风险检查报告供用户查看。其次,本发明实施例还可以响应用户发送的版本迭代指令,将目标项目的版本迭代至安全版本,以避免安全风险对目标项目造成影响。另外,本发明实施例还会根据所有存在安全风险的第三方库的风险等级以及风险评分,确定目标项目当前的总体风险评分,从而使得用户可以了解当前目标项目的总体风险情况。
本发明实施例还提供了一种依赖库风险检查装置,如图8所示,图8为本发明实施例提供的一种依赖库风险检查装置的结构示意图,本发明实施例提供的依赖库风险检查装置包括:
文件接收模块301,用于接收CICD流程推送的目标文件,目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,目标文件用于管理目标项目所依赖的第三方库以及存储第三方库的标识信息;
文件解析模块302,用于解析目标文件的哈希值和部门标识,根据哈希值、部门标识以及目标项目的项目名称,校验目标项目是否为新版本;目标文件携带有部门标识;
风险检查模块303,用于当目标项目为新版本时,根据目标文件中的标识信息,调用第三方接口检查第三方库的安全风险;
风险警告模块304,用于当第三方库存在安全风险时,生成风险信息并向用户发出警告。
在上述实施例的基础上,文件解析模块302包括:
历史文件获取子模块,用于获取历史上接收到的与部门标识以及目标项目的项目名称相对应的历史目标文件;
哈希值比较子模块,用于解析历史目标文件的历史哈希值,判断历史哈希值是否与目标文件的哈希值相同;
版本确定子模块,用于当哈希值与历史哈希值不同时,确定目标项目为新版本。
在上述实施例的基础上,还包括:
报告生成模块,用于在调用第三方接口检查第三方库的安全风险后,根据检查结果确定风险等级、风险评分以及版本影响范围,根据风险等级、风险评分、版本影响范围以及第三方库的标识信息生成安全风险检查报告;
数据组合模块,用于将安全风险检查报告与哈希值、部门标识以及项目名称组合成检查数据后,对组合数据进行保存。
在上述实施例的基础上,还包括:
指令响应模块,用于响应于版本迭代指令,根据版本影响范围确定目标项目的安全版本;
版本迭代模块,用于将目标项目的版本迭代至安全版本。
在上述实施例的基础上,还包括:
信息获取模块,用于获取目标项目中所有存在安全风险的第三方库的风险等级以及风险评分;
总体风险确定模块,用于根据所有存在安全风险的第三方库的风险等级以及风险评分,确定目标项目当前的总体风险评分。
在上述实施例的基础上,总体风险确定模块具体用于将所有存在安全风险的第三方库的风险等级以及风险评分输入至预设的项目风险评分模型中,以使项目风险评分模型输出目标项目当前的总体风险评分。
在上述实施例的基础上,目标操作包括代码推送、代码合并或者代码调度中的任意一种。
本发明实施例提供的依赖库风险检查装置包含在依赖库风险检查设备中,且可用于执行上述实施例中提供的依赖库风险检查方法,具备相应的功能和有益效果。
值得注意的是,上述依赖库风险检查装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本实施例还提供了一种依赖库风险检查设备,如图9所示,依赖库风险检查设备40包括处理器400以及存储器401;
存储器401用于存储计算机程序402,并将计算机程序402传输给处理器400;
处理器400用于根据计算机程序402中的指令执行上述的一种依赖库风险检查方法实施例中的步骤。
示例性的,计算机程序402可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器401中,并由处理器400执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序402在依赖库风险检查设备40中的执行过程。
依赖库风险检查设备40可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。依赖库风险检查设备40可包括,但不仅限于,处理器400、存储器401。本领域技术人员可以理解,图9仅仅是依赖库风险检查设备40的示例,并不构成对依赖库风险检查设备40的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如依赖库风险检查设备40还可以包括输入输出设备、网络接入设备、总线等。
所称处理器400可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器401可以是依赖库风险检查设备40的内部存储单元,例如依赖库风险检查设备40的硬盘或内存。存储器401也可以是依赖库风险检查设备40的外部存储设备,例如依赖库风险检查设备40上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器401还可以既包括依赖库风险检查设备40的内部存储单元也包括外部存储设备。存储器401用于存储计算机程序以及依赖库风险检查设备40所需的其他程序和数据。存储器401还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种依赖库风险检查方法,该方法包括以下步骤:
接收CICD流程推送的目标文件,目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,目标文件用于管理目标项目所依赖的第三方库以及存储第三方库的标识信息;
解析目标文件的哈希值和部门标识,根据哈希值、部门标识以及目标项目的项目名称,校验目标项目是否为新版本;目标文件携带有部门标识;
当目标项目为新版本时,根据目标文件中的标识信息,调用第三方接口检查第三方库的安全风险;
当第三方库存在安全风险时,生成风险信息并向用户发出警告。
注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。
Claims (10)
1.一种依赖库风险检查方法,其特征在于,包括:
接收CICD流程推送的目标文件,所述目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,所述目标文件用于管理所述目标项目所依赖的第三方库以及存储所述第三方库的标识信息;
解析所述目标文件的哈希值和部门标识,根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本;所述目标文件携带有所述部门标识;
当所述目标项目为新版本时,根据所述目标文件中的标识信息,调用第三方接口检查所述第三方库的安全风险;
当第三方库存在安全风险时,生成风险信息并向用户发出警告。
2.根据权利要求1所述的依赖库风险检查方法,其特征在于,所述根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本,包括:
获取历史上接收到的与所述部门标识以及所述目标项目的项目名称相对应的历史目标文件;
解析所述历史目标文件的历史哈希值,判断所述历史哈希值是否与所述目标文件的哈希值相同;
当所述哈希值与所述历史哈希值不同时,确定所述目标项目为新版本。
3.根据权利要求1所述的依赖库风险检查方法,其特征在于,在所述调用第三方接口检查所述第三方库的安全风险后,还包括:
根据检查结果确定风险等级、风险评分以及版本影响范围,根据所述风险等级、所述风险评分、所述版本影响范围以及所述第三方库的标识信息生成安全风险检查报告;
将所述安全风险检查报告与所述哈希值、所述部门标识以及所述项目名称组合成检查数据后,对所述组合数据进行保存。
4.根据权利要求3所述的依赖库风险检查方法,其特征在于,还包括:
响应于版本迭代指令,根据所述版本影响范围确定所述目标项目的安全版本;
将所述目标项目的版本迭代至所述安全版本。
5.根据权利要求3所述的依赖库风险检查方法,其特征在于,还包括:
获取所述目标项目中所有存在安全风险的第三方库的风险等级以及风险评分;
根据所述所有存在安全风险的第三方库的风险等级以及风险评分,确定所述目标项目当前的总体风险评分。
6.根据权利要求5所述的依赖库风险检查方法,其特征在于,所述根据所述所有存在安全风险的第三方库的风险等级以及风险评分,确定所述目标项目当前的总体风险评分,包括:
将所述所有存在安全风险的第三方库的风险等级以及风险评分输入至预设的项目风险评分模型中,以使所述项目风险评分模型输出所述目标项目当前的总体风险评分。
7.根据权利要求1所述的依赖库风险检查方法,其特征在于,所述目标操作包括代码推送、代码合并或者代码调度中的任意一种。
8.一种依赖库风险检查装置,其特征在于,包括:
文件接收模块,用于接收CICD流程推送的目标文件,所述目标文件由目标项目的仓库执行目标操作时,触发CICD流程进行推送,所述目标文件用于管理所述目标项目所依赖的第三方库以及存储所述第三方库的标识信息;
文件解析模块,用于解析所述目标文件的哈希值和部门标识,根据所述哈希值、部门标识以及所述目标项目的项目名称,校验所述目标项目是否为新版本;所述目标文件携带有所述部门标识;
风险检查模块,用于当所述目标项目为新版本时,根据所述目标文件中的标识信息,调用第三方接口检查所述第三方库的安全风险;
风险警告模块,用于当第三方库存在安全风险时,生成风险信息并向用户发出警告。
9.一种依赖库风险检查设备,其特征在于,所述依赖库风险检查设备包括处理器以及存储器;
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行如权利要求1-7中任一项所述的一种依赖库风险检查方法。
10.一种存储计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一项所述的一种依赖库风险检查方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311734432.0A CN117932564A (zh) | 2023-12-14 | 2023-12-14 | 一种依赖库风险检查方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311734432.0A CN117932564A (zh) | 2023-12-14 | 2023-12-14 | 一种依赖库风险检查方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117932564A true CN117932564A (zh) | 2024-04-26 |
Family
ID=90752802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311734432.0A Pending CN117932564A (zh) | 2023-12-14 | 2023-12-14 | 一种依赖库风险检查方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117932564A (zh) |
-
2023
- 2023-12-14 CN CN202311734432.0A patent/CN117932564A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8799869B2 (en) | System for ensuring comprehensiveness of requirements testing of software applications | |
Guerrouj et al. | The influence of app churn on app success and stackoverflow discussions | |
US20210279164A1 (en) | Real Time Application Error Identification and Mitigation | |
US20110066908A1 (en) | Similarity detection for error reports | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN109901968A (zh) | 一种自动化页面数据校验方法和装置 | |
US20150186195A1 (en) | Method of analysis application object which computer-executable, server performing the same and storage media storing the same | |
CN109324956B (zh) | 系统测试方法、设备及计算机可读存储介质 | |
CN111654495B (zh) | 用于确定流量产生来源的方法、装置、设备及存储介质 | |
CN111367531A (zh) | 代码处理方法及装置 | |
CN111639903A (zh) | 一种针对架构变更的评审处理方法及相关设备 | |
CN116415258A (zh) | 漏洞检测方法、装置、设备、介质及程序产品 | |
CN116610326A (zh) | 区块链智能合约的安全性检测方法、设备及存储介质 | |
CN117932564A (zh) | 一种依赖库风险检查方法、装置、设备及存储介质 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
CN112131127B (zh) | 接口测试方法、装置、系统及电子设备 | |
CN115080827A (zh) | 一种敏感数据处理方法及装置 | |
CN110674491B (zh) | 用于安卓应用的实时取证的方法、装置和电子设备 | |
CN113935847A (zh) | 线上流程的风险处理方法、装置、服务器及介质 | |
CN113656314A (zh) | 压力测试处理方法及装置 | |
US20240045955A1 (en) | Identifying security events in programming code for logging | |
CN117171816B (zh) | 基于工业标识的数据验证方法及相关设备 | |
Hedayatpour et al. | Analyzing security aspects during software design phase using attack-based analysis model | |
CN116701210A (zh) | 一种软件系统异常探测方法、装置、存储介质及设备 | |
CN115543819A (zh) | 应用程序比对方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |