CN116305137B - 一种面向开源项目的安全性自动化评估方法及装置 - Google Patents

一种面向开源项目的安全性自动化评估方法及装置 Download PDF

Info

Publication number
CN116305137B
CN116305137B CN202310039038.9A CN202310039038A CN116305137B CN 116305137 B CN116305137 B CN 116305137B CN 202310039038 A CN202310039038 A CN 202310039038A CN 116305137 B CN116305137 B CN 116305137B
Authority
CN
China
Prior art keywords
open source
historical
evaluation index
score
vulnerabilities
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
Application number
CN202310039038.9A
Other languages
English (en)
Other versions
CN116305137A (zh
Inventor
黄诚
王子岩
孙思琦
杨振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN202310039038.9A priority Critical patent/CN116305137B/zh
Publication of CN116305137A publication Critical patent/CN116305137A/zh
Application granted granted Critical
Publication of CN116305137B publication Critical patent/CN116305137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向开源项目的安全性自动化评估方法及装置,所述方法包括:收集开源项目的第一评价指标值;收集开源项目的第二评价指标值;收集开源项目的第三评价指标值;计算第一评分;计算第二评分;计算第三评分;将第一评分、第二评分和第三评分输入安全量化评估模型,得到表征开源项目安全性的综合评分;第一评价指标值为基于历史漏洞维度的使用风险评价指标值,第二评价指标值为基于开源社区记录数据的开源社区规模及活跃度评价指标值,第三评价指标值为基于安全最佳实践测评结果维度的安全最佳实践评价指标值。通过开源项目元数据的收集、评分化以及通过安全量化评估模型进行综合评分,从而实现了对开源项目安全性的自动量化评估。

Description

一种面向开源项目的安全性自动化评估方法及装置
技术领域
本发明属于软件供应链安全评价技术领域,具体涉及一种面向开源项目的安全性自动化评估方法及装置。
背景技术
开源项目指的是源代码免费开放的一类软件,使用者可以在其许可证规定的范围内对其进行查阅、使用、修改。开源项目通常由个人或组织进行发起,发布在开源社区中,由社区人员共同对其进行开发。开源项目由于其源代码公开、免费使用的特点,受到了广大开发者的青睐,近年来,越来越多的软件开发者选择开源项目作为自己软件的一部分组件。选择开源项目作为软件组件可以提高开发效率,缩短开发周期,但是也会带来安全隐患。其中的一个安全隐患在于可能遭受供应链攻击。供应链攻击指的是攻击者不直接对软件主体的漏洞进行攻击,而是通过对软件中集成的组件中含有的漏洞进行攻击。因此,为了提防供应链攻击,确保软件组件安全性,对开源项目的安全性进行审查是十分重要的。
当前的软件安全评估模型是对软件的安全性进行评估的有利工具,可以通过分析软件安全性特征,达到评估软件安全性的目的。现有的软件安全评估模型的一般做法是通过获取软件代码层面的特征,并对其进行分析,以此评估软件的安全性特征。但是,现有的软件安全评估模型在评价开源软件安全性上存在诸多缺陷。首先,现有的安全性评估方法在通用性上有所欠缺,通常一种安全性评估方法只适用于由一种或一类编程语言所编写的软件。其次,现有的安全性评估方法难以实现自动化,通常依赖于大量的人工分析,难以自动化地对软件的安全性进行评估,并且基于人工分析的安全性评估结果难以客观且真实的反应软件安全性。再者,面对大量的评估指标,难以客观地给出每一个指标的权重。最后,开源项目所面临的攻击面与闭源软件有所区别,开源项目所面临的不安全要素除了不安全代码所带来的脆弱性以外,还面临着不可信贡献者引入恶意代码的风险,现有的软件安全评估模型未能将这类指标囊括进其指标体系。
开源项目元数据指的是用于描述开源项目信息的数据,包括开源项目的项目名、创建时间、贡献者数量、相关漏洞信息、是否遵循最佳安全实践等。目前,相关研究已经证实使用开源项目的元数据预测开源项目的安全性具备可行性,例如:通过对开源项目元数据进行分析后获悉到开源项目的开发周期、开发人员数量、漏洞数量、漏洞修复时长以及开源项目是否为符合安全最佳实践的软件等信息,若一个开源项目的开发周期长、开发人员多、漏洞数量少、漏洞修复及时、符合安全最佳实践,那么可以被认为是更安全的。因此,基于开源项目元数据,面向开源项目的自动化且客观的安全性评估方案亟待提出,同时方案还需确保对各种编程语言的开源项目的通用性。
发明内容
有鉴于此,本发明的目的在于克服现有技术的一项或多项不足,提供一种面向开源项目的安全性自动化评估方法及装置。
本发明的目的是通过以下技术方案来实现的:
第一方面
本发明的第一方面提供了一种面向开源项目的安全性自动化评估方法,包括如下步骤:
S100.收集待评估的开源项目的多个第一评价指标值,所述第一评价指标值为开源项目的历史漏洞特征数据,所述历史漏洞特征数据为可用于评价该开源项目使用风险的历史漏洞关联数据;
S200.收集待评估的开源项目的多个第二评价指标值,所述第二评价指标值为开源项目在开源社区上的记录数据,所述记录数据为可用于评价该开源项目使用风险的记录数据;
S300.收集待评估的开源项目的多个第三评价指标值,所述第三评价指标值为以专家知识为基础对获取到的开源项目的安全最佳实践测评结果进行数值化的结果;
S400.基于每个第一评价指标值自身对应的第一预设权重值,对所有第一评价指标值进行加权求和,加权求和后生成第一评分;
S500.将所有第二评价指标值输入预先训练好的机器学习模型,生成预测值,然后根据预测值确定第二评分,其中每个预测值均具有自己对应的第二评分,所述预测值表征第二评价指标值反映出的开源项目的预期使用风险等级;
S600.基于每个第三评价指标值自身对应的第二预设权重值,对所有第三评价指标值进行加权求和,加权求和后生成第三评分;
S700.将第一评分、第二评分和第三评分输入预先训练好的安全量化评估模型,生成表征开源项目安全状况优劣的综合得分。
优选地,所述S700中,所述安全量化评估模型的数学表达式为:其中,C表示第二评分,R表示第一评分,P表示第三评分,S表示开源项目的综合得分,α表示第三预设权重值,β表示第四预设权重值。
优选地,所述S100具体为:
S101.以待评估的开源项目的组织名和项目名为关键字,在NVD漏洞数据库中检索所述开源项目的历史漏洞,并记录所述历史漏洞的CVE编号;
S102.统计所有所述历史漏洞的条目数量,并将历史漏洞的条目数量作为历史漏洞数量,所述历史漏洞数量为历史漏洞的第一个特征数据;
S103.调用NVD漏洞数据库提供的官方API接口,基于每个CVE编号获取该CVE编号对应历史漏洞的CVSS漏洞严重性评分,取所有CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为历史漏洞的平均严重性评分,所述历史漏洞的平均严重性评分为历史漏洞的第二个特征数据;
S104.关联每个历史漏洞的链接信息,并判断链接信息中是否包含该历史漏洞的修复信息,若是,则确定该历史漏洞已被修复,否则确定该历史漏洞未修复,并统计未修复的历史漏洞数量,所述未修复的历史漏洞数量为历史漏洞的第三个特征数据;
S105.调用NVD漏洞数据库提供的官方API接口,基于每个未修复历史漏洞的CVE编号获取该未修复历史漏洞的CVSS漏洞严重性评分,取所有未修复历史漏洞的CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为未修复历史漏洞的平均严重性评分,所述未修复历史漏洞的平均严重性评分为历史漏洞的第四个特征数据;
S106.计算每个已修复的历史漏洞的修复时间和该已修复的历史漏洞的发布时间之间的差值,并取所有所述差值的算术平均值,将该算术平均值作为已修复历史漏洞的平均修复时间,所述已修复历史漏洞的平均修复时间为历史漏洞的第五个特征数据;
S107.将所述历史漏洞数量、所述历史漏洞的平均严重性评分、所述未修复的历史漏洞数量、所述未修复历史漏洞的平均严重性评分和所述已修复历史漏洞的平均修复时间分别作为各个第一评价指标值。
优选地,所述S200具体为:
使用网络爬虫和/或调用待评估的开源项目所在开源社区官方提供的API接口采集所述开源项目在开源社区上的多个记录数据,并将各个记录数据分别作为各个第二评价指标值,所述多个记录数据包括所述开源项目的创建时间、star数量、fork数量、依赖数量、被依赖次数、提交数量、提交频率、issue数量、关闭的issue数量、Pull Request数量、评论数量、自上次更新的间隔时间、贡献者人数、外部贡献者占比、涉及的组织数量和开发者能力指数。
优选地,所述S300具体为:
S301.使用网络爬虫、和/或调用待评估的开源项目所在开源社区官方提供的API接口、和/或扫描所述开源项目的项目文件的方式采集所述开源项目的多个安全最佳实践测评结果,所述多个安全最佳实践测评结果包括所述开源项目的项目文件中是否含有可执行文件、是否启用分支保护功能、融合Pull Request前是否经过测试、是否经过CII最佳实践检验、代码提交是否经过审查、在持续集成过程中是否含有危险的工作流、是否配置有依赖更新工具、是否经过模糊测试、是否处于维护状态、是否打包发布、代码是否经过静态分析、是否配有安全策略、发布的版本是否含有签名和工作流令牌是否配置为只读的判断结果;
S302.以专家知识为基础,对采集到的每个安全最佳实践测评结果分别进行数值化,并将各个数值化后的安全最佳实践测评结果分别作为各个第三评价指标值;
其中,所述专家知识为依据专家经验设定的评分函数,所述评分函数包括线性评分函数、非线性评分函数和二元评分函数。
优选地,所述S400中,所述第一预设权重值根据对应的第一评价指标值对开源项目安全性的威胁程度进行确定,不同的威胁程度分配不同的第一预设权重值;
所述S400具体为:
S401.对每个第一评价指标值分别进行归一化;
S402.基于每个第一评价指标值自身对应的第一预设权重值,对所有归一化后的第一评价指标值进行加权求和,加权求和后得到第一评分。
优选地,所述机器学习模型包括逻辑回归分类模型、随机森林分类模型和支持向量机分类模型;
所述S500具体为:
S501.对每个第二评价指标值进行归一化;
S502.将归一化后的所有第二评价指标值输入预先训练好的机器学习模型,由机器学习模型对第二评价指标值反映出的开源项目的预期使用风险等级进行预测,预测后生成预测值;
S503.基于第一映射关系,根据预测值确定第二评分;
其中,所述第一映射关系为预设的各个预测值与各个第二评分的对应关系。
优选地,所述S600中,所述第二预设权重值根据未遵循安全最佳实践的不同程度给开源项目带来的不同安全风险等级进行确定,其中未遵循安全最佳实践的不同程度值通过第二预设权重值对应的第三评价指标值的大小进行表征。
优选地,所述S102中,在统计所有所述历史漏洞的条目之前,采集每个所述历史漏洞的描述信息和链接信息;若采用正则匹配表达式确定出该历史漏洞的描述信息文本中未包含所述开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除;若采用正则匹配表达式确定出该历史漏洞的链接信息文本中未包含所述开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除。
本发明第一方面具有的有益效果为:
(1)、通过检索NVD漏洞数据库、网络爬虫、调用待评估的开源项目所在开源社区官方公布的API接口等方式对可用于评价开源项目安全性能的多维度元数据进行采集,基于多维度的元数据得到第一评价指标值(通过开源项目的历史漏洞维度考量出的使用风险评价指标值)、第二评价指标值(通过开源项目在开源社区的记录数据维度考量出的开源社区规模及活跃度评价指标值)和第三评价指标值(通过开源项目的安全最佳实践测评结果维度考量出的安全最佳实践评价指标值),并计算出第一评价指标值对应的第一评分、第二评价指标值对应的第二评分和第三评价指标值对应的第三评分,然后构建安全量化评估模型对第一评分、第二评分和第三评分进行综合评价,最终得到综合评价后的表征开源项目安全状况优劣的综合评分,据此结合开源项目的多维度元数据实现了对开源项目安全性的自动量化评估,高效快速,并且完全自动化的实现克服了基于人工分析的安全性评估结果难以客观且真实的反应开源项目安全性能的弊端;
此外,开源社区的维护者基于集成该方法的模型或工具可进行开源项目的安全性评估,从而感知开源社区的安全态势;开源项目的使用者基于集成该方法的模型或工具可进行待选取的目标开源项目的安全性评估,从而获取到直观的参考,便于进行同类开源项目的选取;开源项目的开发者基于集成该方法的模型或工具可进行开源项目的安全性评估,然后基于安全性评估结果确定开源项目的安全性强化方案;
综上所述,通过集成该方法的模型或工具在各方的使用,从整体上提升了开源社区的安全性。
(2)、基于开源社区记录数据的第二评价指标值的选取过程对开源项目采用何种编程语言并不做限制,适用于所有编程语言的开源项目,因此本发明第一方面实现的安全性评估方法还具备了极强的通用性,能够一致地对所有开源项目进行评估。
(3)、若开源项目遵从安全最佳实践,那么能够在相当程度上降低外部引入风险的可能性,所以在考评开源项目是否存在被恶意贡献者插入了恶意代码的可能性时,可以通过考评开源项目的安全最佳实践测评结果来实现,因此本发明第一方面实现的安全性评估方法引入了第三评价指标值,弥补了现有的软件安全性评估模型无法对是否存在被恶意贡献者插入了恶意代码进行考评的空白,从而提高了开源项目安全性评估结果的准确性和全面性。
(4)、本发明第一方面构建的安全量化评估模型的数学表达式中包括两部分,第一部分为第一评分和第二评分结合的加权表达式,第二部分为第三评分的加权表达式,该数学表达式充分考虑了专家经验知识,客观地将各个评价指标对评价开源项目安全状况所起的作用反映在了该数学表达式中,进而提升了开源项目安全性评估结果的准确性。
第二方面
本发明的第二方面提供了一种面向开源项目的安全性自动化评估装置,所述装置包括存储器和处理器,所述存储器内保存有本发明第一方面所述的一种面向开源项目的安全性自动化评估方法,所述处理器用于调用存储器内保存的所述方法进行开源项目的安全性自动评估。
本发明的第二方面带来与第一方面相同的有益效果,在此不再赘述。
附图说明
图1为面向开源项目的安全性自动化评估方法的一种流程图。
具体实施方式
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种面向开源项目的安全性自动化评估方法,用于以自动化的方式评估开源项目的安全性。
参阅图1,面向开源项目的安全性自动化评估方法包括下述步骤:
S100.收集待评估的开源项目的多个第一评价指标值,第一评价指标值为开源项目的历史漏洞特征数据,历史漏洞特征数据为可用于评价该开源项目使用风险的历史漏洞关联数据。其中,第一评价指标值为本方法引入的第一维度的评价指标值,也称为基于历史漏洞维度的使用风险评价指标值。
S200.收集待评估的开源项目的多个第二评价指标值,第二评价指标值为开源项目在开源社区上的记录数据,记录数据为可用于评价该开源项目使用风险的记录数据。其中,第二评价指标值为本方法引入的第二维度的评价指标值,也称为基于开源社区记录数据维度的开源社区规模及活跃度评价指标值。
S300.收集待评估的开源项目的多个第三评价指标值,第三评价指标值为以专家知识为基础数对获取到的开源项目的安全最佳实践测评结果进行数值化的结果。其中,第三评价指标值为本方法引入的第三维度的评价指标值,也称为安全最佳实践指标值。
S400.基于每个第一评价指标值自身对应的第一预设权重值,对所有第一评价指标值进行加权求和,加权求和后生成第一评分。
S500.将所有第二评价指标值输入预先训练好的机器学习模型,生成预测值,然后根据预测值确定第二评分,其中每个预测值均具有自己对应的第二评分,预测值表征第二评价指标值反映出的开源项目的预期使用风险等级;
S600.基于每个第三评价指标值自身对应的第二预设权重值,对所有第三评价指标值进行加权求和,加权求和后生成第三评分;
S700.将第一评分、第二评分和第三评分输入预先训练好的安全量化评估模型,生成表征开源项目安全状况优劣的综合得分。
可选的,步骤S100的一种具体实施步骤为:
子步骤S101.以待评估的开源项目的“{组织名}/{项目名}”为关键字,在NVD漏洞数据库中检索待评估开源项目的历史漏洞,并记录历史漏洞的CVE编号。
子步骤S102.统计所有检索到的待评估开源项目的历史漏洞的条目数量,历史漏洞的条目数量即为历史漏洞数量,历史漏洞数量为历史漏洞的第一个特征数据。
此外,为了减少检索结果的误报,在NVD漏洞数据库中检索到待评估开源项目的历史漏洞之后,采用正则匹配的方式筛选出与待评估开源项目不相关的漏洞记录,然后在移除这些不相关的漏洞条目后再进行历史漏洞数量的统计。正则匹配方式移除不相关漏洞条目的具体实施过程为:采集每个历史漏洞的描述信息和链接信息;若采用正则匹配表达式确定出该历史漏洞的描述信息文本中未包含开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除;若采用正则匹配表达式确定出该历史漏洞的链接信息文本中未包含开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除。
子步骤S103.调用NVD漏洞数据库提供的官方API接口,基于每个CVE编号获取该CVE编号对应历史漏洞的CVSS漏洞严重性评分,取所有CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为历史漏洞的平均严重性评分,历史漏洞的平均严重性评分为历史漏洞的第二个特征数据。
子步骤S104.关联每个历史漏洞的链接信息,并判断链接信息中是否包含该历史漏洞的修复信息,若是,则确定该历史漏洞已被修复,否则确定该历史漏洞未修复,并统计未修复的历史漏洞数量,未修复的历史漏洞数量为历史漏洞的第三个特征数据。其中,因为使用Git作为版本控制工具的开源项目通常使用commit、issue、release、Pull Request和安全建议的方式发布漏洞修复信息,因此将commit、issue、release、Pull Request和安全建议作为历史漏洞的修复信息。
子步骤S105.调用NVD漏洞数据库提供的官方API接口,基于每个未修复历史漏洞的CVE编号获取该未修复历史漏洞的CVSS漏洞严重性评分,取所有未修复历史漏洞的CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为未修复历史漏洞的平均严重性评分,未修复历史漏洞的平均严重性评分为历史漏洞的第四个特征数据。
子步骤S106.计算每个已修复的历史漏洞的修复时间和该已修复的历史漏洞的发布时间之间的差值,并取所有差值的算术平均值,将该算术平均值作为已修复历史漏洞的平均修复时间,已修复历史漏洞的平均修复时间为历史漏洞的第五个特征数据。作为一种优选,选用历史漏洞的CVE编号发布时间、历史漏洞关联issue的提交时间、历史漏洞报告发布时间中的最早时间作为该历史漏洞的发布时间;选用commit时间、issue关闭时间、release发布时间、安全建议的发布时间、Pull Request提交时间中的最早时间作为该历史漏洞的修复时间。
子步骤S107.将历史漏洞数量、历史漏洞的平均严重性评分、未修复的历史漏洞数量、未修复历史漏洞的平均严重性评分和已修复历史漏洞的平均修复时间分别作为各个第一评价指标值。
可选的,步骤S200的一种具体实施步骤为:
使用网络爬虫和/或调用待评估的开源项目所在开源社区官方提供的API接口采集开源项目在开源社区上的多个记录数据,这些记录数据均对开源社区的一般用户可见,并将各个记录数据分别作为各个第二评价指标值。多个记录数据包括开源项目创建时间、开源项目star数量(收藏数量)、开源项目fork数量(复制数量)、开源项目依赖数量、开源项目被依赖次数、开源项目提交数量、开源项目提交频率、开源项目issue数量、开源项目关闭的issue数量、开源项目Pull Request数量、开源项目评论数量、开源项目自上次更新的间隔时间、开源项目贡献者人数、开源项目外部贡献者占比、开源项目涉及的组织数量以及开源项目的开发者能力指数。其中,开发者能力指数的计算方法为:计算开发者所有贡献值的平均follower数量,将该平均follower数量作为开发者能力指数。
可选的,步骤S300的一种具体实施步骤为:
子步骤S301.使用网络爬虫、和/或调用待评估的开源项目所在开源社区官方提供的API接口、和/或扫描开源项目的项目文件的方式采集开源项目的多个安全最佳实践测评结果,多个安全最佳实践测评结果包括开源项目的项目文件中是否含有可执行文件的判断结果、是否启用分支保护功能的判断结果、融合Pull Request前是否经过测试的判断结果、是否经过CII最佳实践检验的判断结果、代码提交是否经过审查的判断结果、在持续集成过程中是否含有危险的工作流的判断结果、是否配置有依赖更新工具的判断结果、是否经过模糊测试的判断结果、是否处于维护状态的判断结果、是否打包发布的判断结果、代码是否经过静态分析的判断结果、是否配有安全策略的判断结果、发布的版本是否含有签名的判断结果以及工作流令牌是否配置为只读的判断结果。其中,对于通过扫描项目文件方式获取的安全最佳实践测评结果而言,通过遍历开源项目代码仓库,用正则匹配的方式匹配以“yaml”、“yml”等为后缀的项目配置文件,以及“security.md”等项目安全性说明文件,遍历匹配出的以“yaml”、“yml”等为后缀的项目配置文件和“security.md”等项目安全性说明文件,从而读取到开源项目的安全性相关配置信息,最终得到相关的安全最佳实践测评结果。
子步骤S302.以专家知识为基础,对采集到的每个安全最佳实践测评结果分别进行数值化,并将各个数值化后的安全最佳实践测评结果分别作为各个第三评价指标值。其中,此步骤用到的专家知识为:依据专家经验设定的评分函数,评分函数包括线性评分函数、非线性评分函数和二元评分函数。
其中,线性评分函数指的是安全最佳实践测评结果对应得分的增长是线性的,多项安全最佳实践测评结果中,每不满足一项,扣除固定的分数,全部满足为满分,全部不满足为零分,部分满足的得分分布在满分和零分之间。以开源项目融合Pull Request前是否经过测试这个项的得分为例进行说明:若过去一段时间内有Pull Request,则得分为“经过测试后融合的Pull Request数量除以所有融合的Pull Request数量后再乘10”;若过去一段时间内没有Pull Request,则得分为10分。
非线性评分函数指的是得分的增长不是线性的。以开源项目是否满足CII最佳实践检验这个项的得分为例进行说明:根据开源项目通过CII最佳实践检验的程度,分别赋予0分,2分,5分,7分以及10分。
二元评分函数指的是得分只有两种,若满足安全性需求,则得满分,若不满足,则得零分。以开源项目在持续集成过程中是否含有危险的工作流这个项的得分为例,若含有危险工作流,赋0分,否则赋10分。
可选的,步骤S400的一种具体实施步骤为:
子步骤S401.通过第一公式对每个第一评价指标值分别进行归一化。特别的,第一公式为Si表示第一评价指标值,Ti表示为该第一评价指标值所预先设立的最大值,Si’表示该第一评价指标值的归一化值。
子步骤S402.基于每个第一评价指标值自身对应的第一预设权重值,通过第二公式对所有归一化后的第一评价指标值进行加权求和,加权求和后得到第一评分。特别的,第二公式为ωi表示该第一评价指标值Si对应的第一预设权重值,N表示第一评价指标值的总个数,R表示第一评分。
作为一种优选,第一预设权重值根据对应的第一评价指标值对开源项目安全性的威胁程度进行确定,不同的威胁程度分配不同的第一预设权重值,基于该确定规则得到的各个第一预设权重值如表一所示。
表一
此外,在S402得到第一评分后,基于第二映射关系和各个第一评分确定基于历史漏洞维度得到的开源项目的预期使用风险等级,其中第二映射关系如表二所示。
表二
可选的,步骤S500的一种具体实施步骤为:
子步骤S501.通过第三公式对每个第二评价指标值进行归一化。特别的,第三公式为其中Ui表示第二评价指标值,Yi表示为该第二评价指标值所预先设立的最大值,Ui′表示该第二评价指标值的归一化值,此种归一化方法的最大优点为考虑到了第二评价指标值的边际效应:在第二评价指标值较低的情况下,第二评价指标值的提升明显的反映到开源项目安全性的提升上;当第二评价指标值上升时,第二评价指标值的上升给开源项目安全性带来的提升效果是逐渐下降的。
子步骤S502.将归一化后的所有第二评价指标值输入预先训练好的机器学习模型,由机器学习模型对第二评价指标值反映出的开源项目的预期使用风险等级进行预测,预测后生成预测值。特别的,机器学习模型为由逻辑回归分类模型、随机森林分类模型和支持向量机分类模型组成的集成学习模型。所述机器学习模型基于下述原理设定:使用规模越大的开源项目,越有可能披露出高危漏洞。此外,机器学习模型的训练采用普通实施例中的训练过程。
子步骤S503.基于第一映射关系,根据预测值确定第二评分,其中,第一映射关系为预设的各个预测值与各个第二评分的对应关系。第一映射关系如表三所示。
表三
可选的,步骤S600中,第二预设权重值的确定规则为:根据未遵循安全最佳实践的不同程度给开源项目带来的不同安全风险等级进行确定,其中未遵循安全最佳实践的不同程度通过第二预设权重值对应的第三评价指标值的大小进行表征。具体的,未遵循安全最佳实践的不同程度给开源项目带来的不同安全风险等级分别为低风险等级、中风险等级、高风险等级以及严重等级;根据四类安全风险等级分配对应的第二预设权重值;确定第三评价指标值所表征的未遵循安全最佳实践的程度;确定此种程度给开源项目带来的安全风险等级;根据确定出的安全风险等级找到对应的第二预设权重值,从而建立了第三评价指标值与第二预设权重值之间的对应关系。四类安全风险等级分配的第二预设权重值如表四所示。
表四
基于上述第二预设权重值的确定,步骤S600的一种具体实施步骤为:
子步骤S601.基于每个第三评价指标值自身对应的第二预设权重值,通过第四公式对所有第三评价指标值进行加权求和,加权求和后生成第三评分。特别的,第四公式为Qi表示第三评价指标值,ωi′表示该第三评价指标值对应的第二预设权重值,J表示第三评价指标值的个数,P表示第三评分。此外,当无法获取到某项第三评价指标值时,在进行第三评分计算时忽略该项。
可选的,步骤S700中,安全量化评估模型的数学表达式为:其中,C表示第二评分,R表示第一评分,P表示第三评分,S表示开源项目的综合得分,α表示第三预设权重值,β表示第四预设权重值。得到开源项目的综合得分后,根据综合得分确定开源项目的安全状况,其中各个综合得分与各种安全状况之间的对应关系如表五所示。
可选的,第三预设权重值和第四预设权重值的确定过程为:先人工地对开源项目的一批样本(输入安全量化评估模型的样本)进行安全状况评估,然后调整第三预设权重值和第四预设权重值,使得大多数样本的综合得分均落在对应的综合得分区间内,从而确定出第三预设权重值和第四预设权重值的最终数值大小。
表五
综合得分 安全状况
[0,0.4)
[0.4,0.6)
[0.6,0.8)
[0.8,1.0]
在面向开源社区维护者时,开源社区维护者可使用集成有本实施例实现的安全性自动化评估方法的模型或工具,持续性地扫描开源社区内开源项目的安全态势。持续性地扫描开源社区内开源项目的安全态势,具体包括下述实施步骤:
步骤1、检索开源社区内所有开源项目,筛选出其中活跃的开源项目,将具有一定用户基础的开源项目作为观察对象,形成开源项目观测列表,同时开放接口,允许开源社区的用户向该开源项目观测列表中添加关注的开源项目。
步骤2、以周为时间间隔,定期的扫描开源项目观测列表上的开源项目,计算出其对应的综合评分,并将有关数据记录在数据库中。
步骤3、对于综合评分过低或综合评分下降较为明显的开源项目,通过开源社区公开渠道向开源项目的开发者发出报警。
在面向开源项目使用者时,开源项目使用者可使用集成有本实施例实现的安全性自动化评估方法的模型或工具,扫描目标开源项目的安全态势,计算出其对应的综合评分,然后进行开源项目的选择。
在面向开源项目开发者时,开源项目开发者可使用集成有本实施例实现的安全性自动化评估方法的模型或工具,扫描目标开源项目的安全态势,计算出其对应的综合得分,然后提出目标开源项目的安全性强化方案。
实施例二
本实施例提供了一种面向开源项目的安全性自动化评估装置,所述装置基于实施例一实现的一种面向开源项目的安全性自动化评估方法。具体的,该装置包括存储器和处理器,存储器内保存有实施例一实现的一种面向开源项目的安全性自动化评估方法,处理器用于调用存储器内保存的安全性自动化评估方法进行开源项目的安全性自动评估。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (9)

1.一种面向开源项目的安全性自动化评估方法,其特征在于,包括如下步骤:
S100.收集待评估的开源项目的多个第一评价指标值,所述第一评价指标值为开源项目的
历史漏洞特征数据,所述历史漏洞特征数据为可用于评价该开源项目使用风险的历史漏洞关联数据;
S200.收集待评估的开源项目的多个第二评价指标值,所述第二评价指标值为开源项目在
开源社区上的记录数据,所述记录数据为可用于评价该开源项目使用风险的记录数据;
S300.收集待评估的开源项目的多个第三评价指标值,所述第三评价指标值为以专家知识为基础对获取到的开源项目的安全最佳实践测评结果进行数值化的结果;
S400.基于每个第一评价指标值自身对应的第一预设权重值,对所有第一评价指标值进行加权求和,加权求和后生成第一评分;
S500.将所有第二评价指标值输入预先训练好的机器学习模型,生成预测值,然后根据预测值确定第二评分,其中每个预测值均具有自己对应的第二评分,所述预测值表征第二评价指标值反映出的开源项目的预期使用风险等级;
S600.基于每个第三评价指标值自身对应的第二预设权重值,对所有第三评价指标值进行加权求和,加权求和后生成第三评分;
S700.将第一评分、第二评分和第三评分输入预先训练好的安全量化评估模型,生成表征开源项目安全状况优劣的综合得分;
所述S700中,所述安全量化评估模型的数学表达式为:;其中,/>表示第二评分,/>表示第一评分,/>表示第三评分,/>表示开源项目的综合得分,/>表示第三预设权重值,/>表示第四预设权重值。
2.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述S100具体为:
S101.以待评估的开源项目的组织名和项目名为关键字,在NVD漏洞数据库中检索所述开源项目的历史漏洞,并记录所述历史漏洞的CVE编号;
S102.统计所有所述历史漏洞的条目数量,并将历史漏洞的条目数量作为历史漏洞数量,所述历史漏洞数量为历史漏洞的第一个特征数据;
S103.调用NVD漏洞数据库提供的官方API接口,基于每个CVE编号获取该CVE编号对应历史漏洞的CVSS漏洞严重性评分,取所有CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为历史漏洞的平均严重性评分,所述历史漏洞的平均严重性评分为历史漏洞的第二个特征数据;
S104.关联每个历史漏洞的链接信息,并判断链接信息中是否包含该历史漏洞的修复信息,若是,则确定该历史漏洞已被修复,否则确定该历史漏洞未修复,并统计未修复的历史漏洞数量,所述未修复的历史漏洞数量为历史漏洞的第三个特征数据;
S105.调用NVD漏洞数据库提供的官方API接口,基于每个未修复历史漏洞的CVE编号获取该未修复历史漏洞的CVSS漏洞严重性评分,取所有未修复历史漏洞的CVSS漏洞严重性评分的算术平均值,并将该算术平均值作为未修复历史漏洞的平均严重性评分,所述未修复历史漏洞的平均严重性评分为历史漏洞的第四个特征数据;
S106.计算每个已修复的历史漏洞的修复时间和该已修复的历史漏洞的发布时间之间的差值,并取所有所述差值的算术平均值,将该算术平均值作为已修复历史漏洞的平均修复时间,所述已修复历史漏洞的平均修复时间为历史漏洞的第五个特征数据;
S107.将所述历史漏洞数量、所述历史漏洞的平均严重性评分、所述未修复的历史漏洞数量、所述未修复历史漏洞的平均严重性评分和所述已修复历史漏洞的平均修复时间分别作为各个第一评价指标值。
3.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述S200具体为:
使用网络爬虫和/或调用待评估的开源项目所在开源社区官方提供的API接口采集所述开源项目在开源社区上的多个记录数据,并将各个记录数据分别作为各个第二评价指标值,所述多个记录数据包括所述开源项目的创建时间、star数量、fork数量、依赖数量、被依赖次数、提交数量、提交频率、issue数量、关闭的issue数量、Pull Request数量、评论数量、自上次更新的间隔时间、贡献者人数、外部贡献者占比、涉及的组织数量和开发者能力指数。
4.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述S300具体为:
S301.使用网络爬虫、和/或调用待评估的开源项目所在开源社区官方提供的API接口、和/或扫描所述开源项目的项目文件的方式采集所述开源项目的多个安全最佳实践测评结果,所述多个安全最佳实践测评结果包括所述开源项目的项目文件中是否含有可执行文件、是否启用分支保护功能、融合Pull Request前是否经过测试、是否经过CII最佳实践检验、代码提交是否经过审查、在持续集成过程中是否含有危险的工作流、是否配置有依赖更新工具、是否经过模糊测试、是否处于维护状态、是否打包发布、代码是否经过静态分析、是否配有安全策略、发布的版本是否含有签名和工作流令牌是否配置为只读的判断结果;
S302.以专家知识为基础,对采集到的每个安全最佳实践测评结果分别进行数值化,并将各个数值化后的安全最佳实践测评结果分别作为各个第三评价指标值;
其中,所述专家知识为依据专家经验设定的评分函数,所述评分函数包括线性评分函数、非线性评分函数和二元评分函数。
5.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,
所述S400中,所述第一预设权重值根据对应的第一评价指标值对开源项目安全性的威胁程度进行确定,不同的威胁程度分配不同的第一预设权重值;
所述S400具体为:
S401.对每个第一评价指标值分别进行归一化;
S402.基于每个第一评价指标值自身对应的第一预设权重值,对所有归一化后的第一评价指标值进行加权求和,加权求和后得到第一评分。
6.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述机器学习模型包括逻辑回归分类模型、随机森林分类模型和支持向量机分类模型;
所述S500具体为:
S501.对每个第二评价指标值进行归一化;
S502.将归一化后的所有第二评价指标值输入预先训练好的机器学习模型,由机器学习模型对第二评价指标值反映出的开源项目的预期使用风险等级进行预测,预测后生成预测值;
S503.基于第一映射关系,根据预测值确定第二评分;
其中,所述第一映射关系为预设的各个预测值与各个第二评分的对应关系。
7.根据权利要求1所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述S600中,所述第二预设权重值根据未遵循安全最佳实践的不同程度给开源项目带来的不同安全风险等级进行确定,其中,未遵循安全最佳实践的不同程度值通过第二预设权重值对应的第三评价指标值的大小进行表征。
8.根据权利要求2所述的一种面向开源项目的安全性自动化评估方法,其特征在于,所述S102中,在统计所有所述历史漏洞的条目之前,采集每个所述历史漏洞的描述信息和链接信息;若采用正则匹配表达式确定出该历史漏洞的描述信息文本中未包含所述开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除;若采用正则匹配表达式确定出该历史漏洞的链接信息文本中未包含所述开源项目的项目全名,和/或,描述的受漏洞影响的版本与真实的开源项目版本不匹配,则将该历史漏洞的条目移除。
9.一种面向开源项目的安全性自动化评估装置,其特征在于,所述装置包括存储器和处理器,所述存储器内保存有权利要求1-8项任一项所述的一种面向开源项目的安全性自动化评估方法,所述处理器用于调用存储器内保存的所述方法进行开源项目的安全性自动评估。
CN202310039038.9A 2023-01-12 2023-01-12 一种面向开源项目的安全性自动化评估方法及装置 Active CN116305137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310039038.9A CN116305137B (zh) 2023-01-12 2023-01-12 一种面向开源项目的安全性自动化评估方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310039038.9A CN116305137B (zh) 2023-01-12 2023-01-12 一种面向开源项目的安全性自动化评估方法及装置

Publications (2)

Publication Number Publication Date
CN116305137A CN116305137A (zh) 2023-06-23
CN116305137B true CN116305137B (zh) 2023-10-13

Family

ID=86812125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310039038.9A Active CN116305137B (zh) 2023-01-12 2023-01-12 一种面向开源项目的安全性自动化评估方法及装置

Country Status (1)

Country Link
CN (1) CN116305137B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117057681B (zh) * 2023-10-12 2024-01-16 航天中认软件测评科技(北京)有限责任公司 软件质量评估方法、装置、设备和存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649429A (zh) * 2016-08-25 2017-05-10 北京知道未来信息技术有限公司 一种基于多维统计的漏洞危害等级快速评估方法和装置
CN110417721A (zh) * 2019-03-07 2019-11-05 腾讯科技(深圳)有限公司 安全风险评估方法、装置、设备及计算机可读存储介质
CN111611592A (zh) * 2020-05-27 2020-09-01 中国信息安全测评中心 一种大数据平台安全评估方法及装置
CN112764794A (zh) * 2021-01-08 2021-05-07 世纪龙信息网络有限责任公司 一种开源软件信息管理系统和方法
CN113535546A (zh) * 2021-06-17 2021-10-22 深圳开源互联网安全技术有限公司 一种开源组件评估方法、装置及计算机可读存储介质
CN113901466A (zh) * 2021-09-17 2022-01-07 四川大学 面向开源社区的安全工具知识图谱构建方法及装置
CN114065223A (zh) * 2021-11-26 2022-02-18 西安工业大学 一种基于cvss的多维度软件安全风险评估方法
CN114238044A (zh) * 2021-11-18 2022-03-25 上海浦东发展银行股份有限公司 开源项目活跃度的计算方法、装置和计算机设备
CN115237978A (zh) * 2022-07-06 2022-10-25 西北工业大学 一种开源威胁情报聚合平台
CN115329336A (zh) * 2022-06-10 2022-11-11 上海大学 一种基于依赖项检测和开源评分体系的net平台开源软件供应链漏洞评分方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018602A1 (en) * 2016-02-25 2018-01-18 Mcs2, Llc Determining risk level and maturity of compliance activities

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649429A (zh) * 2016-08-25 2017-05-10 北京知道未来信息技术有限公司 一种基于多维统计的漏洞危害等级快速评估方法和装置
CN110417721A (zh) * 2019-03-07 2019-11-05 腾讯科技(深圳)有限公司 安全风险评估方法、装置、设备及计算机可读存储介质
CN111611592A (zh) * 2020-05-27 2020-09-01 中国信息安全测评中心 一种大数据平台安全评估方法及装置
CN112764794A (zh) * 2021-01-08 2021-05-07 世纪龙信息网络有限责任公司 一种开源软件信息管理系统和方法
CN113535546A (zh) * 2021-06-17 2021-10-22 深圳开源互联网安全技术有限公司 一种开源组件评估方法、装置及计算机可读存储介质
CN113901466A (zh) * 2021-09-17 2022-01-07 四川大学 面向开源社区的安全工具知识图谱构建方法及装置
CN114238044A (zh) * 2021-11-18 2022-03-25 上海浦东发展银行股份有限公司 开源项目活跃度的计算方法、装置和计算机设备
CN114065223A (zh) * 2021-11-26 2022-02-18 西安工业大学 一种基于cvss的多维度软件安全风险评估方法
CN115329336A (zh) * 2022-06-10 2022-11-11 上海大学 一种基于依赖项检测和开源评分体系的net平台开源软件供应链漏洞评分方法
CN115237978A (zh) * 2022-07-06 2022-10-25 西北工业大学 一种开源威胁情报聚合平台

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Research on the Improvement of Software Vulnerability Detection and Evaluation Based on Static Analysis and Empirical Study;Richard Amankwah;《中国博士学位论文全文数据库 信息科技辑》(第04期);I138-15 *
基于深度学习的网络安全分域态势评估研究;陶晓玲;《中国博士学位论文全文数据库 信息科技辑》(第02期);I139-8 *

Also Published As

Publication number Publication date
CN116305137A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
Coglianese et al. AI in Adjudication and Administration
KR100752677B1 (ko) 정보기술 위험관리시스템 및 그 방법
US7849062B1 (en) Identifying and using critical fields in quality management
Jimenez et al. Vulnerability prediction models: A case study on the linux kernel
KR100755000B1 (ko) 보안 위험 관리 시스템 및 방법
CN116305137B (zh) 一种面向开源项目的安全性自动化评估方法及装置
CN111695831B (zh) 一种开源代码的使用风险评估方法、装置及电子设备
CN114003920A (zh) 系统数据的安全评估方法及装置、存储介质和电子设备
Wijnhoven et al. Value-based file retention: File attributes as file value and information waste indicators
CN116846619A (zh) 一种自动化网络安全风险评估方法、系统及可读存储介质
Gursoy et al. System cards for AI-based decision-making for public policy
Popple et al. A comparative analysis of Inspector responses to complaints about psychosocial and physical hazards
KR20040104853A (ko) 정보 자산의 위험 분석 시스템
Rahardyan et al. Generation gap in fraud prevention: Study on generation Z, generation X, millennials, and boomers
Hardjomidjojo et al. Rapid assessment model on risk management based on ISO 31000: 2018
CN110782163A (zh) 企业数据处理方法和装置
JP2007287132A (ja) 情報技術危険管理システム及びその方法
US20220374401A1 (en) Determining domain and matching algorithms for data systems
TW201539217A (zh) 文件分析系統、文件分析方法、以及文件分析程式
Stoykova et al. Machine Learning for Evidence in Criminal Proceedings: Techno-legal Challenges for Reliability Assurance
Scanlan Auditing Predictive Policing
Cohen et al. Revalidation of the federal pretrial risk assessment instrument (ptra): Testing the ptra for predictive biases
Tsakalakis et al. A taxonomy of explanations to support Explainability-by-Design
Burhandenny et al. Investigation of coding violations focusing on authorships of source files
Medhanie et al. Minnesota Pretrial Assessment Tool Validation Study May 2023

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