CN112784279A - 基于依赖库版本信息的软件产品安全风险评估方法 - Google Patents
基于依赖库版本信息的软件产品安全风险评估方法 Download PDFInfo
- Publication number
- CN112784279A CN112784279A CN202110004675.3A CN202110004675A CN112784279A CN 112784279 A CN112784279 A CN 112784279A CN 202110004675 A CN202110004675 A CN 202110004675A CN 112784279 A CN112784279 A CN 112784279A
- Authority
- CN
- China
- Prior art keywords
- software product
- vulnerability
- security
- version information
- library
- 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.)
- Granted
Links
Images
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- 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/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于依赖库版本信息的软件产品安全风险评估方法,包括:通过解析软件产品的配置文件,读取该软件产品所依赖的第三方库名称和版本信息列表;提取安全报告中的漏洞信息、漏洞名称、软件名称、版本信息,生成已经安全的漏洞信息列表;将该软件产品的第三方库名称和版本列表与已经安全的漏洞信息列表中第三方库的名称和版本信息进行比对,若该软件产品存在至少一个不在安全版本里的第三方库,则确定该软件产品存在漏洞;从项目内在的安全性能和依赖相关库的安全性能两方面出发,计算该软件产品的安全评估分数。本发明直观地展现了可重用软件面临着的漏洞安全问题,提供了一种有效规避软件漏洞的方法,具有低投入高产出的优良特性。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种基于依赖库版本信息的软件产品安全风险评估方法,为企业软件系统提供了有效漏洞安全评测技术。
背景技术
学术界和工业界针对企业系统和软件产品进行风险评估,提出了各种安全评估技术和方法,从而对其进行风险控制。现有的安全风险评估方法,根据当前系统的脆弱性、被攻击概率、网络数据审计,计算当前系统的风险值,为下一步安全检测和防御做准备,采取适当的风险控制措施。然而,现有的安全评估方法,没有考虑到第三方库的安全漏洞和脆弱性,对企业系统和软件产品的影响,导致评估方法不够精确和全面。
在现代的软件工程中,程序员开发企业软件系统时,往往利用现有的第三方、可重用的软件库,来完善企业软件系统的各种功能,包括数据处理、界面交互、数据通信等等。企业系统的程序员往往不会开发重复功能,俗称“重复造轮子”,采用软件开源管理工具(即GitHub和Subversion)丰富的可重用、第三方的软件库,来完成企业软件系统的功能,从而在软件产品开发过程中,有效地节省时间、成本和人力资源,提高开发效率。然而,可重用的代码或者第三方软件库会带来许多潜在的安全问题:当重用的代码段或者软件库出现了暴漏的安全漏洞和bug时,那么基于这些软件库(代码)进行二次开发和后续开发的软件产品也会面临着相类似的安全漏洞和bug。那么,黑客会利用这些可重用代码(库)的安全漏洞和恶意攻击脚本,去攻击基于重用代码 (库)二次开发的项目或软件系统。可重用软件库和可重用代码既提高了软件开发的质量和节约开发成本,也会带来了安全问题和隐患。
当今,暴漏的软件漏洞数量正在不断增加。2000年,国家漏洞数据库(NationalVulnerability Database,NVD)发布了1,237个漏洞,而在2019年漏洞数目确到了10,593个。许多安全漏洞都发生在可重用软件库和可重用代码段之中,那么依赖于这些软件库的其他工程和系统,也面临着类似的安全隐患。因此,理解和构架重用代码和可重用软件的依赖关系,以此来分析安全漏洞对这些可重用软件的影响,将能对软件开发提供协助和安全建议。因此,本方法提出了一种针对软件产品的依赖库版本信息的安全风险评估方法,为企业软件系统和产品,提供一套低成本、合理的安全风险指标。
发明内容
本发明的目的是提供一种基于依赖库版本信息的软件产品安全风险评估方法,该方法直观地展现了软件产品所依赖的可重用、第三方库所面临的安全风险,从而提出有效的软件产品的安全评估方法,为企业软件系统提供了一种有效漏洞安全评测技术,具有低投入高产出的优良特性。
为实现上述目的,本发明的技术方案是:
一种基于依赖库版本信息的软件产品安全风险评估方法,包括以下步骤:
步骤一、给定一个软件产品,通过解析该软件产品的配置文件,读取该软件产品所依赖的第三方库名称和版本信息列表;
步骤二、收集国家漏洞数据库的安全报告,提取安全报告中的漏洞信息、漏洞名称、软件名称、版本信息,生成已经安全的漏洞信息列表;
步骤三、将该软件产品的第三方库名称和版本列表与已经安全的漏洞信息列表中第三方库的名称和版本信息进行比对,若该软件产品存在至少一个不在安全版本里的第三方库,则确定该软件产品存在漏洞,进入步骤四;
步骤四、从项目内在的安全性能和依赖相关库的安全性能两方面出发,计算该软件产品的安全评估分数。
进一步的,所述国家漏洞数据库的安全报告从网络下载。
进一步的,步骤二所述漏洞信息利用正则表达式提取。
进一步的,步骤二所述软件名称、版本信息采用命名实体识别技术提取。
进一步的,步骤四所述安全评估分数的计算公式为:
w1=10*a*b*c
w2=(10-w1)*d*f
式中,T为安全评估分数,该数值介于1-10之间,软件产品的安全风险和该数值大小正相关;e为自然常数;a为漏洞传播途径,漏洞传播途径为本地时,a=0.5,漏洞传播途径为远程时,a=0.7;b为项目影响力,项目影响力为高时,b=0.7,项目影响力为中时,b=0.5,项目影响力为低时,b=0.3;c为项目修复情况,项目修复情况为官方补丁时,c=0.4,项目修复情况为临时修复时,c=0.7;d为漏洞的基本分布范围,0<d<1;f为项目危害影响程度,项目危害影响程度为高时,f=06,项目危害影响程度为中时,f=0.4,项目危害影响程度为低时,f=0.2。
本发明的有益效果是:本发明的基于依赖库版本信息的软件产品安全风险评估方法,直观地展现了可重用软件面临着的漏洞安全问题,提供了一种有效规避软件漏洞的方法,具有低投入高产出的优良特性。
附图说明
图1为本发明基于依赖库版本信息的软件产品安全风险评估方法的流程图;
图2为利用命名实体识别技术提取第三方库名称和版本信息的示意图;
图3为基于依赖库文件版本信息的软件产品安全风险评估方法中版本匹配示意图。
具体实施方式
下面将结合附图对本发明实施例中的技术方案进行清楚、完整地描述。
如图1所示,一种基于依赖库版本信息的软件产品安全风险评估方法,包括以下步骤:
步骤一、给定一个软件产品,通过解析该软件产品的配置文件,读取该软件产品所依赖的第三方库名称和版本信息列表。
企业软件产品在开发过程中,开发人员需要分工协作、迭代式开发产品。因此软件系统需要开发人员提供了一个配置文件,申明当前产品需要依赖的、重用的第三方软件库的名称和相应的版本信息。本方法需要读取企业软件产品中的配置文件,生成该产品对应的第三方库列表信息。列表形式为{(A1’,V1’)、(A2’,V2’)…(An’, Vn’)},其中A’表示第三方库名称,V’表示企业软件产品依赖的第三方库的版本信息。
步骤二、收集国家漏洞数据库的安全报告,提取安全报告中的漏洞信息、漏洞名称、软件名称、版本信息,生成已经安全的漏洞信息列表。
国家漏洞数据库(NVD和CNVD)包含了20多年的公开漏洞数据报告,网站ExploitDB.com包含了15年来漏洞的利用脚本和攻击脚本。这些安全漏洞报告,具有一段漏洞的文本描述,漏洞编号(CVE ID)。
针对漏洞信息,即CVE ID,是由国家编号管理机构(CNA)分配。CVE ID的格式为“CVE-年代-编号”,例如软件uWSGI具有缓冲区溢出漏洞,具有"
CVE-2018-6758",指代2018年发现的漏洞编号为6758的漏洞。本方法利用正则表达式,直接提取安全漏洞报告的漏洞信息。正则表达式为“CVE-\d\d\d\d-\d{4,}”,只要漏洞报告的字符,满足该正则表达式,本方法直接提取对应的字符串,作为漏洞信息。
本方法利用命名实体识别技术,提取第三方版本库信息。图2是本方法利用命名实体识别技术提取安全漏洞文本中的第三方库名称和版本信息的示意图。安全漏洞报告的实体信息是指第三方库名称实体,第三方库版本信息实体和其他实体。本方法分别对这三类实体标记为A,V,O,其中A指代第三方库名称实体,V表示第三方库版本信息实体,O表示其他实体。安全漏洞报告都是用自然语言的文本描述,本方法首先利用字母级别词向量(character embedding)把每个字母分别表示为字母级别词向量,然后再表示为通用的词向量(word embedding),再经过双向长记忆网络(Bi-LSTM,全称为Bi-directional LongShort-Term Memory),输出每一个单词的实体标记。本方法的命名实体识别过程如图3所示。举例:给定一句自然语言文本“Versions of lodash lower than 4.17.12arevulnerable to Prototype Pollution.”,经过本方法的命名实体标记,输出“O O A O O VO O O O O”,找到标记为A和V的文本,提取作为安全漏洞报告的第三方库名称和版本信息。
本方法通过正则表达式和命名实体识别技术,对安全漏洞报告,分别提取了漏洞信息,第三方库名信息和版本信息。给定m个安全漏洞报告,本方法可以提取对应的漏洞信息列表,记录为{(CVE1,A1,V1)、(CVE2,A2,V2)…(CVEm,Am,Vm)},其中 CVE表示漏洞信息,A’表示第三方库名称,V’表示企业软件产品依赖的第三方库的版本信息。
步骤三、将该软件产品的第三方库名称和版本列表与已经安全的漏洞信息列表中第三方库的名称和版本信息进行比对,若该软件产品存在至少一个不在安全版本里的第三方库,则确定该软件产品存在漏洞,进入步骤四。
所述比对的过程是:将在步骤一中得到软件产品的第三方库列表{(A1’,V1’)、(A2’,V2’)…(An’,Vn’)}与在步骤二得到的漏洞信息列表{(CVE1,A1,V1)、 (CVE2,A2,V2)…(CVEm,Am,Vm)}进行比较,如果Ai’等于Aj且Vi等于Vj,那么当前企业产品的依赖库具有了漏洞CVEj的脆弱性。简而言之,就是通过比对得到这个软件产品的第三方库所有版本是不是都在安全版本里,如果有一个不在,那它就是一个脆弱库,如果都在,那么这个库是安全的,使用者可以放心使用。
图3是基于依赖库文件版本信息的软件产品安全风险评估方法中版本匹配示意图。在于判断软件产品的依赖库和依赖的版本信息是否具有脆弱性,从而确定该漏洞会对企业软件产品和系统的风险评估产生影响。
步骤四、从项目内在的安全性能和依赖相关库的安全性能两方面出发,计算该软件产品的安全评估分数,安全评估分数的计算公式为:
w1=10*a*b*c
w2=(10-w1)*d*f
式中,T为安全评估分数,该数值介于1-10之间,软件产品的安全风险和该数值大小正相关;e为自然常数;a为漏洞传播途径,漏洞传播途径为本地时,a=0.5,漏洞传播途径为远程时,a=0.7;b为项目影响力,项目影响力为高时,b=0.7,项目影响力为中时,b=0.5,项目影响力为低时,b=0.3;c为项目修复情况,项目修复情况为官方补丁时,c=0.4,项目修复情况为临时修复时,c=0.7;d为漏洞的基本分布范围,0<d<1;f为项目危害影响程度,项目危害影响程度为高时,f=06,项目危害影响程度为中时,f=0.4,项目危害影响程度为低时,f=0.2。
本发明的基于依赖库版本信息的软件产品安全风险评估方法,直观地展现了可重用软件面临着的漏洞安全问题,提供了一种有效规避软件漏洞的方法,具有低投入高产出的优良特性。
所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Claims (5)
1.一种基于依赖库版本信息的软件产品安全风险评估方法,其特征在于,包括以下步骤:
步骤一、给定一个软件产品,通过解析该软件产品的配置文件,读取该软件产品所依赖的第三方库名称和版本信息列表;
步骤二、收集国家漏洞数据库的安全报告,提取安全报告中的漏洞信息、漏洞名称、软件名称、版本信息,生成已经安全的漏洞信息列表;
步骤三、将该软件产品的第三方库名称和版本列表与已经安全的漏洞信息列表中第三方库的名称和版本信息进行比对,若该软件产品存在至少一个不在安全版本里的第三方库,则确定该软件产品存在漏洞,进入步骤四;
步骤四、从项目内在的安全性能和依赖相关库的安全性能两方面出发,计算该软件产品的安全评估分数。
2.如权利要求1所述的一种基于依赖库版本信息的软件产品安全风险评估方法,其特征在于,所述国家漏洞数据库的安全报告从网络下载。
3.如权利要求1所述的一种基于依赖库版本信息的软件产品安全风险评估方法,其特征在于,步骤二所述漏洞信息利用正则表达式提取。
4.如权利要求1所述的一种基于依赖库版本信息的软件产品安全风险评估方法,其特征在于,步骤二所述软件名称、版本信息采用命名实体识别技术提取。
5.如权利要求1所述的一种基于依赖库版本信息的软件产品安全风险评估方法,其特征在于,步骤四所述安全评估分数的计算公式为:
w1=10*a*b*c
w2=(10-w1)*d*f
式中,T为安全评估分数,该数值介于1-10之间,软件产品的安全风险和该数值大小正相关;e为自然常数;a为漏洞传播途径,漏洞传播途径为本地时,a=0.5,漏洞传播途径为远程时,a=0.7;b为项目影响力,项目影响力为高时,b=0.7,项目影响力为中时,b=0.5,项目影响力为低时,b=0.3;c为项目修复情况,项目修复情况为官方补丁时,c=0.4,项目修复情况为临时修复时,c=0.7;d为漏洞的基本分布范围,0<d<1;f为项目危害影响程度,项目危害影响程度为高时,f=06,项目危害影响程度为中时,f=0.4,项目危害影响程度为低时,f=0.2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110004675.3A CN112784279B (zh) | 2021-01-04 | 2021-01-04 | 基于依赖库版本信息的软件产品安全风险评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110004675.3A CN112784279B (zh) | 2021-01-04 | 2021-01-04 | 基于依赖库版本信息的软件产品安全风险评估方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112784279A true CN112784279A (zh) | 2021-05-11 |
CN112784279B CN112784279B (zh) | 2023-03-28 |
Family
ID=75753997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110004675.3A Active CN112784279B (zh) | 2021-01-04 | 2021-01-04 | 基于依赖库版本信息的软件产品安全风险评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112784279B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836541A (zh) * | 2021-09-29 | 2021-12-24 | 天翼物联科技有限公司 | 基于依赖关系的软件安全检查方法、装置、计算机设备及存储介质 |
CN115134121A (zh) * | 2022-05-30 | 2022-09-30 | 深圳开源互联网安全技术有限公司 | 基于rasp的第三方库安全攻击防护方法及相关装置 |
CN115544465A (zh) * | 2022-11-25 | 2022-12-30 | 卓望数码技术(深圳)有限公司 | 一种用于软件构建的第三方组件的安全管控方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799822A (zh) * | 2012-07-11 | 2012-11-28 | 中国信息安全测评中心 | 基于网络环境软件运行安全性度量与评估方法 |
WO2014043497A1 (en) * | 2012-09-14 | 2014-03-20 | Mastercard International Incorporated | Methods and systems for evaluating software for known vulnerabilities |
CN109753807A (zh) * | 2019-01-09 | 2019-05-14 | 国家保密科技测评中心 | 安全检测方法和装置 |
CN110210228A (zh) * | 2019-04-26 | 2019-09-06 | 国家电网有限公司 | 一种主机设备漏洞扫描方法及系统 |
CN111046386A (zh) * | 2019-12-05 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | 动态检测程序第三方库并进行安全评估的方法及系统 |
-
2021
- 2021-01-04 CN CN202110004675.3A patent/CN112784279B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799822A (zh) * | 2012-07-11 | 2012-11-28 | 中国信息安全测评中心 | 基于网络环境软件运行安全性度量与评估方法 |
WO2014043497A1 (en) * | 2012-09-14 | 2014-03-20 | Mastercard International Incorporated | Methods and systems for evaluating software for known vulnerabilities |
CN109753807A (zh) * | 2019-01-09 | 2019-05-14 | 国家保密科技测评中心 | 安全检测方法和装置 |
CN110210228A (zh) * | 2019-04-26 | 2019-09-06 | 国家电网有限公司 | 一种主机设备漏洞扫描方法及系统 |
CN111046386A (zh) * | 2019-12-05 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | 动态检测程序第三方库并进行安全评估的方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836541A (zh) * | 2021-09-29 | 2021-12-24 | 天翼物联科技有限公司 | 基于依赖关系的软件安全检查方法、装置、计算机设备及存储介质 |
CN115134121A (zh) * | 2022-05-30 | 2022-09-30 | 深圳开源互联网安全技术有限公司 | 基于rasp的第三方库安全攻击防护方法及相关装置 |
CN115544465A (zh) * | 2022-11-25 | 2022-12-30 | 卓望数码技术(深圳)有限公司 | 一种用于软件构建的第三方组件的安全管控方法及装置 |
CN115544465B (zh) * | 2022-11-25 | 2023-02-28 | 卓望数码技术(深圳)有限公司 | 一种用于软件构建的第三方组件的安全管控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112784279B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112784279B (zh) | 基于依赖库版本信息的软件产品安全风险评估方法 | |
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
US11250137B2 (en) | Vulnerability assessment based on machine inference | |
CN110941716B (zh) | 一种基于深度学习的信息安全知识图谱的自动构建方法 | |
CN111400719B (zh) | 基于开源组件版本识别的固件脆弱性判别方法及系统 | |
US10163063B2 (en) | Automatically mining patterns for rule based data standardization systems | |
CN113821804B (zh) | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统 | |
CN108491228B (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
CN113486357B (zh) | 一种基于静态分析和深度学习的智能合约安全检测方法 | |
US20230035121A1 (en) | Automatic event graph construction method and device for multi-source vulnerability information | |
CN104166680B (zh) | 一种基于开源库与文本挖掘的并行漏洞挖掘方法 | |
CN109670318B (zh) | 一种基于核控制流图循环验证的漏洞检测方法 | |
Kobayashi et al. | Towards an NLP-based log template generation algorithm for system log analysis | |
CN111723371B (zh) | 构建恶意文件的检测模型以及检测恶意文件的方法 | |
CN113901474B (zh) | 一种基于函数级代码相似性的漏洞检测方法 | |
CN111881300A (zh) | 面向第三方库依赖的知识图谱构建方法及系统 | |
CN112115326B (zh) | 一种以太坊智能合约的多标签分类和漏洞检测方法 | |
CN116305158A (zh) | 一种基于切片代码依赖图语义学习的漏洞识别方法 | |
CN108171057B (zh) | 基于特征匹配的Android平台恶意软件检测方法 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN116415251A (zh) | 一种基于深度学习的漏洞影响范围推理方法和系统 | |
CN107463845B (zh) | 一种sql注入攻击的检测方法、系统和计算机处理设备 | |
CN115859307A (zh) | 基于树型注意力和加权图匹配的相似漏洞检测方法 | |
CN114817934A (zh) | 一种基于漏洞事件论元的漏洞严重度评估方法及系统 | |
WO2021160822A1 (en) | A method for linking a cve with at least one synthetic cpe |
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 |