CN111931183A - 开源软件安全漏洞处理方法和装置 - Google Patents

开源软件安全漏洞处理方法和装置 Download PDF

Info

Publication number
CN111931183A
CN111931183A CN202010757098.0A CN202010757098A CN111931183A CN 111931183 A CN111931183 A CN 111931183A CN 202010757098 A CN202010757098 A CN 202010757098A CN 111931183 A CN111931183 A CN 111931183A
Authority
CN
China
Prior art keywords
source software
open
vulnerability
open source
software
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
Application number
CN202010757098.0A
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010757098.0A priority Critical patent/CN111931183A/zh
Publication of CN111931183A publication Critical patent/CN111931183A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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

Landscapes

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

Abstract

本发明提供一种开源软件安全漏洞处理方法和装置,该方法包括:扫描待测工程源码获取其引用的开源软件清单;获取开源软件漏洞数据;根据该漏洞数据以及该开源软件清单进行漏洞预警,能够在软件研发及后续运维过程中,自动对涉及开源软件的安全漏洞做及时预警及升级,及早规避风险,提高安全性能。

Description

开源软件安全漏洞处理方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种开源软件安全漏洞处理方法和装置。
背景技术
软件安全漏洞指的是在软件功能、性能方面具体实现以及安全策略上的缺陷。攻击者利用安全漏洞,可以在未授权的情况下访问软件系统、读取业务数据甚至破坏软件正常运行,造成重大损失。
随着业务架构的日趋复杂、开源社区的发展以及各种技术框架的引入,软件研发过程中对开源软件的使用量大幅增加,相应地,由开源软件引入的安全漏洞也频繁出现。由于开源软件的通用性,使得攻击者利用开源漏洞的成本也在降低,安全形势日趋严峻。
发明内容
针对现有技术中的问题,本发明提供一种开源软件安全漏洞处理方法和装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种开源软件安全漏洞处理方法,包括:
扫描待测工程源码获取其引用的开源软件清单;
获取开源软件漏洞数据;
根据该漏洞数据以及该开源软件清单进行漏洞预警。
进一步地,开源软件安全漏洞处理方法还包括:
获取有安全漏洞的开源软件的更新版本;
根据该更新版本更新该待测工程源码中引用的开源软件。
进一步地,该开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单;
该扫描待测工程源码获取其引用的开源软件清单,包括:
扫描该待测工程源码获取直接引用的开源软件的清单;
从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
进一步地,该获取开源软件漏洞数据,包括:
扫描开源漏洞库增量采集新增的开源软件漏洞信息;
采用自然语言处理技术从该开源软件漏洞数据中提取该开源软件漏洞数据。
第二方面,提供一种开源软件安全漏洞处理装置,包括:
扫描模块,扫描待测工程源码获取其引用的开源软件清单;
漏洞数据获取模块,获取开源软件漏洞数据;
漏洞预警模块,根据该漏洞数据以及该开源软件清单进行漏洞预警。
进一步地,开源软件安全漏洞处理装置还包括:
更新版本获取模块,获取有安全漏洞的开源软件的更新版本;
软件更新模块,根据该更新版本更新该待测工程源码中引用的开源软件。
进一步地,该开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单;
该扫描模块包括:
直接引用扫描单元,扫描该待测工程源码获取直接引用的开源软件的清单;
间接引用扫描单元,从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
进一步地,该漏洞数据获取模块包括:
漏洞信息采集单元,扫描开源漏洞库增量采集新增的开源软件漏洞信息;
数据提取单元,采用自然语言处理技术从该开源软件漏洞数据中提取该开源软件漏洞数据。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的开源软件安全漏洞处理方法的步骤。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的开源软件安全漏洞处理方法的步骤。
本发明提供的开源软件安全漏洞处理方法和装置,该方法包括:扫描待测工程源码获取其引用的开源软件清单;获取开源软件漏洞数据;根据该漏洞数据以及该开源软件清单进行漏洞预警,能够在软件研发及后续运维过程中,自动对涉及开源软件的安全漏洞做及时预警及升级,及早规避风险,提高安全性能。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明实施例中的开源软件安全漏洞处理方法的流程示意图一;
图2是本发明实施例中的开源软件安全漏洞处理方法的流程示意图二;
图3示出了图1或图2中步骤S100的具体步骤;
图4为基于JAVA的研发工程中直接导入JAR包实体引用开源软件的示意图;
图5为基于JAVA的研发工程中以POM文件的方式指定需要从MAVEN仓库引用的JAR包信息的形式引用开源软件的示意图;
图6示出了图1或图2中步骤S200的具体步骤;
图7示出了本发明实施例中举例的一种开源软件安全漏洞处理装置的结构示意图;
图8示出了本发明实施例中关键的漏洞信息;
图9示出了本发明实施例中使用XPATH技术从返回页面的HTML源码中提取补丁漏洞的列表信息;
图10示出了本发明实施例中使用XPATH技术从返回页面的HTML源码中提取每个安全漏洞的详细信息;
图11示出了使用XPATH技术从返回页面的HTML源码中提取每个安全漏洞的详细信息;
图12示出了本发明实施例中举例的一种开源软件安全漏洞处理方法的流程图;
图13是本发明实施例中的开源软件安全漏洞处理装置的结构框图一;
图14是本发明实施例中的开源软件安全漏洞处理装置的结构框图二;
图15示出了图13或图14中扫描模块的具体结构;
图16示出了图13或图14中漏洞数据获取模块的具体结构;
图17为本发明实施例电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明提出一种开源软件安全漏洞处理方法,通过扫描待测工程源码,识别待测工程使用开源软件的信息;定期检索CNNVD、CVE等官方和业界公认的开源漏洞库,结合NLP算法,从以自然语言编写的漏洞描述中,提取漏洞涉及的开源软件及版本信息,自动对涉及的工程做预警;同时尝试从开源仓库中获取问题修复版本及依赖项目的程序实体,自动替换存在问题的开源版本。
图1是本发明实施例中的开源软件安全漏洞处理方法的流程示意图一;如图1所示,该开源软件安全漏洞处理方法可以包括以下内容:
步骤S100:扫描待测工程源码获取其引用的开源软件清单;
其中,从文件实体和配置信息两方面,分析工程引用的开源软件及版本。
步骤S200:获取开源软件漏洞数据;
具体地,每天从CNNVD、CVE等业界漏洞信息库,以HTTP爬虫的形式增量获取前一天新增的漏洞预警报告,报告信息包括且不限于CNNVD编号、危害等级、发布时间、漏洞简介、漏洞公告等。
步骤S300:根据所述漏洞数据以及所述开源软件清单进行漏洞预警。
具体地,比对开源软件清单及开源软件漏洞数据,当研发工程涉及开源软件漏洞时,通过邮件、短信等方式及时向相关研发人员发出预警。
通过采用如上技术方案,能够在软件研发及后续运维过程中,自动对涉及开源软件的安全漏洞做及时预警及升级,及早规避风险,提高安全性能。
在一个可选的实施例中,参见图2,该开源软件安全漏洞处理方法还可以包括以下内容:
步骤S400:获取有安全漏洞的开源软件的更新版本;
具体地,针对存在漏洞的研发工程,对有安全漏洞的开源软件下载更新版本,更新源码中的开源软件引用信息,版本号需要高于存在漏洞的版本。同时,检索开源软件运行依赖的其他软件清单及版本依赖关系,同步更新依赖软件到匹配版本。
步骤S500:根据所述更新版本更新所述待测工程源码中引用的开源软件。
另外,更新完成后,通过邮件、短信等方式通知研发人员开展新版本的验证工作。对于多个依赖包版本冲突、版本信息确实等导致自动更新失败的情况,也通过邮件、短信等方式,通知研发人员手工处理。
在一个可选的实施例中,开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单,参见图3,该步骤S100可以包括以下内容:
步骤S110:扫描所述待测工程源码获取直接引用的开源软件的清单;
通过遍历待测工程源码,从开源程序实体、开源引用配置两方面,扫描待测工程源码中直接引用的开源软件清单及具体版本,并形成研发工程和开源软件的对照关系。
为了使本领域技术人员更好地理解本申请,下面举例对代码扫描的实施进行说明:
基于JAVA的研发工程,开源软件有两种引用模式,分别是直接导入JAR包实体,或者,以POM文件的方式指定需要从MAVEN仓库引用的JAR包信息。
对于直接导入JAR包实体的模式,JAR包会保存在工程本地,如图4所示,代码扫描时以迭代方式遍历文件夹,检索每个文件夹内以“JAR”后缀结尾的文件,从文件名、MF文件获取开源项目名以及具体的版本信息,添加到对照关系中。
对于以POM文件的方式指定JAR包引用信息、编译时再从数据仓库引用JAR包实体的模式,工程本地目录会指定引用配置文件pom.xml,该文件以xml格式编写,其中包含如图5所示的引用配置。代码扫描时先以迭代方式遍历文件夹,找到配置文件,再调用XML解析器,循环检索dependency节点,从artifactId、version子节点获取开源项目名以及具体的版本信息,添加到对照关系中。
步骤S120:从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
具体地,以HTTP调用的方式,从mavenrepository等开源软件登记网站,检索开源软件运行依赖的其他开源软件清单,具体包括依赖的软件名、软件版本信息。
在一个可选的实施例中,参见图6,该步骤S200可以包括以下内容:
步骤S210:扫描开源漏洞库增量采集新增的开源软件漏洞信息;
步骤S220:采用自然语言处理技术从所述开源软件漏洞数据中提取所述开源软件漏洞数据。
具体地,每天定时启动,扫描CNNVD、CVE等官方和业界公认的开源漏洞库,增量采集每天新增的开源软件漏洞信息,然后使用自然语言处理NLP算法,从以自然语言编写的漏洞描述中,提取漏洞涉及的开源软件及版本信息。
为了使本领域技术人员更好地理解本申请,下面举例对本发明的实现过程进行详细说明:
图7示出了本发明实施例中举例的一种开源软件安全漏洞处理装置的结构示意图;如图7所示,该开源软件安全漏洞处理装置包括:开源软件识别单元1、安全漏洞监控单元2、漏洞预警单元3、自动更新单元4、数据存储单元5。其中:
开源软件识别单元1结合持续集成自动构建的过程,定期启动对研发工程的源码做扫描,获取研发工程中引用的开源软件清单。
具体地,开源软件识别单元1包括:代码扫描模块以及开源依赖分析模块。
代码扫描模块通过遍历研发工程源码,从开源程序实体、开源引用配置两方面,扫描研发工程中引用的开源软件清单及具体版本,保存到数据存储单元5中,形成研发工程和开源软件的对照关系。
开源依赖分析模块以HTTP调用的方式,从mavenrepository等开源软件登记网站,检索开源软件运行依赖的其他开源软件清单,具体包括依赖的软件名、软件版本信息,保存到数据存储单元5。
安全漏洞监控单元2是安全漏洞预警信息的采集单元,结合持续集成的过程,每天定时启动,扫描CNNVD、CVE等官方和业界公认的开源漏洞库,增量采集每天新增的开源软件漏洞信息,然后使用自然语言处理NLP算法,从以自然语言编写的漏洞描述中,提取漏洞涉及的开源软件及版本信息,保存到数据存储单元5。
具体地,安全漏洞监控单元2包括:预警信息采集模块以及漏洞描述识别模块。
其中,预警信息采集模块负责以HTTP/HTTPS爬虫的方式,定期从CNNVD、CVE等官方和业界公认的开源漏洞库调用API,以增量的方式爬取前一天新增的软件漏洞信息,解析返回数据包,将CNNVD编号、危害等级、发布时间、漏洞简介、漏洞公告等文本信息做初步提取。
本发明实施例以使用PYTHON平台下的SCRAPY爬虫框架爬取CNNVD的漏洞信息为例,说明预警信息采集模块的工作原理。SCRAPY用于抓取WEB站点并从页面中提取结构化的数据。实际上也可选用其他常用的爬虫框架:
(1)在SCRAPY中定义爬虫SPRIDER,调用CNNVD提供的清单查询连接(http://www.cnnvd.org.cn/web/vulnerability/queryLds.tag?qstartdate={开始日期}&qenddate={结束日期}),传入查询开始和结束日期,以HTTP方式请求并返回结果。返回的清单是HTML格式的页面,其中关键的漏洞信息如图8所示。
(2)使用XPATH技术从返回页面的HTML源码中提取补丁漏洞的列表信息,形成列表清单,以JSON的方式保存,如图9所示。
(3)遍历上述列表清单JSON中list节点的元素,针对每一个元素,定义爬虫SPRIDER以HTTP方式请求DETAIL_URL对应的页面并返回结果。返回的清单同样是HTML格式的页面,记载漏洞预警的详细信息。
(4)使用XPATH技术从返回页面的HTML源码中提取每个安全漏洞的详细信息,如图10所示,以JSON的方式保存在数据存储单元5:
漏洞描述识别模块针对前述预警信息采集模块采集的安全漏洞详细信息,使用自然语言处理NLP算法提取关键信息,形成结构化的漏洞报告。需提取的关键信息包括但不限于漏洞涉及的开源软件名、涉及的版本范围。
本发明实施例以Usenix Security 2019中《Towards the Detection ofInconsistencies in Public Security Vulnerability Reports》论文中提出的一种VIEM识别模型为算法例子进行说明。实际上亦可选用常用的自然语言处理算法完成提取,包括且不限于TF-IDF、TextRank、LDA等。
VIEM识别模型由命名实体识别(NER)模型和关系抽取(RE)模型组成。NER根据非结构化的漏洞描述,引入双向的GRU网络,使用词向量和字符向量进行预处理,结合字典进一步提升处理精度,最终提取出漏洞描述中包含的开源软件名称集合和版本信息集合。NER模型处理完后,通过RE模型使用one-hot encoding来对每种可能的软件名称版本对进行编码,然后将这个编码输入到一个层次注意力网络中,以预测出软件名称对应的软件版本,最终建立软件名和版本间的关系,形成结构化的漏洞信息。VIEM模型的内部实现细节,在此不做展开。
继续前述的实施例描述,针对预警信息采集模块采集的以下漏洞描述:“ApacheDubbo 2.7.0版本至2.7.4版本、2.6.0版本至2.6.7版本和2.5.x版本中存在安全漏洞,该漏洞源于Apache Dubbo启用HTTP协议之后,Apache Dubbo对消息体处理不当。攻击者可利用该漏洞执行任意代码”,漏洞描述识别模块完成NLP及信息提取,形成JSON形式的结构化漏洞描述,如图11所示,保存到数据存储单元5。
漏洞预警单元3基于前述开源软件识别单元1、安全漏洞监控单元2的统计结果,识别研发工程中使用了有安全漏洞的开源软件的情况,通过邮件、短信等方式及时向相关研发人员发出预警。漏洞预警单元3遍历由开源软件识别单元1生成依赖清单,与安全漏洞监控单元2生成的结构化漏洞描述做检索匹配。当开源软件名在漏洞集合中存在,且版本属于漏洞涉及的版本,即认为该研发工程存在安全漏洞,需要自动升级或人工处理。
其中,针对存在漏洞的研发工程,自动更新单元4自动发起升级,对有安全漏洞的开源软件下载更新版本,更新源码中的开源软件引用信息,版本号需要高于存在漏洞的版本。同时,自动更新单元4根据开源软件识别单元1生成的依赖信息,检索开源软件运行依赖的其他软件清单及版本依赖关系,同步更新依赖软件到匹配版本。
在前述实施例中:
对于直接导入JAR包实体的模式,自动更新单元4以HTTP方式连接maven代码仓库,下载新版本开源JAR包实体,替换源码中的旧版本JAR包;
对于以POM文件的方式指定JAR包引用信息,自动更新单元4以HTTP方式获取新版本的版本号信息,更新POM.XML文件中对应dependency节点的版本信息。
更新完成后,自动更新单元4通过邮件、短信等方式,通知研发人员开展新版本的验证工作。对于多个依赖包版本冲突、版本信息确实等导致自动更新失败的情况,自动更新单元4也通过邮件、短信等方式,通知研发人员手工处理。
图12示出了本发明实施例中举例的一种开源软件安全漏洞处理方法的流程图;如图12所示,该开源软件安全漏洞处理方法可以包括以下内容:
步骤一:扫描研发工程源码中的开源软件;
根据本发明的实施例,装置扫描研发工程源码,从文件实体和配置信息两方面,分析工程引用的开源软件及版本。
步骤二:开源软件依赖分析;
根据本发明的实施例,装置从开源软件登记网站,检索研发工程相关的开源软件,分析其依赖的其他开源项目信息。
步骤三:业界漏洞信息库增量爬取漏洞预警报告;
根据本发明实施例,装置每天从CNNVD、CVE等业界漏洞信息库,以HTTP爬虫的形式增量获取前一天新增的漏洞预警报告,报告信息包括且不限于CNNVD编号、危害等级、发布时间、漏洞简介、漏洞公告等。
步骤四:从漏洞预警描述中识别提取关键信息;
根据本发明实施例,装置根据采集到的漏洞预警报告,使用自然语言处理NLP技术提取关键信息,形成结构化的漏洞报告。需提取的关键信息包括但不限于漏洞涉及的开源软件名、涉及的版本范围。
步骤五:漏洞信息预警;
根据本发明实施例,装置比对开源软件引用清单及漏洞预警报告,当研发工程涉及开源软件漏洞时,通过邮件、短信等方式及时向相关研发人员发出预警。
步骤六:开源软件自动更新;
根据本发明实施例,装置对有安全漏洞的开源软件,从软件仓库下载新版本软件实体或查询新版本软件信息,更新研发工程的开源软件实体和配置文件,并根据更新情况,通知研发人员做版本验证或手工处理。
综上所述,本发明提出一种开源软件安全漏洞处理方法,包括对研发工程中使用的开源软件做扫描识别、依赖关系分析、对开源漏洞信息的定时采集、基于自然语言处理的漏洞信息提取、开源软件漏洞预警及自动更新等。该方法用于实时监控开源软件安全漏洞库公布的漏洞信息,做结构化提取,并将漏洞信息与研发工程中使用的开源软件做匹配。对涉及安全漏洞的研发工程,及时预警并自动升级开源软件。相应地,本发明同时提出一种开源软件安全漏洞预警及自动升级的装置,可对研发工程中由于开源软件安全漏洞而引起的安全风险做及时预警,减少工程风险,提升工程质量。
基于同一发明构思,本申请实施例还提供了一种开源软件安全漏洞处理装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于开源软件安全漏洞处理装置解决问题的原理与上述方法相似,因此开源软件安全漏洞处理装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图13是本发明实施例中的开源软件安全漏洞处理装置的结构框图一。如图13所示,该开源软件安全漏洞处理装置具体包括:扫描模块10、漏洞数据获取模块20以及漏洞预警模块30。
扫描模块10扫描待测工程源码获取其引用的开源软件清单;
漏洞数据获取模块20获取开源软件漏洞数据;
漏洞预警模块30根据所述漏洞数据以及所述开源软件清单进行漏洞预警。
通过采用如上技术方案,能够在软件研发及后续运维过程中,自动对涉及开源软件的安全漏洞做及时预警及升级,及早规避风险,提高安全性能。
在一个可选的实施例中,参见图14,该开源软件安全漏洞处理装置还可以包括:更新版本获取模块40以及软件更新模块50。
更新版本获取模块40获取有安全漏洞的开源软件的更新版本;
软件更新模块50根据所述更新版本更新所述待测工程源码中引用的开源软件。
在一个可选的实施例中,开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单;参见图15,该扫描模块包括:直接引用扫描单元11以及间接引用扫描单元12。
直接引用扫描单元11扫描所述待测工程源码获取直接引用的开源软件的清单;
间接引用扫描单元12从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
在一个可选的实施例中,参见图16,该漏洞数据获取模块包括:漏洞信息采集单元21以及数据提取单元22。
漏洞信息采集单元21扫描开源漏洞库增量采集新增的开源软件漏洞信息;
数据提取单元22采用自然语言处理技术从所述开源软件漏洞数据中提取所述开源软件漏洞数据。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述开源软件安全漏洞处理方法的步骤。
下面参考图17,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图17所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的开源软件安全漏洞处理方的步骤。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种开源软件安全漏洞处理方法,其特征在于,包括:
扫描待测工程源码获取其引用的开源软件清单;
获取开源软件漏洞数据;
根据所述漏洞数据以及所述开源软件清单进行漏洞预警。
2.根据权利要求1所述的开源软件安全漏洞处理方法,其特征在于,还包括:
获取有安全漏洞的开源软件的更新版本;
根据所述更新版本更新所述待测工程源码中引用的开源软件。
3.根据权利要求1所述的开源软件安全漏洞处理方法,其特征在于,所述开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单;
所述扫描待测工程源码获取其引用的开源软件清单,包括:
扫描所述待测工程源码获取直接引用的开源软件的清单;
从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
4.根据权利要求1所述的开源软件安全漏洞处理方法,其特征在于,所述获取开源软件漏洞数据,包括:
扫描开源漏洞库增量采集新增的开源软件漏洞信息;
采用自然语言处理技术从所述开源软件漏洞数据中提取所述开源软件漏洞数据。
5.一种开源软件安全漏洞处理装置,其特征在于,包括:
扫描模块,扫描待测工程源码获取其引用的开源软件清单;
漏洞数据获取模块,获取开源软件漏洞数据;
漏洞预警模块,根据所述漏洞数据以及所述开源软件清单进行漏洞预警。
6.根据权利要求5所述的开源软件安全漏洞处理装置,其特征在于,还包括:
更新版本获取模块,获取有安全漏洞的开源软件的更新版本;
软件更新模块,根据所述更新版本更新所述待测工程源码中引用的开源软件。
7.根据权利要求5所述的开源软件安全漏洞处理装置,其特征在于,所述开源软件清单包括:直接引用的开源软件的清单以及间接引用的开源软件清单;
所述扫描模块包括:
直接引用扫描单元,扫描所述待测工程源码获取直接引用的开源软件的清单;
间接引用扫描单元,从开源软件登记网站检索直接引用的开源软件运行依赖的其他开源软件清单,作为间接引用的开源软件清单。
8.根据权利要求5所述的开源软件安全漏洞处理装置,其特征在于,所述漏洞数据获取模块包括:
漏洞信息采集单元,扫描开源漏洞库增量采集新增的开源软件漏洞信息;
数据提取单元,采用自然语言处理技术从所述开源软件漏洞数据中提取所述开源软件漏洞数据。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4任一项所述的开源软件安全漏洞处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至4任一项所述的开源软件安全漏洞处理方法的步骤。
CN202010757098.0A 2020-07-31 2020-07-31 开源软件安全漏洞处理方法和装置 Pending CN111931183A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010757098.0A CN111931183A (zh) 2020-07-31 2020-07-31 开源软件安全漏洞处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010757098.0A CN111931183A (zh) 2020-07-31 2020-07-31 开源软件安全漏洞处理方法和装置

Publications (1)

Publication Number Publication Date
CN111931183A true CN111931183A (zh) 2020-11-13

Family

ID=73315887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010757098.0A Pending CN111931183A (zh) 2020-07-31 2020-07-31 开源软件安全漏洞处理方法和装置

Country Status (1)

Country Link
CN (1) CN111931183A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112487366A (zh) * 2020-12-21 2021-03-12 中国信息通信研究院 一种软件开源风险确定方法和装置
CN112579476A (zh) * 2021-02-23 2021-03-30 北京北大软件工程股份有限公司 一种漏洞和软件对齐的方法、装置以及存储介质
CN112835993A (zh) * 2021-02-01 2021-05-25 中国工商银行股份有限公司 分级方法、开源软件扫描方法及装置
CN113778509A (zh) * 2021-08-13 2021-12-10 国网河北省电力有限公司电力科学研究院 一种确定开源组件的版本的方法、存储介质和电子装置
CN117131514A (zh) * 2023-10-25 2023-11-28 中汽智联技术有限公司 一种车联网供应链安全漏洞预警方法、系统和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101751388B1 (ko) * 2016-07-05 2017-06-27 (주)엔키소프트 오픈소스 취약점 분석 대상 검색 및 수집을 위한 빅데이터 분석 기반 웹 크롤링 시스템 및 그 방법
CN110543767A (zh) * 2019-08-10 2019-12-06 苏州浪潮智能科技有限公司 一种针对开源组件漏洞自动化监控方法及系统
CN111095895A (zh) * 2017-09-14 2020-05-01 西门子公司 检查自动化系统项目安全漏洞的系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101751388B1 (ko) * 2016-07-05 2017-06-27 (주)엔키소프트 오픈소스 취약점 분석 대상 검색 및 수집을 위한 빅데이터 분석 기반 웹 크롤링 시스템 및 그 방법
CN111095895A (zh) * 2017-09-14 2020-05-01 西门子公司 检查自动化系统项目安全漏洞的系统和方法
CN110543767A (zh) * 2019-08-10 2019-12-06 苏州浪潮智能科技有限公司 一种针对开源组件漏洞自动化监控方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
1314: "Docker镜像扫描原理", pages 1 - 3, Retrieved from the Internet <URL:http://www.1314helper.cn/post/docker_image_scan/> *
宋绪言: "基于同源性检测的预标识漏洞识别分析技术研究与实现", 中国优秀硕士学位论文全文数据库(电子期刊), pages 3 - 4 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112487366A (zh) * 2020-12-21 2021-03-12 中国信息通信研究院 一种软件开源风险确定方法和装置
CN112487366B (zh) * 2020-12-21 2024-03-12 中国信息通信研究院 一种软件开源风险确定方法和装置
CN112835993A (zh) * 2021-02-01 2021-05-25 中国工商银行股份有限公司 分级方法、开源软件扫描方法及装置
CN112835993B (zh) * 2021-02-01 2024-03-22 中国工商银行股份有限公司 分级方法、开源软件扫描方法及装置
CN112579476A (zh) * 2021-02-23 2021-03-30 北京北大软件工程股份有限公司 一种漏洞和软件对齐的方法、装置以及存储介质
CN113778509A (zh) * 2021-08-13 2021-12-10 国网河北省电力有限公司电力科学研究院 一种确定开源组件的版本的方法、存储介质和电子装置
CN117131514A (zh) * 2023-10-25 2023-11-28 中汽智联技术有限公司 一种车联网供应链安全漏洞预警方法、系统和存储介质
CN117131514B (zh) * 2023-10-25 2024-04-09 中汽智联技术有限公司 一种车联网供应链安全漏洞预警方法、系统和存储介质

Similar Documents

Publication Publication Date Title
CN111931183A (zh) 开源软件安全漏洞处理方法和装置
US20120124028A1 (en) Unified Application Discovery across Application Stores
CN105630684A (zh) 软件开发工具包识别方法和装置
CN105183912A (zh) 异常日志确定方法和装置
CN107547524A (zh) 一种网页检测方法、装置和设备
CN112711438A (zh) 依赖组件信息提取方法、设备及计算机可读存储介质
US10291492B2 (en) Systems and methods for discovering sources of online content
EP3671512A1 (en) Automated software vulnerability determination
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
Alfadel et al. On the discoverability of npm vulnerabilities in node. js projects
US11775290B2 (en) Detection of API backward compatibility across software versions
US12001815B2 (en) Cloud portability code scanning tool
CN111158777A (zh) 组件调用方法、装置及计算机可读存储介质
CN116414855A (zh) 信息处理方法及装置、电子设备和计算机可读存储介质
CN115729590A (zh) 服务部署方法、装置、设备和计算机可读存储介质
CN113326506A (zh) 一种小程序监控方法及装置
CN113392311A (zh) 字段搜索方法、字段搜索装置、电子设备及存储介质
CN108491448B (zh) 一种数据推送的方法和装置
CN112231302A (zh) Java开源组件数据库的维护方法、装置及存储介质
CN111859387A (zh) Android平台软件漏洞模式的自动化构建方法
CN114116765A (zh) Mybatis框架SQL语句异常检测方法、服务器及系统
CN113608817B (zh) 弹框处理方法及系统
CN113343159B (zh) 一种从任意渠道快速获取数据并分析与存储的方法及系统
US20230169191A1 (en) System and method for detecting urls using rendered content machine learning
US20220292097A1 (en) Continuous delivery of database queries for applications based on named and versioned parameterized database queries

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