CN113139192A - 基于知识图谱的第三方库安全风险分析方法及*** - Google Patents
基于知识图谱的第三方库安全风险分析方法及*** Download PDFInfo
- 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
Links
- 238000012502 risk assessment Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000009193 crawling Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 18
- 238000012216 screening Methods 0.000 claims description 18
- 238000013459 approach Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012038 vulnerability analysis Methods 0.000 description 2
- 241000239290 Araneae Species 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
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
- G06F21/56—Computer 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任一项所述的基于知识图谱的第三方库安全风险分析方法。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114626068A (zh) * | 2022-02-24 | 2022-06-14 | 南开大学 | 基于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 | 华中科技大学 | 一种基于知识图谱的软件供应链安全分析方法及*** |
Citations (7)
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 | 中山大学 | 一种基于知识图谱的安全漏洞分析方法 |
-
2021
- 2021-04-09 CN CN202110382640.3A patent/CN113139192B/zh active Active
Patent Citations (7)
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)
Title |
---|
陈健: "《基于知识图谱的移动应用第三方库的混合推荐方法研究》", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 3 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114626068A (zh) * | 2022-02-24 | 2022-06-14 | 南开大学 | 基于java函数调用序列的高精度第三方库漏洞模块检测方法 |
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 |
---|---|---|
CN113139192B (zh) | 基于知识图谱的第三方库安全风险分析方法及*** | |
Aliero et al. | An algorithm for detecting SQL injection vulnerability using black-box testing | |
CN111400719B (zh) | 基于开源组件版本识别的固件脆弱性判别方法及*** | |
Battista et al. | Identification of Android Malware Families with Model Checking. | |
CN109753800A (zh) | 融合频繁项集与随机森林算法的Android恶意应用检测方法及*** | |
Han et al. | {SIGL}: Securing software installations through deep graph learning | |
WO2014021866A1 (en) | Vulnerability vector information analysis | |
CN106874764B (zh) | 一种基于回调函数建模自动生成Android应用回调序列的方法 | |
KR20120071834A (ko) | 악성코드 그룹 및 변종 자동 관리 시스템 | |
Atzeni et al. | Countering android malware: A scalable semi-supervised approach for family-signature generation | |
Zhang et al. | Multicriteria decision and machine learning algorithms for component security evaluation: library‐based overview | |
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 | |
CN115658080A (zh) | 一种软件开源代码成分的识别方法及*** | |
Ye et al. | Vulpedia: Detecting vulnerable ethereum smart contracts via abstracted vulnerability signatures | |
Liang et al. | Malicious packages lurking in user-friendly python package index | |
CN116186716A (zh) | 一种面向持续集成部署的安全分析方法及装置 | |
Bird et al. | Actions speak louder than words: Semi-supervised learning for browser fingerprinting detection | |
CN112528295B (zh) | 工业控制***的漏洞修复方法及装置 | |
Gholamian et al. | Logging statements' prediction based on source code clones | |
Ladisa et al. | On the feasibility of cross-language detection of malicious packages in npm and pypi | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
Jin et al. | Fumvar: a practical framework for generating f ully-working and u nseen m alware var iants | |
CN115270136A (zh) | 一种基于二元组的漏洞克隆检测***及方法 |
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 |