1.本发明涉及软件漏洞分析领域,尤其涉及一种软件漏洞知识图谱的可视化方法及装置。
背景技术:2.软件漏洞知识图谱是促进目标软件理解、降低专业知识获取与传播门槛,增强漏洞挖掘分析场景下人机协同的有效工具。软件漏洞知识图谱的可视化,是软件漏洞知识最直观的呈现方式,可作为一种有效的辅助分析手段,为漏洞分析人员提升分析效率。
3.随着软件及漏洞数据源的持续扩展、知识抽取与融合技术的不断深入,软件漏洞知识图谱规模持续膨胀扩大。对大规模知识图谱进行简单呈现,会给人严重的视觉混乱,难以聚焦到所关注的信息区域。对大规模知识图谱的可视化加工,也会降低图的绘制效率,影响人机交互流畅性。借助软件漏洞知识图谱辅助人工分析,针对大规模图谱数据的有效组织和呈现成为难题。
4.现有的知识图谱可视化方法,通常围绕具体的业务或应用场景进行设计。在软件漏洞分析领域,主要通过图表、报告和文字等形式进行信息呈现,尚没有对大规模软件漏洞知识图谱进行可视化的有效方法和成熟系统。
技术实现要素:5.针对现有技术中存在的问题,本发明的目的在于提供一种软件漏洞知识图谱多屏可视化方法和装置。本发明针对包含软件名、版本号、代码文件名、函数名、函数体、cfg、漏洞标识、漏洞补丁等基础实体,以及实体间组成、依赖、影响、相似等基础关联关系的软件漏洞知识图谱,围绕软件理解和漏洞代码关联分析场景需求,利用多块显示屏组织图谱中的级联、比对等数据关系,通过数据聚合、下钻式探索、视图联动等方式为分析人员提供可视化交互分析手段。
6.为实现上述目的,本发明提供的多屏可视化方案如下:
7.一种软件漏洞知识图谱多屏可视化方法,其步骤包括:
8.1)构建或获取目标软件的软件漏洞知识图谱;其中,所述软件漏洞知识图谱包含实体以及实体之间的关联关系;所述实体包括软件名、版本号、代码文件名、函数名、函数体、漏洞标识,所述关联关系包括实体之间的组成关系、影响关系、相似关系;
9.2)根据所述软件漏洞知识图谱绘制软件漏洞知识图谱基础主视图并将其显示在第一屏幕上;所述软件漏洞知识图谱基础主视图中包含多个关注度最高的软件名、漏洞标识,数据类别,每种类别数据的数量以及各数据类别之间的关联关系;
10.3)当同一层级的节点超过设定阈值时,将对应层级的节点聚合生成一聚合节点并将其显示在所述第一屏幕上;
11.4)将所述第一屏幕上需进一步展示的聚合节点或实体节点,通过设定操作投放至第二屏幕上;所述第二屏幕上以投放的节点为根节点,从所述软件漏洞知识图谱中获取该
根节点的子节点以及与该根节点相关的聚合节点进行展示;
12.5)如果所述第二屏幕上展示的实体节点a存在多个相似代码关系,则将每一相似代码分别投放至一屏幕,当翻动或定位该实体节点a中的代码时,对各相应屏幕上的所述相似代码进行数据联动。
13.进一步的,所述实体还包含cfg、漏洞补丁;所述关联关系还包括实体之间的依赖关系。
14.进一步的,所述软件漏洞知识图谱基础主视图中还包含实体及关系筛选组件、实体搜索组件;其中,实体及关系筛选组件由于根据所述软件漏洞知识图谱中数据的属性对数据进行过滤,所述实体搜索组件由于根据关键字对实体数据的名称属性进行模糊匹配。
15.进一步的,将所述第一屏幕上需进一步展示的聚合节点或实体节点,通过鼠标拖拽动作或右键点选动作,投放至第二屏幕中进行展示。
16.进一步的,以“软件名称-版本号-代码文件-函数-cfg”对所述软件漏洞知识图谱包含的实体进行分层。
17.进一步的,将所述软件漏洞知识图谱的相关数据预处理为json格式,然后利用前端可视化组件渲染生成所述软件漏洞知识图谱基础主视图。
18.一种软件漏洞知识图谱多屏可视化装置,其特征在于,包括多个显示屏幕和主机系统;各显示屏分别与所述主机系统连接,所述主机系统包括前端可视化模块和图数据库;其中,
19.所述图数据库,用于存储目标软件的软件漏洞知识图谱;其中,所述软件漏洞知识图谱包含实体以及实体之间的关联关系;所述实体包括软件名、版本号、代码文件名、函数名、函数体、漏洞标识,所述关联关系包括实体之间的组成关系、影响关系、相似关系;
20.所述前端可视化模块,用于根据所述软件漏洞知识图谱绘制软件漏洞知识图谱基础主视图并将其显示在第一屏幕上;所述软件漏洞知识图谱基础主视图中包含多个关注度最高的软件名、漏洞标识,数据类别,每种类别数据的数量以及各数据类别之间的关联关系;
21.所述主机系统,用于当同一层级的节点超过设定阈值时,将对应层级的节点聚合生成一聚合节点并将其显示在所述第一屏幕上;以及通过设定操作将所述第一屏幕上需进一步展示的聚合节点或实体节点投放至第二屏幕上时,在所述第二屏幕上以投放的节点为根节点,从所述软件漏洞知识图谱中获取该根节点的子节点以及与该根节点相关的聚合节点进行展示;如果所述第二屏幕上展示的实体节点a存在多个相似节点,则将每一相似节点分别投放至一屏幕,当翻动或定位该实体节点a中的代码时,对各相应屏幕上的对应代码进行数据联动。
22.进一步的,还包括一数据预处理模块,用于将所述软件漏洞知识图谱的相关数据预处理为json格式并发送给所述前端可视化模块。
23.本发明的优点如下:
24.1.借助多块显示屏幕,提供了一种基于知识图谱进行可视化软件漏洞分析的可行方案。
25.2.借助多块显示屏幕,提供了一种针对大规模知识图谱数据进行有效组织和可视化呈现的解决方案。
附图说明
26.图1为利用多屏实现数据聚合与下钻式探索示意图。
27.图2为利用多屏实现相似代码比对图。
28.图3为本发明软件漏洞知识图谱多屏可视化方法流程图。
具体实施方式
29.下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
30.本发明提供一种借助多屏实现大规模软件漏洞知识图谱可视化的解决方案,利用多块显示屏进行屏幕组合、数据分屏和数据联动,实现在软件理解和漏洞代码关联分析场景下对软件漏洞知识图谱数据的有效组织和可视化交互,提升人工分析效率。
31.本发明的方法流程图3所示,其步骤包括:
32.步骤1:构建或获取目标软件的软件漏洞知识图谱。为实现软件理解和漏洞代码关联分析,软件漏洞知识图谱知识体系应至少包含软件名、版本号、代码文件名、函数名、函数体、漏洞标识等基础实体,以及实体之间的组成、影响、相似等基础关联关系;可扩展包含cfg、漏洞补丁等实体,以及实体之间的依赖等关联关系。其中,组成关系主要指软件相关实体间的包含关系,包括“软件名称-版本号”、“版本号-代码文件”、“代码文件-函数”、“函数-cfg”;影响关系主要指漏洞实体与所影响软件相关实体之间存在影响关系,“漏洞”影响到哪个软件、影响到哪个软件版本、影响到哪个函数,包括“漏洞标识-软件”、“漏洞标识-版本号”、“漏洞标识-函数”;相似关系主要指软件相关实体的代码相似,包括“代码文件-代码文件”、“函数-函数”。围绕软件漏洞知识图谱知识体系构建软件漏洞知识图谱,存储至图数据库中。
33.步骤2:绘制软件漏洞知识图谱基础主视图。围绕软件理解和漏洞代码关联分析场景,将图数据库中数据预处理为json格式,并利用前端可视化组件渲染基础主视图,包含关注度top k的软件名、漏洞标识等实体节点,每种类别数据的数量以及各数据类别之间的关联关系,以及实体及关系筛选组件、实体搜索组件。由于图数据库是根据图谱数据易于存储和检索的方式来组织数据的,直接处理图谱数据效率较低,因此本发明先对其进行预处理为json格式,根据前端可视化视图需求重新组织和封装数据,每个视图对应1个或多个json数据。关系筛选组件是根据图谱中数据的属性进行数据过滤;搜索组件是根据关键字对实体数据的名称属性进行模糊匹配。
34.利用前端可视化组件渲染基础主视图的方法为:
35.1)前端获取到json格式数据;
36.2)根据可视化组件开放的渲染接口所规定的数据格式,组织json数据;
37.3)调用可视化组件的渲染接口,传递组织后的数据,进行绘制,得到软件漏洞知识图谱基础主视图。
38.步骤3:利用多屏实现数据聚合与下钻式探索,支持软件漏洞知识图谱中级联关系与比对关系的可视化交互分析。针对以“软件名称-版本号-代码文件-函数-cfg”为例的软件组成层级关系,在图谱数据规模较大时,难以在有限区域显示全部实体节点。利用数据聚合算法将节点数量超过指定阈值的层级实体进行聚合,显示为聚合节点。针对聚合节点和
实体节点,通过鼠标拖拽动作或右键点选动作,投放至新的显示屏幕浏览器中,呈现下钻式探索结果。存在多块显示屏幕时,通过多次下钻式探索交互,能够实现软件漏洞知识图谱中级联关系、比对关系的可视化呈现。其中拖拽投放是以拖动的节点为根节点,新的屏幕上显示的是拖动节点的子节点和与其相关的聚合节点。聚合节点跟随实体节点加载在主视图上,以颜色、透明度、虚线框等形式作区分。
39.步骤4:利用多屏实现软件漏洞知识图谱中相似代码关系的可视化呈现与交互。针对软件漏洞知识图谱中指定实体节点存在多个相似节点时,比如一指定的函数实体节点存在的多个相似函数节点,借助多块显示屏幕实现整体投放,投放位置取决于可视化系统的预配置策略,或由分析人员的动态指定。将各相似函数节点的代码分别投放至一屏幕;各屏幕上的相似代码数据提供行级比对关系的呈现,分析人员翻动或定位代码行时,支持多屏视图中的数据联动。各相似代码关系的代码可以都加载在一个屏幕上,也可以分别加载在多个屏幕上。其中,数据联动主要通过记录相似代码的锚点位置并跟踪当前视图中显示的代码行号进行实现,比如,函数实体节点f1与函数实体节点f2存在相似关系,f1的锚点位置为函数f1内相似代码的起始行号l1、f2的锚点位置为函数f2内相似代码的起始行号l2,则多屏联动显示时,两个初始视图分别定位至两个函数的锚点位置,分析人员翻动其中一个视图的代码行时,其他视图翻动的代码行数与速度保持同步。
40.本发明的装置包括多个显示屏幕和主机系统,所述主机系统包括前端可视化模块、数据预处理模块、图数据库。
41.尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
技术特征:1.一种软件漏洞知识图谱多屏可视化方法,其步骤包括:1)构建或获取目标软件的软件漏洞知识图谱;其中,所述软件漏洞知识图谱包含实体以及实体之间的关联关系;所述实体包括软件名、版本号、代码文件名、函数名、函数体、漏洞标识,所述关联关系包括实体之间的组成关系、影响关系、相似关系;2)根据所述软件漏洞知识图谱绘制软件漏洞知识图谱基础主视图并将其显示在第一屏幕上;所述软件漏洞知识图谱基础主视图中包含多个关注度最高的软件名、漏洞标识,数据类别,每种类别数据的数量以及各数据类别之间的关联关系;3)当同一层级的节点超过设定阈值时,将对应层级的节点聚合生成一聚合节点并将其显示在所述第一屏幕上;4)将所述第一屏幕上需进一步展示的聚合节点或实体节点,通过设定操作投放至第二屏幕上;所述第二屏幕上以投放的节点为根节点,从所述软件漏洞知识图谱中获取该根节点的子节点以及与该根节点相关的聚合节点进行展示;5)如果所述第二屏幕上展示的实体节点a存在多个相似节点,则将每一相似节点分别投放至一屏幕,当翻动或定位该实体节点a中的代码时,对各相应屏幕上的对应代码进行数据联动。2.根据权利要求1所述的方法,其特征在于,所述实体还包含cfg、漏洞补丁;所述关联关系还包括实体之间的依赖关系。3.根据权利要求1或2所述的方法,其特征在于,所述软件漏洞知识图谱基础主视图中还包含实体及关系筛选组件、实体搜索组件;其中,实体及关系筛选组件由于根据所述软件漏洞知识图谱中数据的属性对数据进行过滤,所述实体搜索组件由于根据关键字对实体数据的名称属性进行模糊匹配。4.根据权利要求1或2或3所述的方法,其特征在于,将所述第一屏幕上需进一步展示的聚合节点或实体节点,通过鼠标拖拽动作或右键点选动作,投放至第二屏幕中进行展示。5.根据权利要求1或2或3所述的方法,其特征在于,以“软件名称-版本号-代码文件-函数-cfg”对所述软件漏洞知识图谱包含的实体进行分层。6.根据权利要求1或2或3所述的方法,其特征在于,将所述软件漏洞知识图谱的相关数据预处理为json格式,然后利用前端可视化组件渲染生成所述软件漏洞知识图谱基础主视图。7.一种软件漏洞知识图谱多屏可视化装置,其特征在于,包括多个显示屏幕和主机系统;各显示屏分别与所述主机系统连接,所述主机系统包括前端可视化模块和图数据库;其中,所述图数据库,用于存储目标软件的软件漏洞知识图谱;其中,所述软件漏洞知识图谱包含实体以及实体之间的关联关系;所述实体包括软件名、版本号、代码文件名、函数名、函数体、漏洞标识,所述关联关系包括实体之间的组成关系、影响关系、相似关系;所述前端可视化模块,用于根据所述软件漏洞知识图谱绘制软件漏洞知识图谱基础主视图并将其显示在第一屏幕上;所述软件漏洞知识图谱基础主视图中包含多个关注度最高的软件名、漏洞标识,数据类别,每种类别数据的数量以及各数据类别之间的关联关系;所述主机系统,用于当同一层级的节点超过设定阈值时,将对应层级的节点聚合生成一聚合节点并将其显示在所述第一屏幕上;以及通过设定操作将所述第一屏幕上需进一步
展示的聚合节点或实体节点投放至第二屏幕上时,在所述第二屏幕上以投放的节点为根节点,从所述软件漏洞知识图谱中获取该根节点的子节点以及与该根节点相关的聚合节点进行展示;如果所述第二屏幕上展示的实体节点a存在多个相似节点,则将每一相似节点分别投放至一屏幕,当翻动或定位该实体节点a中的代码时,对各相应屏幕上的相应代码进行数据联动。8.根据权利要求7所述的装置,其特征在于,还包括一数据预处理模块,用于将所述软件漏洞知识图谱的相关数据预处理为json格式并发送给所述前端可视化模块。9.根据权利要求7所述的装置,其特征在于,所述实体还包含cfg、漏洞补丁;所述关联关系还包括实体之间的依赖关系。10.根据权利要求9所述的装置,其特征在于,所述主机系统以“软件名称-版本号-代码文件-函数-cfg”对所述软件漏洞知识图谱包含的实体进行分层。
技术总结本发明公开了一种软件漏洞知识图谱多屏可视化方法和装置。本方法为:1)构建或获取目标软件的软件漏洞知识图谱;2)绘制软件漏洞知识图谱基础主视图并将其显示在第一屏幕上;3)当同一层级的节点超过设定阈值时,将对应层级的节点聚合生成一聚合节点并将其显示在所述第一屏幕上;4)将第一屏幕上需进一步展示的聚合节点或实体节点,通过设定操作投放至第二屏幕上;第二屏幕上以投放的节点为根节点,并对该根节点的子节点以及与该根节点相关的聚合节点进行展示;5)如果第二屏幕上展示的实体节点a存在多个相似节点,则将每一相似节点分别投放至一屏幕,当翻动或定位该实体节点a中的代码时,对各相应屏幕上的对应代码进行数据联动。动。动。
技术研发人员:朴爱花 邓月 霍玮 邹维
受保护的技术使用者:中国科学院信息工程研究所
技术研发日:2022.06.17
技术公布日:2022/11/1