CN116974619B - 一种软件物料清单库的构建方法、装置、设备及可读介质 - Google Patents
一种软件物料清单库的构建方法、装置、设备及可读介质 Download PDFInfo
- Publication number
- CN116974619B CN116974619B CN202311229339.4A CN202311229339A CN116974619B CN 116974619 B CN116974619 B CN 116974619B CN 202311229339 A CN202311229339 A CN 202311229339A CN 116974619 B CN116974619 B CN 116974619B
- Authority
- CN
- China
- Prior art keywords
- library
- software
- component
- materials
- bill
- 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.)
- Active
Links
- 239000000463 material Substances 0.000 title claims abstract description 187
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000011161 development Methods 0.000 claims abstract description 37
- 238000000605 extraction Methods 0.000 claims abstract description 12
- 238000001514 detection method Methods 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 42
- 238000010276 construction Methods 0.000 claims description 28
- 239000011159 matrix material Substances 0.000 claims description 24
- 238000012800 visualization Methods 0.000 claims description 21
- 239000013598 vector Substances 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 18
- 230000000007 visual effect Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 claims description 14
- 238000012502 risk assessment Methods 0.000 claims description 14
- 238000011176 pooling Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012423 maintenance Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 6
- 238000013522 software testing Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000005236 sound signal Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008439 repair process Effects 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种软件物料清单库的构建方法、装置、设备及可读介质,涉及计算机领域,本方法包括:获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;对源代码和组件信息进行特征提取,得到开源组件库;对组件信息进行组件依赖关系提取,得到组件依赖关系库;对安全漏洞信息进行漏洞内容提取,得到安全漏洞库;对许可证信息进行许可证内容提取,得到许可证信息库;对开源组件库、组件依赖关系库、安全漏洞库和许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库。本方法利用软件物料清单库能够清楚描述各个开发阶段的开发代码程序中的软件成分,实现整个软件生命周期中的软件物料清单的统一存储和管理。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种软件物料清单库的构建方法、装置、设备及可读介质。
背景技术
在现有技术中,随着微服务、云计算等新技术的快速迭代,开源软件已成为业界主流形态,但开源时代的到来使得软件供应链越来越趋于复杂化和多样化,安全风险日益增加。在实际开发工作中,一方面,开发人员从源代码、配置文件、生成交付物等处提取所需信息按照需求要求的格式形成报告,但手动生成方法,既消耗人力,又容易出现遗漏、拼写错误等问题;此外由于软件升级变动频繁,导致最终提交报告与实际软件不一致,无法实时有效地追踪安全漏洞风险和许可合规性。另一方面,现有软件物料清单生成于构建部署阶段,未集成于软件生命周期中,无法有效更新识别具体安全风险的开源组件。因此,亟需一种软件物料清单库的构建方法,一方面利用软件物料清单库能够清楚描述各个开发阶段的开发代码程序中的软件成分,快速洞察安全风险,从源头全面把控开发软件的安全性,另一方面方便后期通过使用软件物料清单内容来可视化跟踪所使用的组件,协助开发人员管理依赖项、识别安全问题,实现整个软件生命周期中的软件物料清单的统一存储和管理。
发明内容
本发明的目的在于提供一种软件物料清单库的构建方法、装置、设备及可读介质,以改善上述问题。为了实现上述目的,本发明采取的技术方案如下:
第一方面,本申请提供了一种软件物料清单库的构建方法,本方法包括:
获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;
对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联。
第二方面,本申请还提供了一种软件物料清单库的构建装置,本装置包括:
获取模块,用于获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
第一处理模块,用于对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;
第二处理模块,用于对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
第三处理模块,用于对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
第四处理模块,用于对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
创建模块,用于对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联。
第三方面,本申请还提供了一种软件物料清单库的构建设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现所述软件物料清单库的构建方法的步骤。
第四方面,本申请还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于软件物料清单库的构建方法的步骤。
本发明的有益效果为:
本发明先通过构建所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库,之后通过不同的组件唯一标识与软件物料清单库进行关联,最后得到的软件物料清单库能够清楚描述各个开发阶段的开发代码程序中的软件成分,快速洞察安全风险,从源头全面把控开发软件的安全性;当将本软件物料清单库进行可视化应用时,后期通过使用软件物料清单内容来可视化跟踪所使用的组件,协助开发人员管理依赖项、识别安全问题,即对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库,此时本方法在软件物料清单的可视化检测数据库中进行扫描检测,实现开源组件版本、安全漏洞、许可证合规性的风险评估,开发人员根据评估结果更新修复存在漏洞和不合规的开源组件,将安全风险前置,实现整个软件生命周期中的软件物料清单的统一存储和管理。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例中所述的软件物料清单库的构建方法流程示意图;
图2为本软件物料清单库结合软件开发全生命周期的可视化应用;
图3为本发明实施例中全量软件物料清单的视图信息的结构图;
图4为本发明实施例中所述的软件物料清单库的构建装置结构示意图;
图5为本发明实施例中第一处理子单元的结构示意图;
图6为本发明实施例中第五处理模块至第七处理模块的结构示意图;
图7为本发明实施例中所述的软件物料清单库的构建设备结构示意图;
图中标记:
1、获取模块;2、第一处理模块;3、第二处理模块;4、第三处理模块;5、第四处理模块;6、创建模块;21、第一处理子单元;22、第二处理子单元;23、第三处理子单元;211、第一计算单元;212、第二计算单元;213、第三计算单元;214、第四计算单元;215、第五计算单元;216、第六计算单元;2151、第一获取单元;2152、第一计算子单元;2153、第二计算子单元;2154、第三计算子单元;61、第二获取单元;62、第一关联单元;63、第二关联单元;64、第三关联单元;65、第四关联单元;66、构建单元;7、第五处理模块;8、第六处理模块;9、第七处理模块;91、第三获取单元;92、特征提取单元;93、一次匹配单元;94、二次匹配单元;95、输出单元;800、软件物料清单库的构建设备;801、处理器;802、存储器;803、多媒体组件;804、I/O接口;805、通信组件。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例1:
本实施例提供了一种软件物料清单库的构建方法。
参见图1,图中示出了本方法包括步骤S1至S6,具体有:
S1:获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
在步骤S1中,对于开源组件中的源代码和开源组件中的组件信息可通过GitHub、GItee、GitLab等代码托管站点进行采集获取,并同时接入GitHub、GItee、GitLab等代码托管站点的在线接口,以实时采集获得新增的源代码和新增的组件信息。
对于开源组件中的安全漏洞信息,可从CVE、CMS和CNVD等公开漏洞库、开源社区等网站进行爬取,并同时接入CVE、CMS和CNVD等在线漏洞库,当新增或更新安全漏洞信息时,以实时采集获得新增的安全漏洞信息。
对于开源组件中的许可证信息,可从从GitHub等网站进行采集获取。
S2:对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;在步骤S2中,包括S21至S23,具体有:
S21:对所述开源组件中的源代码进行特征提取,得到第一数据集;在步骤S21中包括S211至S216,具体有:
S211:对所述开源组件中的源代码进行解析,得到代码常量特征和代码结构特征,所述代码常量特征为函数名称;
在步骤S211中,根据开源组件源代码的逻辑结构、数据流、语义以及语法信息对所述开源组件中的源代码进行解析,得到函数名称,并存储为代码常量特征。
S212:对所述代码结构特征进行结构信息解析,得到代码属性图;
S213:对所述代码属性图进行属性的遍历提取,得到代码属性图所对应的所有节点和所有边;
S214:对所有所述节点和所有所述边通过预设的属性模型进行构建,得到代码属性图所对应的属性矩阵;
在步骤S214中,所述属性模型为:;
上式中,表示代码属性图所对应的属性矩阵,/>表示代码属性图所对应的所有节点,其中/>,式中的/>表示代码属性图的第/>个节点;/>表示代码属性图所对应的所有边,其中/>,式中/>表示代码属性图的边的个数,/>和/>分别为第/>条边的起始节点和终止节点。
S215:对所述属性矩阵进行池化计算,得到代码属性图的图特征;
在步骤S215中,对于属性矩阵,其与所有节点的特征向量所构成的特征矩阵对应,因此步骤S215包括S2151至S2154,具体有:
S2151:获取所有节点的节点信息;
S2152:对所有所述节点的节点信息通过预设的向量生成模型进行节点特征向量映射,得到所有节点的特征向量所构成的特征矩阵;
在步骤S2152中,向量生成模型为:;
上式中,表示第/>个节点的特征向量,/>表示预设的向量转换模型,其用于将代码属性图中的节点信息对应映射为节点的特征向量,/>表示代码属性图中第/>个节点信息。
在步骤S2152中,特征矩阵表示为:;
上式中,表示所有节点的特征向量所构成的特征矩阵,/>表示第/>个节点的特征向量。
S2153:对所述特征矩阵通过预设的自注意力权重模型进行计算,得到特征矩阵所对应的注意力权重信息;
在步骤S2153中,自注意力权重模型为:;
上式中,表示特征矩阵所对应的注意力权重信息,/>表示归一化函数,和/>均为预设的权重矩阵,/>表示预设的Sigmoid非线性激活函数,/>表示所有节点的特征向量所构成的特征矩阵。
S2154:对所述注意力权重信息通过预设的SUM池化模型进行读取,得到代码属性图的图特征。
在步骤S2154中,SUM池化模型为:;
上式中,表示代码属性图的图特征,/>表示池化函数,/>表示所有节点的特征向量所对应的注意力权重信息,/>表示所有节点的特征向量所构成的特征矩阵。
S216:对所述代码常量特征和所述代码属性图的图特征进行存储,得到第一数据集。
S22:对所述组件信息中的组件名称、组件类型、组件版本以及组件使用方式进行提取,得到第二数据集;
在步骤S22中,当存在新增和更新的组件信息时,对所述第二数据集进行更新并存储。
S23:根据所述第一数据集和所述第二数据集构建得到开源组件库,并生成第一组件唯一标识。
在步骤S23中,所述开源组件库存储有第一数据集和第二数据集,所述第一组件唯一标识用于后期软件物料清单库对开源组件库的关联调用。
S3:对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
在步骤S3中,对所述组件信息进行组件依赖关系提取主要包括:父组件名称、子组件名称(若存在多个子组件时,将依次存储于组件依赖关系库)。当存在新增和更新的组件信息时,对所述组件依赖关系库进行更新并存储。
S4:对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
在步骤S4中,漏洞内容提取为:漏洞唯一标识符、漏洞编号、漏洞名称、漏洞类型、漏洞级别以及漏洞详情,当存在新增和更新的安全漏洞信息时,对所述安全漏洞库进行更新并存储。
S5:对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
在步骤S5中,许可证内容提取为:许可证信息唯一标识、许可证类型、许可证合规性、许可证风险协议类型以及许可证风险协议权限。
S6:对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联。
为明确所述软件物料清单库与不同的组件唯一标识关联的具体内容,在步骤S6中,包括S61至S66,具体有:
S61:获取所述软件物料清单创建模型中的软件物料清单创建信息和待检测的软件信息;
在步骤S61中,所述软件物料清单创建信息包括:SBOM名称、SBOM创建者、SBOM版本号、SBOM创建时间、SBOM唯一标识;所述待检测的软件信息为开发人员提交待检测的软件的信息,其包括:软件类型、软件名称、软件版本、软件数字签名、软件唯一标识符。
在此,软件物料清单(SBOM,Software Bills of Materials):是所有软件组件的完整列表,一般由开源组件库、软件包和企业自研软件构成。(本发明对软件物料清单SBOM进行了升级,关联开源组件库、组件依赖关系库、安全漏洞库以及许可证库,构建生成软件物料清单SBOM库,进一步构建软件物料清单的可视化检测数据库)。
S62:将所述第一组件唯一标识与所述开源组件库的内容进行关联,得到第一关联数据集;
S63:将所述第二组件唯一标识与所述组件依赖关系库的内容进行关联,得到第二关联数据集;
S64:将所述第三组件唯一标识与所述安全漏洞库的内容进行关联,得到第三关联数据集;
S65:将所述第四组件唯一标识与所述许可证信息库的内容进行关联,得到第四关联数据集;
S66:将所述软件物料清单创建信息、所述待检测的软件信息、所述第一关联数据集、所述第二关联数据集、所述第三关联数据集以及所述第四关系数据集进行构建,得到软件物料清单库。其中,所述软件物料清单库包括全量软件物料清单库和软件开发生命周期物料清单库。
如图2所示,在步骤S6之后,为最大程度的匹配组件版本、安全漏洞和许可证风险信息,实现对全量软件物料清单库的生成和管理,并将其集成到软件开发生命周期的各个阶段,本方法引入软件物料清单的可视化检测数据库,包括S7至S9,具体有:
S7:对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库;所述软件物料清单的可视化检测数据库专用于软件物料清单可视化检测系统进行数据调用。
在步骤S7中,所述软件物料可视化模型包括:生成方式、生成频率、生成深度、更新校验机制、访问限制以及交付格式六部分。具体有:
生成方式:分为自动化生成和人工生成两种。其中,自动化构建生成全量软件物料清单管理数据库,设置自动的策略接口来实施策略规则,一旦出现新增开源组件、漏洞或不合规开源许可证,自动触发接口,实现自动化的策略执行;人工生成的方式为软件开发生命周期检测数据库所应用。无论是自动化生成还是人工生成的SBOM(软件物料清单)都可以编辑。
生成频率:自动化生成频率为每次添加、删除开源组件或更改组件版本时可自动更新SBOM以确保SBOM的准确性;人工生成频率为基于软件开发生命周期(SDLC)的检测频率。
更新校验机制:当开源组件以新版本或发布的形式更新、安全漏洞和开源许可证更新或变更,需自动创建新的相对应版本的全局SBOM。人工手动更新SBOM同样需要记录更新时间、更新结果等内容,确保生成的软件物料清单信息完整性,避免开源组件的遗漏缺失。
生成深度:生成软件物料清单统计管理模块、开源组件信息管理模块、安全漏洞管理模块以及许可证风险信息管理模块;其中所有模块识别已知和未知的依赖传递,明确展示开源组件的所有间接依赖关系。
访问限制:制定访问控制的条款,限制部分人员对SBOM数据的访问和允许某些人员对SBOM数据的访问。
交付格式:通过各种不同的格式创建和发布SBOM,以HTML、PDF等格式进行规定。
S8:根据所述全量软件物料清单管理数据库进行视图构建,得到全量软件物料清单的视图信息;
如图3所示,根据所述全量软件物料清单管理数据库生成软件物料清单统计管理模块、开源组件信息管理模块、安全漏洞管理模块以及许可证风险信息管理模块,根据前述所有模块输出全量软件物料清单的视图信息。
其中,全量软件物料清单管理数据库能够追踪软件物料清单、开源组件、安全漏洞和许可证信息的统计记录、以及开源组件风险评估的扫描检测,可帮助开发团队梳理并透明化软件供应链资产。
此外,全量软件物料清单管理数据库通过软件成分分析、依赖分析、安全漏洞分析、许可证合规分析等方法,深度挖掘组件中潜藏的各类安全漏洞及开源协议风险,通过自动化生成全量软件物料清单的视图信息,快速排查风险资产,提高软件供应链的透明度、安全性和可追溯性。
软件物料清单统计管理模块:展示创建时间维度生成的SBOM的数量统计、SDLC关键阶段生成SBOM的占比;
开源组件信息管理模块:展示开源组件数量统计,组件依赖关系图(父组件和子组件的依赖关系图);
安全漏洞管理模块:展示按照漏洞级别(超危、高危、中危、低危、无风险、未知)的漏洞数量统计和存在漏洞的开源组件按照漏洞级别的数量统计;
许可证风险信息管理模块:展示按照合规性(合规、不合规)的许可证数量统计。
S9:对所述软件开发生命周期检测数据库进行不同阶段的检测,得到软件开发生命周期的检测结果数据集。
所述软件开发生命周期检测数据库能够基于SDLC关键阶段、资产等不同维度对结果进行聚合,生成不同阶段的软件物料清单SBOM。
在步骤S9中,所述软件开发生命周期包括软件设计与开发阶段、软件测试阶段以及软件部署与维护阶段,其中在软件设计与开发阶段的检测包括S91至S95,具体有:
S91:获取在软件设计与开发阶段的待检测源代码;
S92:对所述待检测源代码进行特征提取,得到待检测源代码的常量特征和待检测源代码的图特征;
在步骤S92中,其原理与步骤S21的原理相同。
S93:对所述待检测源代码的常量特征与所述开源组件库进行特征匹配,得到一次匹配结果;
在步骤S93中,针对所述待检测源代码的常量特征而言,根据常量特征所对应的函数名称与开源组件库中的函数名称进行匹配查询,以得到一次匹配结果。
S94:当所述一次匹配结果满足预设的一次匹配要求时,对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行特征匹配,得到二次匹配结果;
在步骤S94中,预设的一次匹配要求为开源组件库中查询到对应函数,则说明开发人员提交的待检测源代码中可能存在开源组件,完成了初步筛查操作。
对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行特征匹配时,先对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行相似度计算,具体有:;
上式中,表示待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值,/>表示开源组件库中代码属性图的图特征,/>表示待检测源代码的图特征,/>表示开源组件库中代码属性图的图特征模长,/>表示待检测源代码的图特征模长。
之后,将待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值与预设阈值进行比对。
S95:当所述二次匹配结果满足预设的二次匹配要求时,根据所述软件物料清单的可视化检测数据库所对应的软件物料清单可视化检测系统输出软件设计与开发阶段的开源组件风险评估结果,并将所述软件设计与开发阶段的开源组件风险评估结果存储于所述软件开发生命周期的检测结果数据集中。
在步骤S95中,预设的二次匹配要求为:当计算得到的相似度值大于或等于预设阈值时,可判断特征匹配成功,并完成了精确筛查。
在步骤S95之后,若从软件开发生命周期进行检测,具体有:
当所述二次匹配结果满足预设的匹配要求时,则检测出对应的开源组件,生成软件设计与开发阶段的第一个SBOM,所述软件设计与开发阶段的第一个SBOM即为软件设计与开发阶段的第一个开源组件风险评估结果。
开发人员根据评估结果,将组件存在漏洞和开源许可证风险进行修复和更新升级;之后,再次将更新后的源代码集成至软件开发生命周期检测数据库中,重新生成软件设计与开发阶段的第二个SBOM;
软件测试阶段:功能、性能和安全测试人员提出软件缺陷,开发人员修复缺陷,并将修复更新的源代码或代码片段集成至软件开发生命周期检测数据库中,通过特征匹配流程,检测到对应的开源组件,生成测试阶段的第一个SBOM,所述测试阶段的第一个SBOM即为测试阶段的第一个开源组件风险评估结果。
开发人员根据评估结果,将组件存在漏洞和开源许可证风险进行修复和更新升级;之后,再次将更新后的源代码集成至软件开发生命周期检测数据库中,重新生成测试阶段的第二个SBOM;
部署与维护阶段,此阶段通过持续更新部署、扫描,通过N次的特征匹配,检测开源组件和开源组件风险评估,开发人员根据评估结果,将组件存在漏洞和开源许可证风险进行修复和更新升级,再次将更新后的源代码集成至软件开发生命周期检测数据库中,重新生成部署与维护阶段的第N+1个SBOM;
根据开发周期SDLC的不同阶段生成的SBOM,分别存储于软件物料清单库中,并将最终生成的第N+1个SBOM提供给用户。
现有技术生成软件物料清单库的方案:
(1)主要是通过获取目标构建攻击Maven项目,并对所述目标构建工具Maven项目执行预设构建工具Maven命令,获得所述目标构建工具Maven项目的组件依赖树信息;基于预设协议对所述组件依赖树信息进行解析,得到所述组件依赖树信息对应的组件依赖数据,并将所述组件依赖数据转化为标准数据格式的软件物料清单;
(2)解析软件的源代码或二进制文件,通过同源分析,匹配对应的开源组件,进一步生成软件物料清单;
(3)确定当前软件中各源码包中各文件的文件信息以及各源码包的包信息;建立每个源码包的包信息与该源码包中各文件的文件信息之间的第一隶属关系;基于至少一个源码包的包信息,建立至少一上级物料的物料信息;基于各源码包中的各文件的文件信息、各源码包的包信息、所述第一隶属关系,以及所述至少一上级物料的物料信息,生成所述软件物料清单库。
现有技术生成软件物料清单库存在以下缺点:(1)在实际开发工作中,开发人员从源代码、配置文件、生成交付物等处提取所需信息按照需求要求的格式形成报告,但手动生成方法,既消耗人力,又容易出现遗漏、拼写错误等问题。(2)由于软件升级变动频繁,导致最终提交报告与实际软件不一致,无法实时有效地追踪安全漏洞风险和许可证合规性。(3)在实际开发工作中,大多数是在构建部署阶段生成软件物料清单,未集成于软件开发生命周期中,无法有效更新识别具体安全风险的开源组件。
在本发明中,软件物料清单库的构建完成后,软件物料清单库能够清楚描述各个开发阶段的开发代码程序中的软件成分,快速洞察安全风险,从源头全面把控开发软件的安全性;进一步,当将本软件物料清单库进行可视化应用时,后期通过使用软件物料清单内容来可视化跟踪所使用的组件,协助开发人员管理依赖项、识别安全问题,即对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库,此时本方法在软件物料清单的可视化检测数据库中进行扫描检测,实现开源组件版本、安全漏洞、许可证合规性的风险评估,开发人员根据评估结果更新修复存在漏洞和不合规的开源组件,将安全风险前置,实现整个软件生命周期中的软件物料清单的统一存储和管理。
实施例2:
如图4所示,本实施例提供了一种软件物料清单库的构建装置,所述装置包括:
获取模块1,用于获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
第一处理模块2,用于对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;
第二处理模块3,用于对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
第三处理模块4,用于对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
第四处理模块5,用于对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
创建模块6,用于对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联。
在本发明所公开的一种实施方法中,在第一处理模块2中,包括:
第一处理子单元21,用于对所述开源组件中的源代码进行特征提取,得到第一数据集;
第二处理子单元22,用于对所述组件信息中的组件名称、组件类型、组件版本以及组件使用方式进行提取,得到第二数据集;
第三处理子单元23,用于根据所述第一数据集和所述第二数据集构建得到开源组件库,并生成第一组件唯一标识。
如图5所示,在本发明所公开的一种实施方法中,在第一处理子单元21中包括:
第一计算单元211,用于对所述开源组件中的源代码进行解析,得到代码常量特征和代码结构特征,所述代码常量特征为函数名称;
第二计算单元212,用于对所述代码结构特征进行结构信息解析,得到代码属性图;
第三计算单元213,用于对所述代码属性图进行属性的遍历提取,得到代码属性图所对应的所有节点和所有边;
第四计算单元214,用于对所有所述节点和所有所述边通过预设的属性模型进行构建,得到代码属性图所对应的属性矩阵;
第五计算单元215,用于对所述属性矩阵进行池化计算,得到代码属性图的图特征;
第六计算单元216,用于对所述代码常量特征和所述代码属性图的图特征进行存储,得到第一数据集。
在本发明所公开的一种实施方法中,在第五计算单元215中,包括:
第一获取单元2151,用于获取所有节点的节点信息;
第一计算子单元2152,用于对所有所述节点的节点信息通过预设的向量生成模型进行节点特征向量映射,得到所有节点的特征向量所构成的特征矩阵;
第二计算子单元2153,用于对所述特征矩阵通过预设的自注意力权重模型进行计算,得到特征矩阵所对应的注意力权重信息;
第三计算子单元2154,用于对所述注意力权重信息通过预设的SUM池化模型进行读取,得到代码属性图的图特征。
在本发明所公开的一种实施方法中,在创建模块6中包括:
第二获取单元61,用于获取所述软件物料清单创建模型中的软件物料清单创建信息和待检测的软件信息;
第一关联单元62,用于将所述第一组件唯一标识与所述开源组件库的内容进行关联,得到第一关联数据集;
第二关联单元63,用于将所述第二组件唯一标识与所述组件依赖关系库的内容进行关联,得到第二关联数据集;
第三关联单元64,用于将所述第三组件唯一标识与所述安全漏洞库的内容进行关联,得到第三关联数据集;
第四关联单元65,用于将所述第四组件唯一标识与所述许可证信息库的内容进行关联,得到第四关联数据集;
构建单元66,用于将所述软件物料清单创建信息、所述待检测的软件信息、所述第一关联数据集、所述第二关联数据集、所述第三关联数据集以及所述第四关系数据集进行构建,得到软件物料清单库。
如图6所示,在本发明所公开的一种实施方法中,在创建模块6之后,还包括:
第五处理模块7,用于对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库;
第六处理模块8,用于根据所述全量软件物料清单管理数据库进行视图构建,得到全量软件物料清单的视图信息;
第七处理模块9,用于对所述软件开发生命周期检测数据库进行不同阶段的检测,得到软件开发生命周期的检测结果数据集。
在本发明所公开的一种实施方法中,在第七处理模块9中,所述软件开发生命周期包括软件设计与开发阶段、软件测试阶段以及软件部署与维护阶段,其中在软件设计与开发阶段的检测包括:
第三获取单元91,用于获取在软件设计与开发阶段的待检测源代码;
特征提取单元92,用于对所述待检测源代码进行特征提取,得到待检测源代码的常量特征和待检测源代码的图特征;
一次匹配单元93,用于对所述待检测源代码的常量特征与所述开源组件库进行特征匹配,得到一次匹配结果;
二次匹配单元94,用于当所述一次匹配结果满足预设的一次匹配要求时,对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行特征匹配,得到二次匹配结果;
输出单元95,用于当所述二次匹配结果满足预设的二次匹配要求时,根据所述软件物料清单的可视化检测数据库所对应的软件物料清单可视化检测系统输出软件设计与开发阶段的开源组件风险评估结果,并将所述软件设计与开发阶段的开源组件风险评估结果存储于所述软件开发生命周期的检测结果数据集中。
需要说明的是,关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
实施例3:
相应于上面的方法实施例,本实施例中还提供了一种软件物料清单库的构建设备,下文描述的一种软件物料清单库的构建设备与上文描述的一种软件物料清单库的构建方法可相互对应参照。
图7是根据示例性实施例示出的一种软件物料清单库的构建设备800的框图。如图7所示,该软件物料清单库的构建设备800可以包括:处理器801,存储器802。该软件物料清单库的构建设备800还可以包括多媒体组件803,I/O接口804,以及通信组件805中的一者或多者。
其中,处理器801用于控制该软件物料清单库的构建设备800的整体操作,以完成上述的软件物料清单库的构建方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该软件物料清单库的构建设备800的操作,这些数据例如可以包括用于在该软件物料清单库的构建设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(StaticRandom Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该软件物料清单库的构建设备800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件805可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,软件物料清单库的构建设备800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal ProcessingDevice,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的软件物料清单库的构建方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的软件物料清单库的构建方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器802,上述程序指令可由软件物料清单库的构建设备800的处理器801执行以完成上述的软件物料清单库的构建方法。
实施例4:
相应于上面的方法实施例,本实施例中还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种软件物料清单库的构建方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的软件物料清单库的构建方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种软件物料清单库的构建方法,其特征在于,包括:
获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;
对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联;
对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库之后,还包括:
对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库;
根据所述全量软件物料清单管理数据库进行视图构建,得到全量软件物料清单的视图信息;
对所述软件开发生命周期检测数据库进行不同阶段的检测,得到软件开发生命周期的检测结果数据集;所述软件开发生命周期包括软件设计与开发阶段、软件测试阶段以及软件部署与维护阶段,其中在软件设计与开发阶段的检测包括:
获取在软件设计与开发阶段的待检测源代码;
对所述待检测源代码进行特征提取,得到待检测源代码的常量特征和待检测源代码的图特征;
对所述待检测源代码的常量特征与所述开源组件库进行特征匹配,得到一次匹配结果;其中在一次匹配中根据常量特征所对应的函数名称与开源组件库中的函数名称进行匹配查询;
当所述一次匹配结果满足预设的一次匹配要求时,对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行特征匹配,得到二次匹配结果;其中预设的一次匹配要求为开源组件库中查询到对应函数,则说明开发人员提交的待检测源代码中可能存在开源组件,完成了初步筛查操作;其中在二次匹配中,先对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行相似度计算,具体有:
;
上式中,表示待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值,/>表示开源组件库中代码属性图的图特征,/>表示待检测源代码的图特征,/>表示开源组件库中代码属性图的图特征模长,/>表示待检测源代码的图特征模长;之后,将待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值与预设阈值进行比对;
当所述二次匹配结果满足预设的二次匹配要求时,根据所述软件物料清单的可视化检测数据库所对应的软件物料清单可视化检测系统输出软件设计与开发阶段的开源组件风险评估结果,并将所述软件设计与开发阶段的开源组件风险评估结果存储于所述软件开发生命周期的检测结果数据集中;其中预设的二次匹配要求为:当计算得到的相似度值大于或等于预设阈值时,可判断特征匹配成功,并完成了精确筛查。
2.根据权利要求1所述的软件物料清单库的构建方法,其特征在于, 对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识,包括:
对所述开源组件中的源代码进行特征提取,得到第一数据集;
对所述组件信息中的组件名称、组件类型、组件版本以及组件使用方式进行提取,得到第二数据集;
根据所述第一数据集和所述第二数据集构建得到开源组件库,并生成第一组件唯一标识。
3.根据权利要求2所述的软件物料清单库的构建方法,其特征在于, 对所述开源组件中的源代码进行特征提取,得到第一数据集,包括:
对所述开源组件中的源代码进行解析,得到代码常量特征和代码结构特征,所述代码常量特征为函数名称;
对所述代码结构特征进行结构信息解析,得到代码属性图;
对所述代码属性图进行属性的遍历提取,得到代码属性图所对应的所有节点和所有边;
对所有所述节点和所有所述边通过预设的属性模型进行构建,得到代码属性图所对应的属性矩阵;
对所述属性矩阵进行池化计算,得到代码属性图的图特征;
对所述代码常量特征和所述代码属性图的图特征进行存储,得到第一数据集。
4.根据权利要求3所述的软件物料清单库的构建方法,其特征在于, 对所述属性矩阵进行池化计算,得到代码属性图的图特征,包括:
获取所有节点的节点信息;
对所有所述节点的节点信息通过预设的向量生成模型进行节点特征向量映射,得到所有节点的特征向量所构成的特征矩阵;
对所述特征矩阵通过预设的自注意力权重模型进行计算,得到特征矩阵所对应的注意力权重信息;
对所述注意力权重信息通过预设的SUM池化模型进行读取,得到代码属性图的图特征。
5.根据权利要求1所述的软件物料清单库的构建方法,其特征在于,对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联,包括:
获取所述软件物料清单创建模型中的软件物料清单创建信息和待检测的软件信息;
将所述第一组件唯一标识与所述开源组件库的内容进行关联,得到第一关联数据集;
将所述第二组件唯一标识与所述组件依赖关系库的内容进行关联,得到第二关联数据集;
将所述第三组件唯一标识与所述安全漏洞库的内容进行关联,得到第三关联数据集;
将所述第四组件唯一标识与所述许可证信息库的内容进行关联,得到第四关联数据集;
将所述软件物料清单创建信息、所述待检测的软件信息、所述第一关联数据集、所述第二关联数据集、所述第三关联数据集以及所述第四关联数据集进行构建,得到软件物料清单库。
6.一种软件物料清单库的构建装置,其特征在于,使用了权利要求1至5任意一项所述的软件物料清单库的构建方法,包括:
获取模块,用于获取开源组件中的源代码、组件信息、安全漏洞信息和许可证信息;
第一处理模块,用于对所述源代码和所述组件信息进行特征提取,得到开源组件库,并生成第一组件唯一标识;
第二处理模块,用于对所述组件信息进行组件依赖关系提取,得到组件依赖关系库,并生成第二组件唯一标识;
第三处理模块,用于对所述安全漏洞信息进行漏洞内容提取,得到安全漏洞库,并生成第三组件唯一标识;
第四处理模块,用于对所述许可证信息进行许可证内容提取,得到许可证信息库,并生成第四组件唯一标识;
创建模块,用于对所述开源组件库、所述组件依赖关系库、所述安全漏洞库和所述许可证信息库通过预设的软件物料清单创建模型进行构建,得到软件物料清单库,所述软件物料清单库与不同的组件唯一标识关联;
在创建模块之后,还包括:
第五处理模块,用于对所述软件物料清单库通过预设的软件物料可视化模型进行处理,得到软件物料清单的可视化检测数据库,所述软件物料清单的可视化检测数据库包括全量软件物料清单管理数据库和软件开发生命周期检测数据库;
第六处理模块,用于根据所述全量软件物料清单管理数据库进行视图构建,得到全量软件物料清单的视图信息;
第七处理模块,用于对所述软件开发生命周期检测数据库进行不同阶段的检测,得到软件开发生命周期的检测结果数据集;在第七处理模块中,所述软件开发生命周期包括软件设计与开发阶段、软件测试阶段以及软件部署与维护阶段,其中在软件设计与开发阶段的检测包括:
第三获取单元,用于获取在软件设计与开发阶段的待检测源代码;
特征提取单元,用于对所述待检测源代码进行特征提取,得到待检测源代码的常量特征和待检测源代码的图特征;
一次匹配单元,用于对所述待检测源代码的常量特征与所述开源组件库进行特征匹配,得到一次匹配结果;其中在一次匹配中根据常量特征所对应的函数名称与开源组件库中的函数名称进行匹配查询;
二次匹配单元,用于当所述一次匹配结果满足预设的一次匹配要求时,对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行特征匹配,得到二次匹配结果;其中预设的一次匹配要求为开源组件库中查询到对应函数,则说明开发人员提交的待检测源代码中可能存在开源组件,完成了初步筛查操作;其中在二次匹配中,先对所述待检测源代码的图特征与所述开源组件库中代码属性图的图特征进行相似度计算,具体有:
;
上式中,表示待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值,/>表示开源组件库中代码属性图的图特征,/>表示待检测源代码的图特征,/>表示开源组件库中代码属性图的图特征模长,/>表示待检测源代码的图特征模长;之后,将待检测源代码的图特征与所述开源组件库中代码属性图的图特征之间的相似度值与预设阈值进行比对;
输出单元,用于当所述二次匹配结果满足预设的二次匹配要求时,根据所述软件物料清单的可视化检测数据库所对应的软件物料清单可视化检测系统输出软件设计与开发阶段的开源组件风险评估结果,并将所述软件设计与开发阶段的开源组件风险评估结果存储于所述软件开发生命周期的检测结果数据集中;其中预设的二次匹配要求为:当计算得到的相似度值大于或等于预设阈值时,可判断特征匹配成功,并完成了精确筛查。
7.一种软件物料清单库的构建设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述软件物料清单库的构建方法步骤。
8.一种可读介质,其特征在于:所述可读介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述软件物料清单库的构建方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311229339.4A CN116974619B (zh) | 2023-09-22 | 2023-09-22 | 一种软件物料清单库的构建方法、装置、设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311229339.4A CN116974619B (zh) | 2023-09-22 | 2023-09-22 | 一种软件物料清单库的构建方法、装置、设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116974619A CN116974619A (zh) | 2023-10-31 |
CN116974619B true CN116974619B (zh) | 2024-01-12 |
Family
ID=88475325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311229339.4A Active CN116974619B (zh) | 2023-09-22 | 2023-09-22 | 一种软件物料清单库的构建方法、装置、设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116974619B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716749A (zh) * | 2019-09-03 | 2020-01-21 | 东南大学 | 一种基于功能相似度匹配的代码搜索方法 |
CN111259394A (zh) * | 2020-01-15 | 2020-06-09 | 中山大学 | 一种基于图神经网络的细粒度源代码漏洞检测方法 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN112800172A (zh) * | 2021-02-07 | 2021-05-14 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
CN113177001A (zh) * | 2021-05-24 | 2021-07-27 | 深圳前海微众银行股份有限公司 | 一种开源组件的漏洞检测方法及装置 |
CN113901484A (zh) * | 2021-11-19 | 2022-01-07 | 国家电网有限公司信息通信分公司 | 一种基于风险的漏洞管理方法和装置 |
CN115455417A (zh) * | 2022-09-22 | 2022-12-09 | 中国电子科技网络信息安全有限公司 | 一种基于属性图的同源性代码检测方法及系统 |
CN115454496A (zh) * | 2022-08-10 | 2022-12-09 | 深圳开源互联网安全技术有限公司 | 一种软件物料清单的生成方法和装置 |
CN115618363A (zh) * | 2022-11-22 | 2023-01-17 | 北京邮电大学 | 漏洞路径的挖掘方法及相关设备 |
CN116756710A (zh) * | 2023-08-16 | 2023-09-15 | 深圳开源互联网安全技术有限公司 | 基于特征标记追踪技术的开源治理方法、系统及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11374961B2 (en) * | 2019-07-24 | 2022-06-28 | Reliable Energy Analytics, LLC | Methods for verification of software object authenticity and integrity |
-
2023
- 2023-09-22 CN CN202311229339.4A patent/CN116974619B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716749A (zh) * | 2019-09-03 | 2020-01-21 | 东南大学 | 一种基于功能相似度匹配的代码搜索方法 |
CN111259394A (zh) * | 2020-01-15 | 2020-06-09 | 中山大学 | 一种基于图神经网络的细粒度源代码漏洞检测方法 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN112800172A (zh) * | 2021-02-07 | 2021-05-14 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
CN113177001A (zh) * | 2021-05-24 | 2021-07-27 | 深圳前海微众银行股份有限公司 | 一种开源组件的漏洞检测方法及装置 |
CN113901484A (zh) * | 2021-11-19 | 2022-01-07 | 国家电网有限公司信息通信分公司 | 一种基于风险的漏洞管理方法和装置 |
CN115454496A (zh) * | 2022-08-10 | 2022-12-09 | 深圳开源互联网安全技术有限公司 | 一种软件物料清单的生成方法和装置 |
CN115455417A (zh) * | 2022-09-22 | 2022-12-09 | 中国电子科技网络信息安全有限公司 | 一种基于属性图的同源性代码检测方法及系统 |
CN115618363A (zh) * | 2022-11-22 | 2023-01-17 | 北京邮电大学 | 漏洞路径的挖掘方法及相关设备 |
CN116756710A (zh) * | 2023-08-16 | 2023-09-15 | 深圳开源互联网安全技术有限公司 | 基于特征标记追踪技术的开源治理方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116974619A (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9330095B2 (en) | Method and system for matching unknown software component to known software component | |
González-Barahona et al. | On the reproducibility of empirical software engineering studies based on data retrieved from development repositories | |
Richardson et al. | EasyVVUQ: a library for verification, validation and uncertainty quantification in high performance computing | |
Kamimura et al. | Extracting candidates of microservices from monolithic application code | |
Dragan et al. | Using stereotypes to help characterize commits | |
Dintzner et al. | FEVER: An approach to analyze feature-oriented changes and artefact co-evolution in highly configurable systems | |
Porubsky et al. | Best practices for making reproducible biochemical models | |
CN111258614B (zh) | 项目第三方库升级异常检测方法及系统、设备及存储介质 | |
Mayerhofer et al. | A model-driven engineering workbench for CAEX supporting language customization and evolution | |
Nordvik et al. | Reliability validation for file system interpretation | |
Kirschner et al. | Automatic derivation of vulnerability models for software architectures | |
CN110659063A (zh) | 软件项目重构方法、装置、计算机装置及存储介质 | |
Issa et al. | Automated requirements engineering: use case patterns-driven approach | |
Black et al. | Evolved similarity techniques in malware analysis | |
Márquez et al. | Vulnerability impact analysis in software project dependencies based on Satisfiability Modulo Theories (SMT) | |
CN116974619B (zh) | 一种软件物料清单库的构建方法、装置、设备及可读介质 | |
Alhwikem et al. | A systematic approach for designing mutation operators for MDE languages | |
CN108182071A (zh) | 一种面向软件升级的配置错误检测方法 | |
Becheler et al. | The quetzal coalescence template library: a C++ programmers resource for integrating distributional, demographic and coalescent models | |
CN116484025A (zh) | 漏洞知识图谱构建方法、评估方法、设备及存储介质 | |
Tarwani et al. | Predicting maintainability of open source software using gene expression programming and bad smells | |
Buchgeher et al. | A platform for the automated provisioning of architecture information for large-scale service-oriented software systems | |
Ufuktepe et al. | Estimating software robustness in relation to input validation vulnerabilities using Bayesian networks | |
Liu et al. | A method for identifying references between projects in github | |
Abushark et al. | A framework for automatically ensuring the conformance of agent designs |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |