CN113139192A - 基于知识图谱的第三方库安全风险分析方法及系统 - Google Patents

基于知识图谱的第三方库安全风险分析方法及系统 Download PDF

Info

Publication number
CN113139192A
CN113139192A CN202110382640.3A CN202110382640A CN113139192A CN 113139192 A CN113139192 A CN 113139192A CN 202110382640 A CN202110382640 A CN 202110382640A CN 113139192 A CN113139192 A CN 113139192A
Authority
CN
China
Prior art keywords
lib
party library
cve
vulnerability
party
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
Application number
CN202110382640.3A
Other languages
English (en)
Other versions
CN113139192B (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.)
Yangzhou University
Original Assignee
Yangzhou 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 Yangzhou University filed Critical Yangzhou University
Priority to CN202110382640.3A priority Critical patent/CN113139192B/zh
Publication of CN113139192A publication Critical patent/CN113139192A/zh
Application granted granted Critical
Publication of CN113139192B publication Critical patent/CN113139192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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

本发明公开了一种基于知识图谱的第三方库安全风险分析方法及系统,方法包括以下步骤:采集项目依赖配置文件,迭代获取多层第三方库lib信息及api调用关系;根据lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息;根据CVE的相关属性获取含有漏洞的第三方库中受影响的api;将生成的第三方库及漏洞实体、关系信息文件导入知识图谱工具构建知识图谱;通过构建好的知识图谱实现第三方库安全风险分析。本发明构建了一种存储第三方库多个层级之间的调用信息及各层级之间存在精确到api级别的漏洞信息的知识图谱,可对第三方库调用链进行安全漏洞风险分析,使软件开发者全方位考虑到第三方库安全漏洞信息,从而减少安全漏洞对软件开发的隐患。

Description

基于知识图谱的第三方库安全风险分析方法及系统
技术领域
本发明属于软件安全技术领域,特别涉及一种基于知识图谱的第三方库安全风险分析方法及系统。
背景技术
在软件开发领域内,大规模软件几乎都会使用第三方库依赖来增加功能性。然而,有约超过1/4的第三方库依赖存在安全漏洞隐患,而且95%的漏洞等级在中危(Middle)及以上,16%的漏洞等级为严重等级(Critical),再加上第三方库间也存在调用与被调用的关系,如果间接调用的第三方库中存在漏洞风险,原项目也会有被漏洞风险影响的可能性。如果这些安全漏洞被恶意开发者利用,会造成不可估计的损失。所以对第三方库调用链进行漏洞分析检测和风险分析十分必要。
国内外研究现状下,对第三方库依赖进行分析的方法有许多,如白名单匹配检测、提取函数方法签名、基于聚类方法技术、基于机器学习方法等。但这些技术并没有在安全漏洞的角度进行对第三方库的风险分析。例如,白名单匹配检测方法中仅是对代码中的包名或者第三方库的包名进行比较,一旦应用使用了代码混淆,对第三方库的分析就会不准确,容易误导开发者。国外OWASP基金会提出了一种工具OWASP Dependency Check,它能够连接国家计算机通用漏洞数据库(National Vulnerability Database,NVD)数据库对比项目依赖项列表,筛选出对应的通用漏洞披露(Common Vulnerabilities and Exposures,CVE)。目前的风险分析技术仅仅是对第三方库进行一系列简单检测工作,或者是对单个第三方库进行漏洞分析,没有在调用链上考虑漏洞风险,在第三方库安全漏洞风险存在方面存在分析不全面、漏报、误报的现象。
发明内容
发明目的:本发明的目的在于针对上述现有技术存在的问题,提供一种基于知识图谱的第三方库安全风险分析方法及系统,为第三方库及调用过程中间接依赖时存在的漏洞或者隐藏漏洞进行安全风险分析。
技术方案:实现本发明目的的技术解决方案为:基于知识图谱的第三方库安全风险分析方法,所述方法包括以下步骤:
(1)采集项目依赖配置文件作为初始数据集,并从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的文件,以及记录第三方库实体间的精确到api级别的调用关系文件;
(2)根据步骤(1)中获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的文件;
(3)根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的文件;
(4)将步骤(1)-(3)生成的记录实体和关系的文件导入知识图谱工具生成知识图谱;
(5)通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
进一步地,所述步骤(1)中使用并行迭代算法思想实现lib信息及api调用关系的数据爬取与整理,其中第三方库实体的属性包括lib的编号、版本号、类别和发布时间,具体步骤包括:
(1.1)从项目依赖配置文件中抽取出第一层第三方库信息lib1
(1.2)通过网络爬虫获取lib1中第三方库的实体属性信息,更新生成lib1.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应csv文件;
(1.3)使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息,更新生成libn.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应的libn-1_libn.csv文件;其中n表示分析的第三方库调用的层数;
(1.4)将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;
(1.5)将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
进一步地,所述步骤(2)中在复制到本地的NVD数据库中索引CVE,具体步骤包括:
(2.1)在本地数据库中添加NVD数据库中的CVE相关信息,将步骤(1)中的生成记录所有的第三方库实体的文件里lib条目与其匹配,筛选出对应的CVE条目;
(2.2)将CVE条目通过爬虫工具在CVE、CVEdetails两个平台进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性包括CVE的编号、漏洞类型、漏洞描述和URLs,生成记录所有的漏洞实体的CVE.csv文件,并自动更新。
进一步地,所述步骤(3)生成记录第三方库和漏洞关系的文件的具体步骤包括:
(3.1)扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,并保存;
(3.2)建立lib条目与CVE条目之间的关系,关系的属性包括对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
进一步地,所述步骤(5)中通过构建好的知识图谱实现第三方库安全风险分析,具体步骤包括:
(5.1)输入待分析的新的CVE漏洞信息,更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系;
(5.2)使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性标记成true,否则为false;
(5.3)将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将标记成true,否则为false;
(5.4)将所有关系属性标记为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
基于相同的发明构思,本发明提供的基于知识图谱的第三方库安全风险分析系统,包括:
信息采集模块,用于采集项目依赖配置文件作为初始数据集;
第一数据爬取及处理模块,用于从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的文件,以及记录第三方库实体间的精确到api级别的调用关系文件;
第二数据爬取及处理模块,用于根据获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的文件;以及根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的文件;
知识图谱构建模块,用于将数据爬取及处理模块生成的记录实体和关系的文件导入知识图谱工具生成知识图谱;
以及,第三方库安全风险分析模块,用于通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
进一步地,所述第一数据爬取及处理模块,包括:
第三方库信息及调用关系获取单元,用于从项目依赖配置文件中抽取出第一层第三方库信息lib1;通过网络爬虫获取lib1中第三方库的实体属性信息,属性包括lib的编号、版本号、类别和发布时间,更新生成lib1.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应csv文件;使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息,更新生成libn.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应的libn-1_libn.csv文件;其中n表示分析的第三方库调用的层数;
以及,合并去重单元,用于将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
进一步地,所述第二数据爬取及处理模块,包括:
CVE信息获取单元,用于在本地数据库中添加NVD数据库中的CVE相关信息,将所有的第三方库实体的文件里lib条目与其匹配,筛选出对应的CVE条目;将CVE条目通过爬虫工具在CVE、CVEdetails两个平台进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性至少包括CVE的编号、漏洞类型、漏洞描述和URLs,生成记录所有的漏洞实体的CVE.csv文件,并自动更新;
以及,第三方库和漏洞关系获取单元,用于扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,并保存;建立lib条目与CVE条目之间的关系,关系的属性包括对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
进一步地,所述第三方库安全风险分析模块,包括:
新漏洞连接单元,用于输入待分析的新的CVE漏洞信息,更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系;
调用链搜索单元,用于使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性标记成true,否则为false;将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将标记成true,否则为false;
以及,风险结果输出单元,用于将所有关系属性标记为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
基于相同的发明构思,本发明提供的基于知识图谱的第三方库安全风险分析系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的基于知识图谱的第三方库安全风险分析方法。
有益效果:本发明与现有技术相比,其显著优点为:1)搜集第三方库依赖以及漏洞相关信息,并用相应算法将数据趋于结构化,便于构建知识图谱,同时将第三方库间api调用情况分层处理,针对每层调用实现了api调用关系、漏洞关系的构建;2)采用并行迭代思想进行第三方库按层进行数据扩展,提高了数据爬取及处理的效率;3)构建了一种存储第三方库多个层级之间的调用信息及各层级之间存在精确到api级别的漏洞信息的知识图谱,并利用该知识图谱进一步对第三方库调用链进行安全漏洞风险分析,使软件开发者全方位考虑到第三方库安全漏洞信息,从而减少安全漏洞对软件开发的隐患。
附图说明
图1为本发明一个实施例中的顶层系统流程图。
图2为本发明一个实施例中并行迭代获取第三方库lib信息及api调用关系流程图。
图3为一个实施例中第三方库索引CVE流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在一个实施例中,如图1所示,基于知识图谱的第三方库安全风险分析方法,所述方法包括以下步骤:
(1)采集若干项目依赖配置文件,例如基于Maven管理的软件的pom.xml文件作为初始数据集,并从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的lib_all.csv文件,以及记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件;
(2)根据步骤(1)中获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的CVE.csv文件;
(3)根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件;
(4)将生成的lib_all.csv、lib_relationship.csv、CVE.csv、lib_CVE.csv文件导入知识图谱工具,例如Neo4j接口生成知识图谱。
(5)通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
进一步地,在其中一个实施例中,如图2所示,步骤(1)中具体使用了并行迭代算法思想实现lib信息及api调用关系的数据爬取与整理,其中第三方库实体的属性包括lib的编号、版本号、类别和发布时间等,本例中实体为lib(groupId,artifactId,version,License,Categories,Time of release,Used times),具体步骤包括:
(1.1)从项目配置文件中抽取出第一层第三方库信息lib1
(1.2)通过网络爬虫在Maven repositories中获取lib1中第三方库条目完整实体属性信息,更新生成lib1.csv文件并下载对应的jar文件,以便使用callgraph工具分析第三方库之间的api调用关系(libA.classa.function1→libB.classb.function2),生成相应csv文件;
(1.3)使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫在Maven repositories中获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息(n表示分析的第三方库调用的层数),更新生成libn.csv文件并下载对应的jar文件,以便使用callgraph工具分析第三方库之间的api调用关系(libA.classa.function1→libB.classb.function2),生成相应的libn-1_libn.csv文件;
(1.4)将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;
(1.5)将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
进一步地,在其中一个实施例中,如图3所示,步骤(2)2中在复制到本地的NVD数据库中索引CVE,具体步骤包括:
(2.1)在本地数据库中添加NVD官方数据库中的CVE相关信息,如通用平台枚举(Common Platform Enumeration,CPE)条目(NVD、CVE数据索引)等字段,将步骤(1)中的lib_all.csv文件里lib条目与其匹配,筛选出对应的CVE条目;
(2.2)将CVE条目通过爬虫工具在CVE、CVEdetails两个网站进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性包括CVE的编号、漏洞类型、漏洞描述和URLs(补丁网络地址)等,具体为CVE(CVEID,CVSSV2,ConfidentialityImpact,Integrity Impact,Availability Impact,Access Complexity,Authentication,Gained Access,Vulnerability Type(s),CWE,Description,URLs),生成记录所有的漏洞实体的CVE.csv文件,并自动更新。本实施例中的爬虫工具可以采用分离联网爬虫过程、数据解析过程、以及使用多线程并发、异步的方法进行优化,如将spider中的连接mavenrepositories中的URL下载过程模块与对HTML解析模块进行分离式开发,从而实现爬虫效率的提升;使用python中aiohttp模块异步地处理HTTP请求,使用asyncio模块实现异步IO等。
进一步地,在其中一个实施例中,步骤3生成第三方库和漏洞关系的文件,具体步骤包括:
(3.1)扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过上述URL中信息提取出含有漏洞的第三方库中受影响的api(具体提取patch或者commit中漏洞修复代码中的类名及函数名),并保存;
(3.2)建立lib条目与CVE条目之间的关系,关系的属性为对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
进一步地,在其中一个实施例中,步骤5中通过构建好的知识图谱实现第三方库安全风险分析,具体步骤包括:
(5.1)输入待分析的新的CVE漏洞信息CVE(CVEID,CVSSV2,ConfidentialityImpact,Integrity Impact,Availability Impact,Access Complexity,Authentication,Gained Access,Vulnerability Type(s),CWE,Description,URLs),更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过上述URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系(libA.classa.function1→CVE);
(5.2)使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系(libA.classa.function1→libB.classb.function2)上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性Tag成true,否则为false;
(5.3)将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将Tag成true,否则为false;
(5.4)将所有关系属性Tag为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
在一个实施例中,提供了一种基于知识图谱的第三方库安全风险分析系统,该系统包括:
信息采集模块,用于采集项目依赖配置文件作为初始数据集;
第一数据爬取及处理模块,用于从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的文件,以及记录第三方库实体间的精确到api级别的调用关系文件;
第二数据爬取及处理模块,用于根据获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的文件;以及根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的文件;
知识图谱构建模块,用于将数据爬取及处理模块生成的记录实体和关系的文件导入知识图谱工具生成知识图谱;
以及,第三方库安全风险分析模块,用于通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
进一步地,在其中一个实施例中,第一数据爬取及处理模块包括:
第三方库信息及调用关系获取单元,用于从项目依赖配置文件中抽取出第一层第三方库信息lib1;通过网络爬虫获取lib1中第三方库的实体属性信息,属性包括lib的编号、版本号、类别和发布时间,更新生成lib1.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应csv文件;使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息,更新生成libn.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应的libn-1_libn.csv文件;其中n表示分析的第三方库调用的层数;
以及,合并去重单元,用于将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
进一步地,在其中一个实施例中,第二数据爬取及处理模块包括:
CVE信息获取单元,用于在本地数据库中添加NVD数据库中的CVE相关信息,将所有的第三方库实体的文件里lib条目与其匹配,筛选出对应的CVE条目;将CVE条目通过爬虫工具在CVE、CVEdetails两个平台进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性至少包括CVE的编号、漏洞类型、漏洞描述和URLs,生成记录所有的漏洞实体的CVE.csv文件,并自动更新;
以及,第三方库和漏洞关系获取单元,用于扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,并保存;建立lib条目与CVE条目之间的关系,关系的属性包括对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
进一步地,在其中一个实施例中,第三方库安全风险分析模块包括:
新漏洞连接单元,用于输入待分析的新的CVE漏洞信息,更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系;
调用链搜索单元,用于使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性标记成true,否则为false;将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将标记成true,否则为false;
以及,风险结果输出单元,用于将所有关系属性标记为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
关于基于知识图谱的第三方库安全风险分析系统的具体限定可以参见上文中对于基于知识图谱的第三方库安全风险分析方法的限定,在此不再赘述。上述基于知识图谱的第三方库安全风险分析方法中的各个模块/单元可全部或部分通过软件、硬件及其组合来实现。上述各模块/单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器执行以上各个模块对应的操作。
在一个实施例中,提供了一种基于知识图谱的第三方库安全风险分析系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被加载至处理器时实现上述基于知识图谱的第三方库安全风险分析方法。
本发明构建了一种存储第三方库多个层级之间的调用信息及各层级之间存在精确到api级别的漏洞信息的知识图谱,并利用该知识图谱进一步对第三方库调用链进行安全漏洞风险分析,使软件开发者全方位考虑到第三方库安全漏洞信息,从而减少安全漏洞对软件开发的隐患。

Claims (10)

1.基于知识图谱的第三方库安全风险分析方法,其特征在于,所述方法包括以下步骤:
(1)采集项目依赖配置文件作为初始数据集,并从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的文件,以及记录第三方库实体间的精确到api级别的调用关系文件;
(2)根据步骤(1)中获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的文件;
(3)根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的文件;
(4)将步骤(1)-(3)生成的记录实体和关系的文件导入知识图谱工具生成知识图谱;
(5)通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
2.根据权利要求1所述的基于知识图谱的第三方库安全风险分析方法,其特征在于,所述步骤(1)中使用并行迭代算法思想实现lib信息及api调用关系的数据爬取与整理,其中第三方库实体的属性包括lib的编号、版本号、类别和发布时间,具体步骤包括:
(1.1)从项目依赖配置文件中抽取出第一层第三方库信息lib1
(1.2)通过网络爬虫获取lib1中第三方库的实体属性信息,更新生成lib1.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应csv文件;
(1.3)使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息,更新生成libn.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应的libn-1_libn.csv文件;其中n表示分析的第三方库调用的层数;
(1.4)将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;
(1.5)将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
3.根据权利要求1所述的基于知识图谱的第三方库安全风险分析方法,其特征在于,所述步骤(2)中在复制到本地的NVD数据库中索引CVE,具体步骤包括:
(2.1)在本地数据库中添加NVD数据库中的CVE相关信息,将步骤(1)中的生成记录所有的第三方库实体的文件里lib条目与其匹配,筛选出对应的CVE条目;
(2.2)将CVE条目通过爬虫工具在CVE、CVEdetails两个平台进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性包括CVE的编号、漏洞类型、漏洞描述和URLs,生成记录所有的漏洞实体的CVE.csv文件,并自动更新。
4.根据权利要求1所述的基于知识图谱的第三方库安全风险分析方法,其特征在于,所述步骤(3)生成记录第三方库和漏洞关系的文件的具体步骤包括:
(3.1)扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,并保存;
(3.2)建立lib条目与CVE条目之间的关系,关系的属性包括对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
5.根据权利要求1所述的基于知识图谱的第三方库安全风险分析方法,其特征在于,所述步骤(5)中通过构建好的知识图谱实现第三方库安全风险分析,具体步骤包括:
(5.1)输入待分析的新的CVE漏洞信息,更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系;
(5.2)使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性标记成true,否则为false;
(5.3)将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将标记成true,否则为false;
(5.4)将所有关系属性标记为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
6.基于知识图谱的第三方库安全风险分析系统,其特征在于,包括:
信息采集模块,用于采集项目依赖配置文件作为初始数据集;
第一数据爬取及处理模块,用于从采集的文件中迭代获取多层第三方库lib信息及api调用关系,生成记录所有的第三方库实体的文件,以及记录第三方库实体间的精确到api级别的调用关系文件;
第二数据爬取及处理模块,用于根据获取的lib信息在NVD数据库中索引CVE以搜集第三方库的漏洞信息,生成记录所有的漏洞实体的文件;以及根据漏洞实体的URLs属性获取含有漏洞的第三方库中受影响的api信息,生成记录第三方库和漏洞关系的文件;
知识图谱构建模块,用于将数据爬取及处理模块生成的记录实体和关系的文件导入知识图谱工具生成知识图谱;
以及,第三方库安全风险分析模块,用于通过构建好的知识图谱实现第三方库安全风险分析,得到CVE漏洞直接和间接影响到的第三方库。
7.根据权利要求6所述的基于知识图谱的第三方库安全风险分析系统,其特征在于,所述第一数据爬取及处理模块,包括:
第三方库信息及调用关系获取单元,用于从项目依赖配置文件中抽取出第一层第三方库信息lib1;通过网络爬虫获取lib1中第三方库的实体属性信息,属性包括lib的编号、版本号、类别和发布时间,更新生成lib1.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应csv文件;使用并行迭代的方法,将libn-1.csv文件中的第三方库列表通过网络爬虫获取调用libn-1第三方库列表的lib信息,并生成libn中第三方库列表完整实体属性信息,更新生成libn.csv文件并下载对应的代码文件,以分析第三方库之间的api调用关系,生成相应的libn-1_libn.csv文件;其中n表示分析的第三方库调用的层数;
以及,合并去重单元,用于将lib1.csv…libn.csv文件进行lib条目去重,合并生成记录所有第三方库实体的lib_all.csv文件;将lib1_lib2.csv…libn-1_libn.csv文件中api调用关系条目进行去重,合并生成记录第三方库实体间的精确到api级别的调用关系的lib_relationship.csv文件。
8.根据权利要求6所述的基于知识图谱的第三方库安全风险分析系统,其特征在于,所述第二数据爬取及处理模块,包括:
CVE信息获取单元,用于在本地数据库中添加NVD数据库中的CVE相关信息,将所有的第三方库实体的文件里lib条目与其匹配,筛选出对应的CVE条目;将CVE条目通过爬虫工具在CVE、CVEdetails两个平台进行CVE信息更新,将两个网站中的数据取并集,生成CVE实体条目,其中CVE实体的属性至少包括CVE的编号、漏洞类型、漏洞描述和URLs,生成记录所有的漏洞实体的CVE.csv文件,并自动更新;
以及,第三方库和漏洞关系获取单元,用于扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,并保存;建立lib条目与CVE条目之间的关系,关系的属性包括对应受影响的api信息,生成记录第三方库和漏洞关系的lib_CVE.csv文件。
9.根据权利要求6所述的基于知识图谱的第三方库安全风险分析系统,其特征在于,所述第三方库安全风险分析模块,包括:
新漏洞连接单元,用于输入待分析的新的CVE漏洞信息,更新到知识图谱中,并扫描CVE实体条目中的URLs属性,筛选出patch或者commit,通过URL中信息提取出含有漏洞的第三方库中受影响的api,与对应的第三方库建立关系;
调用链搜索单元,用于使用广度优先搜索BFS算法从新的CVE漏洞节点开始遍历图谱,在每一个调用链上的关系上,判断前一个关系的尾部是否与后一个关系的头部相同,若相同,则将两边属性标记成true,否则为false;将每一层上的第三方库存在漏洞的api与调用该第三方库api相比较,判断是否调用了有漏洞影响的第三方库api,如果相同,将标记成true,否则为false;
以及,风险结果输出单元,用于将所有关系属性标记为false的关系隐藏,输出第三方库漏洞风险调用链,分析出新加入的CVE漏洞直、间接影响到的第三方库。
10.基于知识图谱的第三方库安全风险分析系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被加载至处理器时实现根据权利要求1-5任一项所述的基于知识图谱的第三方库安全风险分析方法。
CN202110382640.3A 2021-04-09 2021-04-09 基于知识图谱的第三方库安全风险分析方法及系统 Active CN113139192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110382640.3A CN113139192B (zh) 2021-04-09 2021-04-09 基于知识图谱的第三方库安全风险分析方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110382640.3A CN113139192B (zh) 2021-04-09 2021-04-09 基于知识图谱的第三方库安全风险分析方法及系统

Publications (2)

Publication Number Publication Date
CN113139192A true CN113139192A (zh) 2021-07-20
CN113139192B CN113139192B (zh) 2024-04-19

Family

ID=76810501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110382640.3A Active CN113139192B (zh) 2021-04-09 2021-04-09 基于知识图谱的第三方库安全风险分析方法及系统

Country Status (1)

Country Link
CN (1) CN113139192B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033894A (zh) * 2022-08-12 2022-09-09 中国电子科技集团公司第三十研究所 一种基于知识图谱的软件组件供应链安全检测方法及装置
CN115470126A (zh) * 2022-09-05 2022-12-13 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 软件安全漏洞模式数据库构建与软件渗透测试方法
CN116244694A (zh) * 2022-12-04 2023-06-09 云南电网有限责任公司信息中心 一种基于知识图谱的固件漏洞发现方法
CN117436086A (zh) * 2023-10-26 2024-01-23 华中科技大学 一种基于知识图谱的软件供应链安全分析方法及系统
CN114626068B (zh) * 2022-02-24 2024-06-07 南开大学 基于java函数调用序列的高精度第三方库漏洞模块检测方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977575A (zh) * 2017-12-20 2018-05-01 北京关键科技股份有限公司 一种基于私有云平台的代码组成分析系统和方法
CN109347801A (zh) * 2018-09-17 2019-02-15 武汉大学 一种基于多源词嵌入和知识图谱的漏洞利用风险评估方法
CN110909364A (zh) * 2019-12-02 2020-03-24 西安工业大学 面向源代码双极性软件安全漏洞图谱构建方法
CN111241307A (zh) * 2020-01-23 2020-06-05 复旦大学 面向软件系统的软件项目及第三方库知识图谱构造方法
CN111488578A (zh) * 2019-01-28 2020-08-04 维萨国际服务协会 现代应用程序的连续漏洞管理
CN111881300A (zh) * 2020-07-03 2020-11-03 扬州大学 面向第三方库依赖的知识图谱构建方法及系统
CN112613038A (zh) * 2020-11-27 2021-04-06 中山大学 一种基于知识图谱的安全漏洞分析方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977575A (zh) * 2017-12-20 2018-05-01 北京关键科技股份有限公司 一种基于私有云平台的代码组成分析系统和方法
CN109347801A (zh) * 2018-09-17 2019-02-15 武汉大学 一种基于多源词嵌入和知识图谱的漏洞利用风险评估方法
CN111488578A (zh) * 2019-01-28 2020-08-04 维萨国际服务协会 现代应用程序的连续漏洞管理
CN110909364A (zh) * 2019-12-02 2020-03-24 西安工业大学 面向源代码双极性软件安全漏洞图谱构建方法
CN111241307A (zh) * 2020-01-23 2020-06-05 复旦大学 面向软件系统的软件项目及第三方库知识图谱构造方法
CN111881300A (zh) * 2020-07-03 2020-11-03 扬州大学 面向第三方库依赖的知识图谱构建方法及系统
CN112613038A (zh) * 2020-11-27 2021-04-06 中山大学 一种基于知识图谱的安全漏洞分析方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈健: "《基于知识图谱的移动应用第三方库的混合推荐方法研究》", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 3 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114626068B (zh) * 2022-02-24 2024-06-07 南开大学 基于java函数调用序列的高精度第三方库漏洞模块检测方法
CN115033894A (zh) * 2022-08-12 2022-09-09 中国电子科技集团公司第三十研究所 一种基于知识图谱的软件组件供应链安全检测方法及装置
CN115470126A (zh) * 2022-09-05 2022-12-13 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 软件安全漏洞模式数据库构建与软件渗透测试方法
CN116244694A (zh) * 2022-12-04 2023-06-09 云南电网有限责任公司信息中心 一种基于知识图谱的固件漏洞发现方法
CN117436086A (zh) * 2023-10-26 2024-01-23 华中科技大学 一种基于知识图谱的软件供应链安全分析方法及系统

Also Published As

Publication number Publication date
CN113139192B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
Aliero et al. An algorithm for detecting SQL injection vulnerability using black-box testing
CN113139192B (zh) 基于知识图谱的第三方库安全风险分析方法及系统
CN111400719B (zh) 基于开源组件版本识别的固件脆弱性判别方法及系统
CN109753800A (zh) 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统
Han et al. {SIGL}: Securing software installations through deep graph learning
CN106874764B (zh) 一种基于回调函数建模自动生成Android应用回调序列的方法
Xu et al. Depcomm: Graph summarization on system audit logs for attack investigation
KR20120071834A (ko) 악성코드 그룹 및 변종 자동 관리 시스템
Atzeni et al. Countering android malware: A scalable semi-supervised approach for family-signature generation
CN114386032A (zh) 电力物联网设备的固件检测系统及方法
Pérez et al. Lapse+ static analysis security software: Vulnerabilities detection in java ee applications
Meng et al. Androvault: Constructing knowledge graph from millions of android apps for automated analysis
Ye et al. Vulpedia: Detecting vulnerable ethereum smart contracts via abstracted vulnerability signatures
CN115658080A (zh) 一种软件开源代码成分的识别方法及系统
Homaei et al. Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour
Liang et al. Malicious packages lurking in user-friendly python package index
CN112528295B (zh) 工业控制系统的漏洞修复方法及装置
US20240054210A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
Gholamian et al. Logging statements' prediction based on source code clones
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
CN116186716A (zh) 一种面向持续集成部署的安全分析方法及装置
Jin et al. Fumvar: a practical framework for generating f ully-working and u nseen m alware var iants
CN115270136A (zh) 一种基于二元组的漏洞克隆检测系统及方法
Akram et al. DroidSD: An Efficient Indexed Based Android Applications Similarity Detection Tool.
Xylogiannopoulos et al. Text mining for malware classification using multivariate all repeated patterns detection

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