CN115033894B - 一种基于知识图谱的软件组件供应链安全检测方法及装置 - Google Patents
一种基于知识图谱的软件组件供应链安全检测方法及装置 Download PDFInfo
- Publication number
- CN115033894B CN115033894B CN202210964418.9A CN202210964418A CN115033894B CN 115033894 B CN115033894 B CN 115033894B CN 202210964418 A CN202210964418 A CN 202210964418A CN 115033894 B CN115033894 B CN 115033894B
- Authority
- CN
- China
- Prior art keywords
- software
- component
- vulnerability
- knowledge
- supply chain
- 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
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- 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
- G06F21/562—Static detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于知识图谱的软件组件供应链安全检测方法及装置,属于网络安全领域,包括步骤:S1,提取漏洞知识、软件知识和组件知识,提取并分析可执行程序,构成软件‑组件‑漏洞知识单元;通过实体关联、实体对齐的方式完成软件‑组件‑漏洞知识单元融合,存入到知识库,建立多层次结构的软件‑组件‑漏洞知识图谱;S2,分析用户上传的待检测软件包含的组件,识别其中包含有漏洞的组件,基于软件‑组件‑漏洞知识图谱给出漏洞组件的软件供应链传播链条与缓解建议。本发明建立了软件‑组件‑漏洞知识图谱,实现了自动化的可执行程序提取与分析,减少了人工标记工作量,提升了软件组件供应链安全的检测效率。
Description
技术领域
本发明涉及网络安全领域,更为具体的,涉及一种基于知识图谱的软件组件供应链安全检测方法及装置。
背景技术
随着软件产业的快速发展,软件供应链也越发复杂多元。特别是操作系统、数据库、Web服务器等软件关键领域广泛的应用开源组件,直接或二次开发被运用到业务系统中,甚至一些关系到国家安全的软件系统中。复杂的软件供应链会引入一系列的安全问题,导致安全事件频发。例如近年来爆发的开源组件openssl心脏滴血漏洞、log4j2远程代码执行漏洞。引用了带有漏洞组件的业务系统存在巨大的安全隐患,给国家软件供应链安全带来了严峻的考验。因此,软件组件的安全性直接关系到信息系统基础设施的安全,它已成为软件供应链安全问题增长的重要因素。
目前在软件组件的供应链安全检测方面,针对未知的漏洞,可以依靠漏洞挖掘专家凭借经验去发现,对目标软件进行逆向分析,实施多种挖掘手段,然而部分漏洞的暴露源于“机缘巧合”,无法发现其他软件供应链上下游的漏洞;针对已知的漏洞,现有的技术方案是针对某个组件建立软件的依赖关系图,人工跟踪某个漏洞的信息,提取对应的影响组件信息,通过扫描分析待检测软件包含的组件实现已知漏洞组件的检测,然而该技术需要耗费人力追踪漏洞信息,提取软件的依赖关系图,对漏洞组件的分析效率较低,难以实现批量化、规模化的软件组件供应链安全检测。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于知识图谱的软件组件供应链安全检测方法及装置,建立了软件-组件-漏洞知识图谱,实现了自动化的可执行程序提取与分析,通过组件的哈希值完成漏洞组件的识别,大大减少了人工标记工作量,提升了软件组件供应链安全的检测效率等。
本发明的目的是通过以下方案实现的:
一种基于知识图谱的软件组件供应链安全检测方法,包括以下步骤:
S1,软件-组件-漏洞知识图谱构建:先提取漏洞知识、软件知识和组件知识,再提取并分析可执行程序,构成软件-组件-漏洞知识单元;再通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,建立多层次结构的软件-组件-漏洞知识图谱;
S2,已知漏洞软件组件识别:分析用户上传的待检测软件包含的组件,识别其中包含有漏洞的组件,并基于所述软件-组件-漏洞知识图谱给出漏洞组件的软件供应链传播链条与缓解建议。
进一步地,在步骤S1中,所述提取并分析可执行程序,包括子步骤:
S101,根据上传文件的魔术码以及文件后缀名,识别文件所属类别;
S102,若步骤S101中识别判断上传文件为压缩包,则执行解压缩操作,释放文件到当前目录;若否,直接进入步骤S103;
S103,通过释放到目录的文件名是否包含相应关键字,并结合文件魔术码启动对应的虚拟环境;判断是否为安装程序,若是安装程序则执行步骤S104,进行软件的仿真安装,否则跳转到步骤S107;
S104,执行包含有关键字的可执行文件,通过进程ID调用操作系统API获取主窗口的句柄,接下来在根据主窗口的句柄获取主窗口的坐标以及大小,调用操作系统API截取软件的安装界面保存为位图;
S105,将该位图输入到一个现有的图片文字识别机器学习模型;
S106,调用鼠标点击事件API,参数为文字所在的坐标,仿真鼠标点击操作;重复步骤S105、步骤S106完成软件安装的过程;
S107,遍历软件安装目录,根据文件的魔术码提取可执行文件和软件组件文件;
S108,依次执行可执行文件,同时在对应执行进程注入分析模块,该分析模块为带有挂钩系统API函数并具有分析函数参数的功能;
S109,将提取到的全部程序组件计算文件的哈希值,输出软件包含的组件名和哈希值,利用软件所包含组件的哈希值构成软件-组件的知识单元。
进一步地,在步骤S1中,所述提取漏洞知识、软件知识和组件知识,包括子步骤:
S111,从互联网漏洞发布平台,采集已经披露的漏洞信息,并提取结构化信息,所述结构化信息包括漏洞编号、漏洞描述、缓解方案、通用平台枚举和参考外链;
S112,通过采集到的通用平台枚举,提取出软件名和版本;
S113,将软件名、空格、软件版本作为关键字,通过搜索引擎检索,并根据网页返回的链接筛选出可能的软件下载网址,进一步通过HTTP请求返回的请求体大小,判断是否下载到正确的软件;
S114,将采集到的结构化信息和漏洞软件建立起映射关系,分别存储到结构化数据库和大数据存储平台;
S115,从漏洞描述、参考外链,提取出文本信息,合并构建成待分析文档;
S116,将待分析文档分别输入到基于机器学习、基于规则的实体识别抽取模型中,提出文档出现的命名实体,选取出现的次数最多,且结尾为{.lib,.dll,.a,.so}的实体作为该漏洞关联的软件组件,利用组件关联的漏洞构成组件-漏洞的知识单元。
进一步地,在步骤S1中,所述通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,包括子步骤:
S121,将抽取的实体以及实体间关系与知识图谱中多元组知识进行融合;
S122,采用Neo4j图数据库作为的软件-组件-漏洞知识图谱的存储数据库,将组织好的多元组知识按照Neo4j的概念模型入库存储,并将漏洞组件哈希值建立为唯一约束索引。
进一步地,在步骤S2中,包括子步骤:
S201,用户通过终端组件安全检测服务接口请求上传检测的软件,系统通过文件的魔术码判断文件类别,从而启动相应的虚拟软硬件环境;
S202,执行可执行程序提取与分析,遍历整个文件夹查找收集可执行的文件,同时运行并分析可执行的文件,收集静态和动态的组件文件;
S203,将提取到的全部程序组件计算哈希值,比对软件-组件-漏洞知识图谱存储的已知漏洞组件的哈希值;
S204,根据哈希值比对结果,输出分析结果与防护建议,以及关联软件-组件-漏洞知识图谱中关于该漏洞组件描述,给出漏洞组件的软件供应链传播链条与防护建议。
进一步地,在步骤S101,所述上传文件包括漏洞软件。
进一步地,在步骤S104和步骤S105中,所述位图包括bmp格式位图。
进一步地,在步骤S108中,所述挂钩系统API函数包括加载动态库函数和IO操作函数。
进一步地,在步骤S121中,融合的知识包括:融合的知识包括:软件名、软件版本、组件名、哈希值、漏洞编号、漏洞信息、漏洞类别和缓解建议。
一种基于知识图谱的软件组件供应链安全检测装置,包括程序指令运行单元和程序指令存储单元,当程序指令由程序指令运行单元加载运行时执行如上任一所述的基于知识图谱的软件组件供应链安全检测方法。
本发明的有益效果包括:
本发明充分挖掘互联网广泛存在的漏洞信息,建立了软件-组件-漏洞知识图谱,实现了自动化的可执行程序提取与分析,通过组件的哈希值完成漏洞组件的识别。
本发明针对网络空间中漏洞信息孤立、分散问题,提出了自动化抽取漏洞组件方法,大大减少了人工标记工作量,同时有效组织结构化、半结构数据的知识融合,建立了以软件-组件-漏洞为核心的知识图谱,为大规模的软件组件供应链安全分析提供核心信息支撑。
本发明实现了自动化的可执行程序提取与分析,通过识别文件类别、解压缩、模拟安装、API挂钩等一系列的操作,完成了可执行程序的组件提取与分析工作,提升了软件组件供应链安全的检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种部署方式示意图;
图2为本发明实施例中软件-组件-漏洞知识图谱构建流程示意图;
图3为本发明实施例中可执行程序提取与分析流程示意图;
图4为本发明实施例中已知漏洞软件组件识别流程示意图。
具体实施方式
本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
本发明的发明人在寻求解决背景中问题的过程中,经过创造性的思考,提出一种基于知识图谱的软件组件供应链安全检测方法及装置,旨在从海量的漏洞信息中自动抽取出漏洞组件知识,提取与分析漏洞软件的组件特征信息,建立覆盖网络空间领域的软件-组件-漏洞知识图谱,实现批量化自动化的软件组件供应链安全检测,给出修复该组件的建议,避免漏洞的二次传播,有效的阻断了漏洞利用链条,极大地保障了软件供应链安全。
在具体实施方式中,为了解决软件组件的供应链安全高效自动检测的技术问题,实际还解决了如下技术问题:
1)如何从互联网自动化的获取包含漏洞的软件、漏洞组件信息,解决人工提取效率低、人力成本高的问题。
2)如何组织与存储获取的多源漏洞组件信息,解决多源数据中实体关联、实体融合的问题,支撑大规模的软件组件安全性检测。
3)如何自动化的提取与分析软件包含的全部组件,解决无法规模化分析的问题。
软件组件供应链安全检测的目标是在面对使用者上传的程序文件或安装文件,能够快速提取分析软件运行所包含的组件,从中筛选出具有已知漏洞的组件,并能够给出阻断或修复该组件的建议。
本发明实施例提出的技术方案基于知识图谱识别包含有漏洞的软件组件,主要包括步骤:一,软件-组件-漏洞知识图谱构建,通过自动化的方式提取漏洞知识、软件知识、组件知识,可执行程序提取与分析,提取软件中全部组件文件,包括:静态组件文件,动态加载组件;通过实体关联、实体对齐的方式完成知识融合,建立多层次结构的知识图谱,支撑软件组件的识别和缺陷组件的检出;二,已知漏洞软件组件识别,分析用户上传的待检测软件包含的组件,识别其中包含有漏洞的组件,并能够基于知识图谱给出漏洞组件的软件供应链传播链条与缓解建议。
本发明实施例所提出的技术方案中,主要包括防火墙、大数据集群、虚拟化环境、可执行程序提取与分析、领域知识抽取服务器、领域知识融合服务器、软件-组件-漏洞知识图谱、漏洞组件识别,它们通过组网接入到网络,构成完整的基于知识图谱的软件组件供应链安全检测系统。本发明实施例实现的工作原理与具体的部署方式无关,因此仅采用如图1所示的部署方式,说明工作原理。
在软件-组件-漏洞知识图谱构建过程中,如图2所示,首先是信息采集,信息采集主要分为漏洞信息采集、软件采集两部分。并对采集到的信息进行预处理和关键字段的提取。通过采集服务定期采集互联网各个漏洞发布平台的漏洞信息,从中提取出漏洞编号等信息,并根据上述信息在进行有漏洞的软件采集、漏洞描述、缓解方案、参考外链。具体步骤如下:
1)从互联网漏洞发布平台,例如:NVD、CNNVD等国内外所有的漏洞库,采集已经披露的漏洞信息,提取漏洞编号、漏洞描述、缓解方案、通用平台枚举、参考外链等结构化信息。
2)通过采集到的通用平台枚举(CPE),它通过结构化命名规范给出了漏洞影响的软件版本,提取最新的一条CPE信息从中提取出软件名和版本,例如:漏洞CVE-2005-3051,它最近的一条是cpe:2.3:a:igor_pavlov:7-zip:4.23,那么对应的软件名7-zip,软件版本4.23。
3)将软件名、空格、软件版本作为关键字,例如:7-zip 4.23,通过搜索引擎检索,并根据网页返回的链接筛选出SourceForge.net、github.com等可能的软件下载网址,进一步通过HTTP返回的请求体(body)的大小,判断是否下载到正确的软件。
4)最后,将采集到的结构化信息和漏洞软件建立起映射关系,分别存储到结构化数据库和大数据存储平台,例如:mysql和hdfs。
接下来还需要从漏洞描述信息、参考外链信息中抽取漏洞组件知识,并根据漏洞组件名计算对应的哈希值,构成软件-组件-漏洞知识单元,最后通过漏洞编号、组件哈希值、软件名等属性值,对知识单元进行融合并存入到知识库,具体步骤如下:
1)从漏洞描述、参考外链,提出出文本信息,合并构建成待分析文档。例如漏洞CVE-2005-305,提取出“Stack-based buffer overflow in the ARJ plugin (arj.dll)3.9.2.0 for 7-Zip 3.13, 4.23, and 4.26 BETA, as used in products includingTurbo Searcher, allows remote attackers to execute arbitrary code via a largeARJ block.”
2)将待分析文档分别输入到基于机器学习、基于规则的实体识别抽取方法,提出文档出现的命名实体,选取出现的次数最多,且结尾为{.lib,.dll,.a,.so}的实体作为该漏洞关联的软件组件。例如:步骤1)中的arj.dll。
3)将漏洞软件输入到可执行程序提取与分析模块,计算出得到漏洞组件对应的哈希值。
4)实体关系融合对齐阶段,需要将抽取的实体以及实体间关系与已构建的知识图谱中多元组知识进行融合,主要融合的知识包括:(软件名,软件版本)与(组件名,哈希值)、(软件名,软件版本) 与(漏洞编号,漏洞信息)、(漏洞编号,漏洞信息)与(漏洞类别,缓解建议)等。
5)本发明实施例技术方案采用Neo4j图数据库作为的软件-组件-漏洞知识图谱的存储数据库,将组织好的多元组知识按照Neo4j的概念模型入库存储。采用Neo4j图数据库,便于灵活地存储软件组件知识,高效地进行知识查询操作,并将漏洞组件哈希值建立为唯一约束索引(UNIQUE index)以便于检索比对。
在可执行程序提取与分析过程中,如图3所示,可执行程序提取与分析目的是提取软件中全部组件文件,并计算出每个组件的哈希值,该模块的输入是软件或者软件安装包,输出是包含的组件特征,可以作用于两个方面:漏洞软件的组件特征提取、待测软件的组件特征提取。图3给出了可执行程序提取与分析流程示意,具体步骤如下:
1)根据上传文件的魔术码以及文件后缀名,识别文件所属类别。魔术码是计算机领域用于标识文件格式或协议的恒定数值或文本值。例如:Linux 可执行文件(ELF)的魔术码为“7F 45 4C 46”、windows可执行文件(PE)为 “4D 5A”、压缩文件(rar)为“52 61 72 211A 07”、RedHat软件包管理器(RPM)为“ED AB EE DB”。
2)若判断上传文件为压缩包,则执行解压缩操作,释放文件到当前目录,解压缩的软件可使用现有工具,例如:7zip、rpm2cpio、ar等。
3)通过释放到目录的文件名是否包含setup、install、安装等关键字,并根据文件魔术码启动对应的虚拟环境,例如:ELF文件启动linux虚拟机、PE文件启动windows虚拟机。判断是否为安装程序。若是安装程序则执行步骤4),进行软件的仿真安装,否则跳转到步骤7)。
4)执行包含有关键字的可执行文件,通过进程ID调用操作系统API获取主窗口的句柄,例如:windows平台可用API函数EnumWindows。接下来在根据主窗口的句柄获取主窗口的坐标以及大小,调用操作系统API截取软件的安装界面保存为bmp位图。
5)将该bmp位图输入到一个现有的图片文字识别机器学习模型,例如:EasyOCR模型,该模型可以识别图片中的文字以及文字所在的坐标,识别的关键字为下一步、Next等。
6)调用鼠标点击事件API,参数为文字所在的坐标,仿真鼠标点击操作,例如:调用windows平台的winuser.h中的API函数mouse_event。重复步骤5)、步骤6)完成软件安装的过程。
7)遍历软件安装目录,根据文件的魔术码提取可执行文件包括.exe文件等,软件组件文件包括.dll、.so文件等。
8)依次执行可执行文件,同时在对应进程注入分析模块,该模块带有挂钩系统API函数并分析函数参数的功能,主要分析的系统API包括:LoadLibrary等加载动态库函数,NtCreateFile、WriteFile等IO操作函数,这样可以拦截到通过网络加载、或者动态释放的软件组件。
9)最后,将提取到的全部程序组件计算文件的哈希值,输出软件包含的组件名和哈希值。
在已知漏洞软件组件识别过程中,如图4所示。已知漏洞软件组件识别是用户上传的待检测软件,识别其中包含的有漏洞的组件,给出供应链安全的检测结果与缓解建议。图4给出了检测方法的流程示意图,具体步骤如下:
1)用户通过终端组件安全检测服务接口请求上传检测的软件,系统通过文件的魔术码判断文件类别,从而启动相应的虚拟软硬件环境。
2)执行可执行程序提取与分析模块,遍历整个文件夹查找收集可执行的文件,同时运行并分析可执行的文件,收集静态和动态的组件文件。
3)将提取到的全部程序组件计算哈希值,比对软件-组件-漏洞知识图谱存储的已知漏洞组件的哈希值。
4)最后,根据哈希值比对结果,输出分析结果与防护建议,以及关联软件-组件-漏洞知识图谱中关于该漏洞组件描述,给出漏洞组件的软件供应链传播链条与防护建议。
本发明实施例挖掘互联网广泛存在的漏洞信息,建立了软件-组件-漏洞知识图谱,实现了自动化的可执行程序提取与分析,通过组件的哈希值完成漏洞组件的识别。相比现有方法,具备以下有益效果和优点:
1)针对网络空间中漏洞信息孤立、分散问题,本发明实施例提出了自动化抽取漏洞组件方法,大大减少了人工标记工作量,同时有效组织结构化、半结构数据的知识融合,建立了以软件-组件-漏洞为核心的知识图谱,为大规模的软件组件供应链安全分析提供核心信息支撑。
2)本发明实施例实现了自动化的可执行程序提取与分析,通过识别文件类别、解压缩、模拟安装、API挂钩等一系列的操作,完成了可执行程序的组件提取与分析工作,提升了软件组件供应链安全的检测效率。
实施例1
一种基于知识图谱的软件组件供应链安全检测方法,包括以下步骤:
S1,软件-组件-漏洞知识图谱构建:先提取漏洞知识、软件知识和组件知识,再提取并分析可执行程序,构成软件-组件-漏洞知识单元;再通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,建立多层次结构的软件-组件-漏洞知识图谱;
S2,已知漏洞软件组件识别:分析用户上传的待检测软件包含的组件,识别其中包含有漏洞的组件,并基于所述软件-组件-漏洞知识图谱给出漏洞组件的软件供应链传播链条与缓解建议。
实施例2
在实施例1的基础上,在步骤S1中,所述提取并分析可执行程序,包括子步骤:
S101,根据上传文件的魔术码以及文件后缀名,识别文件所属类别;
S102,若步骤S101中识别判断上传文件为压缩包,则执行解压缩操作,释放文件到当前目录;若否,直接进入步骤S103;
S103,通过释放到目录的文件名是否包含相应关键字,并结合文件魔术码启动对应的虚拟环境;判断是否为安装程序,若是安装程序则执行步骤S104,进行软件的仿真安装,否则跳转到步骤S107;
S104,执行包含有关键字的可执行文件,通过进程ID调用操作系统API获取主窗口的句柄,接下来在根据主窗口的句柄获取主窗口的坐标以及大小,调用操作系统API截取软件的安装界面保存为位图;
S105,将该位图输入到一个现有的图片文字识别机器学习模型;
S106,调用鼠标点击事件API,参数为文字所在的坐标,仿真鼠标点击操作;重复步骤S105、步骤S106完成软件安装的过程;
S107,遍历软件安装目录,根据文件的魔术码提取可执行文件和软件组件文件;
S108,依次执行可执行文件,同时在对应执行进程注入分析模块,该分析模块为带有挂钩系统API函数并具有分析函数参数的功能;
S109,将提取到的全部程序组件计算文件的哈希值,输出软件包含的组件名和哈希值,利用软件所包含组件的哈希值构成软件-组件的知识单元。
实施例3
在实施例1的基础上,在步骤S1中,所述提取漏洞知识、软件知识和组件知识,包括子步骤:
S111,从互联网漏洞发布平台,采集已经披露的漏洞信息,并提取结构化信息,所述结构化信息包括漏洞编号、漏洞描述、缓解方案、通用平台枚举和参考外链;
S112,通过采集到的通用平台枚举,提取出软件名和版本;
S113,将软件名、空格、软件版本作为关键字,通过搜索引擎检索,并根据网页返回的链接筛选出可能的软件下载网址,进一步通过HTTP请求返回的请求体大小,判断是否下载到正确的软件;
S114,将采集到的结构化信息和漏洞软件建立起映射关系,分别存储到结构化数据库和大数据存储平台;
S115,从漏洞描述、参考外链,提取出文本信息,合并构建成待分析文档;
S116,将待分析文档分别输入到基于机器学习、基于规则的实体识别抽取模型中,提出文档出现的命名实体,选取出现的次数最多,且结尾为{.lib,.dll,.a,.so}的实体作为该漏洞关联的软件组件,利用组件关联的漏洞构成组件-漏洞的知识单元。
实施例4
在实施例1的基础上,在步骤S1中,所述通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,包括子步骤:
S121,将抽取的实体以及实体间关系与知识图谱中多元组知识进行融合;
S122,采用Neo4j图数据库作为的软件-组件-漏洞知识图谱的存储数据库,将组织好的多元组知识按照Neo4j的概念模型入库存储,并将漏洞组件哈希值建立为唯一约束索引。
实施例5
在实施例1的基础上,在步骤S2中,包括子步骤:
S201,用户通过终端组件安全检测服务接口请求上传检测的软件,系统通过文件的魔术码判断文件类别,从而启动相应的虚拟软硬件环境;
S202,执行可执行程序提取与分析,遍历整个文件夹查找收集可执行的文件,同时运行并分析可执行的文件,收集静态和动态的组件文件;
S203,将提取到的全部程序组件计算哈希值,比对软件-组件-漏洞知识图谱存储的已知漏洞组件的哈希值;
S204,根据哈希值比对结果,输出分析结果与防护建议,以及关联软件-组件-漏洞知识图谱中关于该漏洞组件描述,给出漏洞组件的软件供应链传播链条与防护建议。
实施例6
在实施例2的基础上,在步骤S101,所述上传文件包括漏洞软件。
实施例7
在实施例2的基础上,在步骤S104和步骤S105中,所述位图包括bmp格式位图。
实施例8
在实施例2的基础上,在步骤S108中,所述挂钩系统API函数包括加载动态库函数和IO操作函数。
实施例9
在实施例4的基础上,在步骤S121中,融合的知识包括:融合的知识包括:软件名、软件版本、组件名、哈希值、漏洞编号、漏洞信息、漏洞类别和缓解建议。
实施例10
一种基于知识图谱的软件组件供应链安全检测装置,包括程序指令运行单元和程序指令存储单元,当程序指令由程序指令运行单元加载运行时执行如实施例1~实施例9任一所述的基于知识图谱的软件组件供应链安全检测方法。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (7)
1.一种基于知识图谱的软件组件供应链安全检测方法,其特征在于,包括以下步骤:
S1,软件-组件-漏洞知识图谱构建:先提取漏洞知识、软件知识和组件知识,再提取并分析可执行程序,构成软件-组件-漏洞知识单元;再通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,建立多层次结构的软件-组件-漏洞知识图谱;
在步骤S1中,所述提取并分析可执行程序,包括子步骤:
S101,根据上传文件的魔术码以及文件后缀名,识别文件所属类别;
S102,若步骤S101中识别判断上传文件为压缩包,则执行解压缩操作,释放文件到当前目录;若否,直接进入步骤S103;
S103,通过释放到目录的文件名是否包含相应关键字,并结合文件魔术码启动对应的虚拟环境;判断是否为安装程序,若是安装程序则执行步骤S104,进行软件的仿真安装,否则跳转到步骤S107;
S104,执行包含有关键字的可执行文件,通过进程ID调用操作系统API获取主窗口的句柄,接下来在根据主窗口的句柄获取主窗口的坐标以及大小,调用操作系统API截取软件的安装界面保存为位图;
S105,将该位图输入到一个现有的图片文字识别机器学习模型;
S106,调用鼠标点击事件API,参数为文字所在的坐标,仿真鼠标点击操作;重复步骤S105、步骤S106完成软件安装的过程;
S107,遍历软件安装目录,根据文件的魔术码提取可执行文件和软件组件文件;
S108,依次执行可执行文件,同时在对应执行进程注入分析模块,该分析模块为带有挂钩系统API函数并具有分析函数参数的功能;
S109,将提取到的全部程序组件计算文件的哈希值,输出软件包含的组件名和哈希值,利用软件所包含组件的哈希值构成软件-组件的知识单元;
在步骤S1中,所述提取漏洞知识、软件知识和组件知识,包括子步骤:
S111,从互联网漏洞发布平台,采集已经披露的漏洞信息,并提取结构化信息,所述结构化信息包括漏洞编号、漏洞描述、缓解方案、通用平台枚举和参考外链;
S112,通过采集到的通用平台枚举,提取出软件名和版本;
S113,将软件名、空格、软件版本作为关键字,通过搜索引擎检索,并根据网页返回的链接筛选出可能的软件下载网址,进一步通过HTTP请求返回的请求体大小,判断是否下载到正确的软件;
S114,将采集到的结构化信息和漏洞软件建立起映射关系,分别存储到结构化数据库和大数据存储平台;
S115,从漏洞描述、参考外链,提取出文本信息,合并构建成待分析文档;
S116,将待分析文档分别输入到基于机器学习、基于规则的实体识别抽取模型中,提出文档出现的命名实体,选取出现的次数最多,且结尾为{.lib,.dll,.a,.so}的实体作为该漏洞关联的软件组件,利用组件关联的漏洞构成组件-漏洞的知识单元;
在步骤S1中,所述通过实体关联、实体对齐的方式完成软件-组件-漏洞知识单元融合,并存入到知识库,包括子步骤:
S121,将抽取的实体以及实体间关系与知识图谱中多元组知识进行融合;
S122,采用Neo4j图数据库作为的软件-组件-漏洞知识图谱的存储数据库,将组织好的多元组知识按照Neo4j的概念模型入库存储,并将漏洞组件哈希值建立为唯一约束索引;
S2,已知漏洞软件组件识别:分析用户上传的待检测软件包含的组件,识别其中包含有漏洞的组件,并基于所述软件-组件-漏洞知识图谱给出漏洞组件的软件供应链传播链条与缓解建议。
2.根据权利要求1所述的基于知识图谱的软件组件供应链安全检测方法,其特征在于,在步骤S2中,包括子步骤:
S201,用户通过终端组件安全检测服务接口请求上传检测的软件,系统通过文件的魔术码判断文件类别,从而启动相应的虚拟软硬件环境;
S202,执行可执行程序提取与分析,遍历整个文件夹查找收集可执行的文件,同时运行并分析可执行的文件,收集静态和动态的组件文件;
S203,将提取到的全部程序组件计算哈希值,比对软件-组件-漏洞知识图谱存储的已知漏洞组件的哈希值;
S204,根据哈希值比对结果,输出分析结果与防护建议,以及关联软件-组件-漏洞知识图谱中关于该漏洞组件描述,给出漏洞组件的软件供应链传播链条与防护建议。
3.根据权利要求1所述的基于知识图谱的软件组件供应链安全检测方法,其特征在于,在步骤S101,所述上传文件包括漏洞软件。
4.根据权利要求1所述的基于知识图谱的软件组件供应链安全检测方法,其特征在于,在步骤S104和步骤S105中,所述位图包括bmp格式位图。
5.根据权利要求1所述的基于知识图谱的软件组件供应链安全检测方法,其特征在于,在步骤S108中,所述挂钩系统API函数包括加载动态库函数和IO操作函数。
6.根据权利要求1所述的基于知识图谱的软件组件供应链安全检测方法,其特征在于,在步骤S121中,融合的知识包括:软件名、软件版本、组件名、哈希值、漏洞编号、漏洞信息、漏洞类别和缓解建议。
7.一种基于知识图谱的软件组件供应链安全检测装置,其特征在于,包括程序指令运行单元和程序指令存储单元,当程序指令由程序指令运行单元加载运行时执行如权利要求1~6任一所述的基于知识图谱的软件组件供应链安全检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210964418.9A CN115033894B (zh) | 2022-08-12 | 2022-08-12 | 一种基于知识图谱的软件组件供应链安全检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210964418.9A CN115033894B (zh) | 2022-08-12 | 2022-08-12 | 一种基于知识图谱的软件组件供应链安全检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115033894A CN115033894A (zh) | 2022-09-09 |
CN115033894B true CN115033894B (zh) | 2022-12-09 |
Family
ID=83130045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210964418.9A Active CN115033894B (zh) | 2022-08-12 | 2022-08-12 | 一种基于知识图谱的软件组件供应链安全检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033894B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116244694A (zh) * | 2022-12-04 | 2023-06-09 | 云南电网有限责任公司信息中心 | 一种基于知识图谱的固件漏洞发现方法 |
CN117033775B (zh) * | 2023-07-28 | 2024-03-19 | 广东工业大学 | 基于知识图谱的工业软件的组件推荐方法及系统 |
CN117436086B (zh) * | 2023-10-26 | 2024-07-16 | 华中科技大学 | 一种基于知识图谱的软件供应链安全分析方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671716A (zh) * | 2020-12-03 | 2021-04-16 | 中国电子科技网络信息安全有限公司 | 基于图谱的漏洞知识挖掘方法及系统 |
CN114676435A (zh) * | 2022-03-04 | 2022-06-28 | 国网浙江省电力有限公司金华供电公司 | 一种基于知识图谱的软件漏洞可利用性预测方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11218510B2 (en) * | 2015-10-28 | 2022-01-04 | Qomplx, Inc. | Advanced cybersecurity threat mitigation using software supply chain analysis |
CN107798245B (zh) * | 2017-11-02 | 2020-08-11 | 北京理工大学 | 一种基于组件依赖图的软件安全漏洞预测方法 |
US11171982B2 (en) * | 2018-06-22 | 2021-11-09 | International Business Machines Corporation | Optimizing ingestion of structured security information into graph databases for security analytics |
US20200074084A1 (en) * | 2018-08-29 | 2020-03-05 | Microsoft Technology Licensing, Llc | Privacy-preserving component vulnerability detection and handling |
CN110287704B (zh) * | 2019-06-25 | 2021-03-26 | 北京中科微澜科技有限公司 | 一种基于漏洞图谱的漏洞软件依赖关系构建方法 |
CN110414239B (zh) * | 2019-06-28 | 2021-09-03 | 奇安信科技集团股份有限公司 | 一种软件供应链安全分析方法及装置 |
CN110378126B (zh) * | 2019-07-26 | 2021-03-26 | 北京中科微澜科技有限公司 | 一种漏洞检测方法及系统 |
CN110708279B (zh) * | 2019-08-19 | 2021-08-13 | 中国电子科技网络信息安全有限公司 | 一种基于群体智能的漏洞挖掘模型构建方法 |
CN110717049B (zh) * | 2019-08-29 | 2020-12-04 | 四川大学 | 一种面向文本数据的威胁情报知识图谱构建方法 |
CN110688456A (zh) * | 2019-09-25 | 2020-01-14 | 北京计算机技术及应用研究所 | 一种基于知识图谱的漏洞知识库构建方法 |
US20210352099A1 (en) * | 2020-05-06 | 2021-11-11 | Samos Cyber Inc. | System for automatically discovering, enriching and remediating entities interacting in a computer network |
CN113239358A (zh) * | 2021-03-11 | 2021-08-10 | 东南大学 | 基于知识图谱的开源软件漏洞挖掘方法 |
CN113139192B (zh) * | 2021-04-09 | 2024-04-19 | 扬州大学 | 基于知识图谱的第三方库安全风险分析方法及系统 |
CN114201759A (zh) * | 2021-10-15 | 2022-03-18 | 北京中科微澜科技有限公司 | 一种基于软件包命名矩阵的软件漏洞识别方法与系统 |
CN114201757A (zh) * | 2021-10-15 | 2022-03-18 | 北京中科微澜科技有限公司 | 一种基于软件漏洞识别的置信度标识方法、信息存储介质 |
-
2022
- 2022-08-12 CN CN202210964418.9A patent/CN115033894B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671716A (zh) * | 2020-12-03 | 2021-04-16 | 中国电子科技网络信息安全有限公司 | 基于图谱的漏洞知识挖掘方法及系统 |
CN114676435A (zh) * | 2022-03-04 | 2022-06-28 | 国网浙江省电力有限公司金华供电公司 | 一种基于知识图谱的软件漏洞可利用性预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115033894A (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115033894B (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
US8601434B2 (en) | Method and system for information processing and test case generation | |
EP3674918B1 (en) | Column lineage and metadata propagation | |
US10169005B2 (en) | Consolidating and reusing portal information | |
RU91213U1 (ru) | Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов | |
KR100968126B1 (ko) | 웹쉘 탐지 시스템 및 웹쉘 탐지 방법 | |
CN113139192B (zh) | 基于知识图谱的第三方库安全风险分析方法及系统 | |
CN114528457B (zh) | Web指纹检测方法及相关设备 | |
CN111563015A (zh) | 数据监控方法及装置、计算机可读介质及终端设备 | |
CN112579476B (zh) | 一种漏洞和软件对齐的方法、装置以及存储介质 | |
CN109241722A (zh) | 用于获取信息的方法、电子设备和计算机可读介质 | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
CN112307478A (zh) | 一种脚本病毒检测方法、系统及电子设备和存储介质 | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 | |
CN109657462B (zh) | 数据检测方法、系统、电子设备和存储介质 | |
US20160055074A1 (en) | Program analysis device, program analysis method, and program analysis program | |
CN115292197A (zh) | 一种软件测试方法、装置、电子设备及存储介质 | |
CN110069691B (zh) | 用于处理点击行为数据的方法和装置 | |
CN112948478A (zh) | 基于链路的代码分析方法、装置、电子设备及存储介质 | |
CN107341105A (zh) | 信息处理方法、终端及服务器 | |
CN117009972A (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
CN112464242A (zh) | 一种网页平台漏洞采集方法、系统、终端及存储介质 | |
Oh et al. | Automatic extraction of dependencies between web components and database resources in java web applications | |
Liu et al. | Drift: Fine-Grained Prediction of the Co-Evolution of Production and Test Code via Machine Learning | |
CN114626062B (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 |