基于车联网风险的漏洞检测方法和装置

文档序号:33713459发布日期:2023-04-01 02:02阅读:46来源:国知局
基于车联网风险的漏洞检测方法和装置

1.本发明涉及信息安全技术领域,尤其涉及一种基于车联网风险的漏洞检测方法和装置。


背景技术:

2.随着汽车产业智能化、网联汽车的不断普及,车联网产品的安全受到越来越多的重视。其中,车联网指的是在网络环境下,车辆与车辆、车辆与行人、车辆与道路基础设施以及车辆与云服务端直接实现互联互通。车载智能终端作为车联网环境下信息交互的核心之一,降低其安全风险是保障车联网安全的关键一环,而对车载智能终端控制系统的软件进行漏洞检测,是降低其安全风险的重要手段。
3.传统的漏洞检测方式依赖于审查人员对安全问题的理解与长期经验的积累,因此在传统方法以外,应用机器学习作为补充进行漏洞检测的方法取得了一定进展,避免了常用的检测工具依赖专家人工编写检测规则的问题。其中,图神经网络可以充分利用图数据内含有的结构信息、节点属性信息和上下文信息,能够捕获更广泛的漏洞特征,提高漏洞检测能力,因此得到了重视。然而,现有的基于图神经网络的漏洞检测方法在函数规模较大时,由于图结构过于复杂和庞大,会影响模型的学习效率,并且图中存在大量与漏洞无关的节点和边会对模型学习漏洞模式产生干扰,从而导致模型的误报率较高。此外,现有的基于图神经网络的漏洞检测方法通常将代码的各种解析信息(例如语法信息、依赖信息等)聚合到一个图中后再对这个图进行处理,但是在将各种信息聚合到同一个图中时会损失掉各种解析信息自身的部分信息,对于部分与某一种解析信息关联较大的漏洞类型的检测效果欠佳。


技术实现要素:

4.本发明提供一种基于车联网风险的漏洞检测方法和装置,用以解决现有技术中漏洞检测效果欠佳的缺陷。
5.本发明提供一种基于车联网风险的漏洞检测方法,包括:
6.获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图;
7.从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;
8.基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;
9.基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量
进行分类,得到所述待检测程序的漏洞检测结果。
10.根据本发明提供的基于车联网风险的漏洞检测方法,所述基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量,具体包括:
11.基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量;
12.将所述每一语义提取层输出的所述任一子图的层向量融合,得到所述任一子图的图向量;
13.其中,所述任一子图为所述抽象语法树子图、所述控制流子图或所述数据流子图;
14.任一语义提取层在对任一子图进行语义信息抽取时,会基于注意力机制确定所述任一子图在所述任一语义提取层的重要节点,强化所述重要节点在所述任一语义提取层的节点向量,并融合各个节点在所述任一语义提取层的节点向量,得到所述任一语义提取层输出的所述任一子图的层向量。
15.根据本发明提供的基于车联网风险的漏洞检测方法,所述基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量,具体包括:
16.基于当前语义提取层的图卷积神经网络,对上一语义提取层输出的所述任一子图中各个节点的节点向量以及各个节点之间边的类型向量进行语义提取,确定所述任一子图中各个节点在当前语义提取层的初始向量;
17.基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重;
18.基于所述任一子图中各个节点在当前语义提取层的节点权重,确定所述任一子图在当前语义提取层的重要节点以及所述重要节点在当前语义提取层的节点权重;其中,所述重要节点在当前语义提取层的节点权重大于1;
19.将所述重要节点在当前语义提取层的初始向量乘以对应节点在当前语义提取层的节点权重,得到所述重要节点在当前语义提取层的节点向量,并将所述任一子图中其余节点在当前语义提取层的初始向量作为对应节点在当前语义提取层的节点向量;
20.将所述任一子图中各个节点在当前语义提取层的节点向量融合,得到当前语义提取层输出的所述任一子图的层向量。
21.根据本发明提供的基于车联网风险的漏洞检测方法,所述基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重,具体包括:
22.拼接所述任一子图中任一节点以及所述任一节点的邻居节点在当前语义提取层的初始向量,得到节点融合向量;
23.对所述节点融合向量进行自注意力变换,得到所述任一节点在当前语义提取层的节点权重。
24.根据本发明提供的基于车联网风险的漏洞检测方法,所述基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果,具体包括:
25.基于所述候选漏洞语句,构建依赖融合图;所述依赖融合图的任一节点对应任一候选漏洞语句,所述依赖融合图中任意两个节点之间存在函数调用关系、数据依赖关系或控制依赖关系;
26.对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量;
27.基于所述拼接向量与所述依赖融合图的融合图向量之间的融合结果进行分类,得到所述待检测程序的漏洞检测结果。
28.根据本发明提供的基于车联网风险的漏洞检测方法,所述对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量,具体包括:
29.获取所述依赖融合图的各个节点中各个标记的标记向量;
30.拼接所述依赖融合图的任一节点中各个标记的标记向量,得到所述依赖融合图的所述任一节点的标记融合向量;
31.对所述依赖融合图的所述任一节点的标记融合向量进行自注意力变换,得到所述依赖融合图的所述任一节点中各个标记的标记权重;
32.基于所述依赖融合图的所述任一节点中各个标记的标记权重,对所述依赖融合图的所述任一节点中各个标记的标记向量进行加权,得到所述依赖融合图的所述任一节点的语义向量;
33.利用关系图神经网络,基于所述依赖融合图的各个节点的语义向量,获取所述依赖融合图的融合图向量。
34.根据本发明提供的基于车联网风险的漏洞检测方法,所述基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图,具体包括:
35.从所述抽象语法树中划分出对应所述候选漏洞语句的语法结构的抽象语法树子图;
36.从所述控制流图中划分出对应所述候选漏洞语句中包含的程序块的控制流向的控制流子图;
37.从所述数据流图中划分出对应所述候选漏洞语句中包含的各数据操作的数据依赖关系的数据流子图。
38.根据本发明提供的基于车联网风险的漏洞检测方法,所述漏洞检测模型是基于如下步骤训练得到的:
39.获取漏洞库中各类漏洞对应的漏洞代码样本以及正常代码样本,并构建所述漏洞代码样本以及所述正常代码样本的样本抽象语法树子图、样本控制流子图和样本数据流子图;
40.基于所述漏洞检测模型,以及所述漏洞代码样本和所述正常代码样本的样本抽象语法树子图、样本控制流子图和样本数据流子图,确定所述漏洞检测模型输出的所述漏洞代码样本和所述正常代码样本的漏洞检测结果;
41.基于所述漏洞代码样本和所述正常代码样本的漏洞检测结果,对所述漏洞检测模型的参数进行调整。
42.根据本发明提供的基于车联网风险的漏洞检测方法,所述漏洞库包括通用软件漏洞库和车联网产品漏洞库。
43.本发明还提供一种基于车联网风险的漏洞检测装置,包括:
44.数据获取单元,用于获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图;
45.语句筛选单元,用于从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;
46.子图获取单元,用于基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;
47.漏洞检测单元,用于基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
48.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于车联网风险的漏洞检测方法。
49.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于车联网风险的漏洞检测方法。
50.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于车联网风险的漏洞检测方法。
51.本发明提供的基于车联网风险的漏洞检测方法和装置,通过从抽象语法树中搜索候选语法节点,并基于候选语法节点,从程序依赖图中遍历与候选语法节点相关联的语句,得到候选漏洞语句,可以从较大规模的待检测程序中筛选出与漏洞相关联的候选漏洞语句,作为后续漏洞检测的基准,较大程度地降低后续漏洞检测模型的解析难度和运算复杂度,同时也较大程度地去除了待检测程序中的无关信息、避免了无关信息在漏洞检测过程中带来的干扰,从而提升了漏洞检测的效率和准确性;随后,从抽象语法树、控制流图以及数据流图中划分出与上述候选漏洞语句相关联的子图,从而得到抽象语法树子图、控制流子图和数据流子图,作为漏洞检测模型进行语义信息抽取的独立单元,可以尽量完整地提取各类解析信息中包含的语义信息,同时避免引入过多冗余信息,再基于抽象语法树子图、控制流子图和数据流子图的图向量的拼接向量进行分类,得到待检测程序的漏洞检测结果,提升了车载智能终端的漏洞检测的准确性,降低了车联网安全风险。
附图说明
52.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1是本发明提供的基于车联网风险的漏洞检测方法的流程示意图;
54.图2是本发明提供的语义信息抽取方法的流程示意图;
55.图3是本发明提供的层向量提取方法的流程示意图;
56.图4是本发明提供的漏洞检测方法的流程示意图;
57.图5是本发明提供的基于车联网风险的漏洞检测装置的结构示意图;
58.图6是本发明提供的电子设备的结构示意图。
具体实施方式
59.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
60.图1是本发明提供的基于车联网风险的漏洞检测方法的流程示意图,如图1所示,该方法包括:
61.步骤110,获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图。
62.具体地,获取车载智能终端的控制系统中包含的待检测程序,以对其进行漏洞检测,及时发现车载智能终端中可能对车联网产生安全风险的软件漏洞。其中,待检测程序可以是基于c/c++等高级语言编写而成的程序代码。针对任一待检测程序,可以利用静态分析工具(例如joern)对待检测程序进行源代码解析,生成该待检测程序的抽象语法树、程序依赖图、控制流图和数据流图,以表征该待检测程序的语法结构、依赖关系、控制流程以及数据流向等。
63.步骤120,从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的。
64.具体地,可以预先根据各类漏洞类型,确定与各类漏洞类型相关联的语句类型,包括:api/库函数调用语句、指针使用语句、数组使用语句、算术表达式语句、函数参数语句、函数返回语句。由于抽象语法树定义了代码的结构,通过搜索这颗抽象语法树,可以精准的定位到声明语句、赋值语句、运算语句等语句。因此,基于上述与各类漏洞类型相关联的语句类型对抽象语法树进行搜索,以查找出各个语句类型对应的候选语法节点,例如声明节点、赋值节点、运算节点、数组节点等。可见,候选语法节点对应该待检测程序中包含的与某一类或某几类漏洞类型相关联的语句类型。
65.随后,基于上述候选语法节点,从程序依赖图中遍历与各个候选语法节点相关联的语句,得到候选漏洞语句。其中,可以首先在程序依赖图中查找与各个候选语法节点相对应的依赖图节点,然后以每个上述依赖图节点为起点,按照依赖关系前向遍历以及后向遍历该程序依赖图,获得与上述候选语法节点相关联的语句,得到候选漏洞语句。此处,候选漏洞语句即待检测程序中与各类漏洞类型相关联的程序语句。通过上述方式从较大规模的待检测程序中筛选出与漏洞相关联的候选漏洞语句,作为后续漏洞检测的基准,可以较大程度地降低后续漏洞检测模型的解析难度和运算复杂度,同时也较大程度地去除了待检测程序中的无关信息、避免了无关信息在漏洞检测过程中带来的干扰,从而提升了漏洞检测的效率和准确性。
66.步骤130,基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数
据流图,构建抽象语法树子图、控制流子图和数据流子图。
67.具体地,考虑到将代码的各种解析信息(例如语法信息、依赖信息等)聚合到一个图中后再对这个图进行处理,容易在将各种信息聚合到同一个图中时损失掉各种解析信息自身的部分信息,另外也容易引入过多的冗余信息,导致部分漏洞类型的漏洞的检测效果欠佳。因此,本发明实施例将对抽象语法树、控制流图和数据流图等三种代码解析信息进行单独的语义提取处理,以尽量完整地提取各类解析信息中包含的语义信息,同时避免引入过多冗余信息。具体而言,在上述候选漏洞语句基础上,可以分别从抽象语法树、控制流图以及数据流图中划分出与上述候选漏洞语句相关联的子图,从而得到抽象语法树子图、控制流子图和数据流子图,作为漏洞检测模型进行语义信息抽取的独立单元。
68.此处,可以从抽象语法树中划分出对应候选漏洞语句的语法结构的抽象语法树子图;从控制流图中划分出对应候选漏洞语句中包含的程序块的控制流向的控制流子图;从数据流图中划分出对应候选漏洞语句中包含的各数据操作的数据依赖关系的数据流子图。
69.步骤140,基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
70.具体地,基于已训练的漏洞检测模型中的语义提取模块,分别对抽象语法树子图、控制流子图以及数据流子图进行语义信息抽取,得到各个子图的图向量。此处,漏洞检测模型的语义提取模型可以基于图神经网络(例如经典图卷积神经网络)构建得到,从而利用图神经网络能够充分提取图数据内含有的结构信息、节点属性信息和上下文信息的能力,提高漏洞检测场景下的语义提取能力。
71.随后,将上述抽象语法树子图、控制流子图和数据流子图的图向量进行拼接,得到拼接向量。其中,拼接向量中包含待检测程序中与漏洞相关联的语法信息、控制流程信息以及数据流向信息。漏洞检测模型中的分类模块会基于上述拼接向量进行二分类或多分类(具体可以根据实际应用场景以及模型训练时能够获取的漏洞样本的分类标签确定),得到待检测程序的漏洞检测结果。其中,漏洞检测结果可以表征该待检测程序中是否包含漏洞,在漏洞检测模型能够进行多分类时,还可以表征该待检测程序中是否包含特定类型的漏洞。
72.此处,漏洞检测模型可以基于如下步骤进行训练:
73.(1)数据收集:获取漏洞库中各类漏洞对应的漏洞代码样本以及正常代码样本,作为训练集中的正负样本。随后,基于与待检测程序类似的方式构建漏洞代码样本以及正常代码样本的样本抽象语法树子图、样本控制流子图和样本数据流子图。其中,漏洞库可以包括通用软件漏洞库(例如中国国家信息安全漏洞库、美国国家计算机通用漏洞数据库和sard等)和车联网产品漏洞库(例如车联网产品安全漏洞专业库)。
74.(2)模型前向传播:将任一代码样本(漏洞代码样本或正常代码样本)的样本抽象语法树子图、样本控制流子图和样本数据流子图输入至漏洞检测模型进行语义信息抽取和分类,得到漏洞检测模型输出的该代码样本的漏洞检测结果。其中,对代码样本进行语义信息抽取和分类的机制与待检测程序相同。
75.(3)模型后向传播:基于任一代码样本的漏洞检测结果与该代码样本的分类标签
(例如正常或漏洞,又例如正常、漏洞类型1或漏洞类型2......)之间的差异,对漏洞检测模型的参数进行调整。
76.本发明实施例提供的方法,通过从抽象语法树中搜索候选语法节点,并基于候选语法节点,从程序依赖图中遍历与候选语法节点相关联的语句,得到候选漏洞语句,可以从较大规模的待检测程序中筛选出与漏洞相关联的候选漏洞语句,作为后续漏洞检测的基准,较大程度地降低后续漏洞检测模型的解析难度和运算复杂度,同时也较大程度地去除了待检测程序中的无关信息、避免了无关信息在漏洞检测过程中带来的干扰,从而提升了漏洞检测的效率和准确性;随后,从抽象语法树、控制流图以及数据流图中划分出与上述候选漏洞语句相关联的子图,从而得到抽象语法树子图、控制流子图和数据流子图,作为漏洞检测模型进行语义信息抽取的独立单元,可以尽量完整地提取各类解析信息中包含的语义信息,同时避免引入过多冗余信息,再基于抽象语法树子图、控制流子图和数据流子图的图向量的拼接向量进行分类,得到待检测程序的漏洞检测结果,提升了车载智能终端的漏洞检测的准确性,降低了车联网安全风险。
77.基于上述实施例,如图2所示,所述基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量,具体包括:
78.步骤210,基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量;
79.步骤220,将所述每一语义提取层输出的所述任一子图的层向量融合,得到所述任一子图的图向量;
80.其中,所述任一子图为所述抽象语法树子图、所述控制流子图或所述数据流子图;
81.任一语义提取层在对任一子图进行语义信息抽取时,会基于注意力机制确定所述任一子图在所述任一语义提取层的重要节点,强化所述重要节点在所述任一语义提取层的节点向量,并融合各个节点在所述任一语义提取层的节点向量,得到所述任一语义提取层输出的所述任一子图的层向量。
82.具体地,漏洞检测模型在对任一子图(抽象语法树子图、控制流子图或数据流子图)进行语义信息提取时,为了进一步加强其中与漏洞关联较大的解析信息并弱化其中与漏洞关联较小的解析信息,从而提升该子图的图向量的语义表达能力,可以采用多层语义提取层对该子图进行连续语义提取,从而从多个维度、多个层次提取该子图中的语义信息。
83.其中,针对任一语义提取层,该语义提取层在对该子图进行语义信息抽取时,可以基于注意力机制确定该子图在该语义提取层的重要节点,强化上述重要节点在该语义提取层的节点向量,并融合各个节点在该语义提取层的节点向量,得到该语义提取层输出的该子图的层向量。可见,在每一语义提取层,会在该层提取该子图中的重要节点,而每一语义提取层的关注点不同,故其提取的重要节点之间可能存在差异,因此可以从多个维度、多个层次确定该子图中的重要语义信息并对其进行强化,从而得到每一语义提取层确定的层向量。
84.随后,通过将每一语义提取层输出的该子图的层向量融合,可以将上述多个语义提取层强化的多维度重要语义信息进行综合,从而得到语义表达能力更强的图向量。依据各个子图的上述图向量进行漏洞检测,有助于提升漏洞检测的准确性。
85.基于上述任一实施例,如图3所示,所述基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量,具体包括:
86.步骤211,基于当前语义提取层的图卷积神经网络,对上一语义提取层输出的所述任一子图中各个节点的节点向量以及各个节点之间边的类型向量进行语义提取,确定所述任一子图中各个节点在当前语义提取层的初始向量;
87.步骤212,基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重;
88.步骤213,基于所述任一子图中各个节点在当前语义提取层的节点权重,确定所述任一子图在当前语义提取层的重要节点以及所述重要节点在当前语义提取层的节点权重;其中,所述重要节点在当前语义提取层的节点权重大于1;
89.步骤214,将所述重要节点在当前语义提取层的初始向量乘以对应节点在当前语义提取层的节点权重,得到所述重要节点在当前语义提取层的节点向量,并将所述任一子图中其余节点在当前语义提取层的初始向量作为对应节点在当前语义提取层的节点向量;
90.步骤215,将所述任一子图中各个节点在当前语义提取层的节点向量融合,得到当前语义提取层输出的所述任一子图的层向量。
91.具体地,每个语义提取层均由图卷积神经网络(例如经典图卷积神经网络cgcn(crystal graphical convolutional neural network)和注意力模块(例如自注意力图池化sag pooling(self attention graph pooling)模块)构成。在任一语义提取层对任一子图进行语义信息抽取时,可以基于当前语义提取层的图卷积神经网络,对上一语义提取层输出的该子图中各个节点的节点向量以及各个节点之间边的类型向量进行语义提取,确定该子图中各个节点在当前语义提取层的初始向量。其中,在当前语义提取层为首个语义提取层时,其输入为该子图中各个节点的随机初始化向量以及各个节点之间边的类型向量,边的类型向量表征了该边连接的两个节点之间的连接关系;在当前语义提取层不为首个语义提取层时,其输入为上一语义提取层输出的该子图中各个节点的节点向量以及各个节点之间边的类型向量。
92.随后,基于当前语义提取层的注意力模块,对该子图中各个节点在当前语义提取层的初始向量进行自注意力变换,确定该子图中各个节点的注意力分值,从而得到各个节点在当前语义提取层的节点权重。基于该子图中各个节点在当前语义提取层的节点权重,可以确定节点权重最高的多个节点,作为该子图在当前语义提取层的重要节点,并获取各个重要节点在当前语义提取层的节点权重。其中,重要节点在当前语义提取层的节点权重大于1,若任一重要节点在当前语义提取层的节点权重小于等于1,则在各个重要节点的节点权重基础上乘以固定系数以将其增大至大于1,从而得到各个重要节点新的节点权重。
93.将各个重要节点在当前语义提取层的初始向量乘以对应节点在当前语义提取层的节点权重,得到各个重要节点在当前语义提取层的节点向量,并将该子图中其余节点(即重要节点以外的节点)在当前语义提取层的初始向量作为对应节点在当前语义提取层的节点向量。得到该子图中各个节点的节点向量之后,可以基于多层感知机将该子图中各个节点在当前语义提取层的节点向量融合,得到当前语义提取层输出的该子图的层向量。
94.基于上述任一实施例,所述基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重,具体包括:
95.拼接所述任一子图中任一节点以及所述任一节点的邻居节点在当前语义提取层的初始向量,得到节点融合向量;
96.对所述节点融合向量进行自注意力变换,得到所述任一节点在当前语义提取层的节点权重。
97.具体地,对于该子图中的任一节点,可以获取该节点以及该节点的邻居节点在当前语义提取层的初始向量,然后将该节点以及该节点的邻居节点在当前语义提取层的初始向量进行拼接,得到该节点对应的节点融合向量。随后,基于注意力模块对该节点融合向量进行自注意力变换,能够得到该节点融合向量中包含的各个节点(包括该节点以及该节点的邻居节点)的注意力分值,获取该节点的注意力分值作为该节点在当前语义提取层的节点权重。
98.基于上述任一实施例,如图4所示,所述基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果,具体包括:
99.步骤410,基于所述候选漏洞语句,构建依赖融合图;所述依赖融合图的任一节点对应任一候选漏洞语句,所述依赖融合图中任意两个节点之间存在函数调用关系、数据依赖关系或控制依赖关系;
100.步骤420,对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量;
101.步骤430,基于所述拼接向量与所述依赖融合图的融合图向量之间的融合结果进行分类,得到所述待检测程序的漏洞检测结果。
102.具体地,考虑到待检测程序的多种解析信息之间可能存在一定的关联性,而该关联性可能有助于漏洞的检测,尤其是部分复杂特性的漏洞。因此,为了进一步提升车载智能终端的漏洞检测准确性,可以基于上述各个候选漏洞语句,构建依赖融合图,并结合抽象语法树子图、控制流子图、数据流子图和依赖融合图进行漏洞检测。其中,依赖融合图中的任一节点对应任一候选漏洞语句,该依赖融合图中任意两个节点之间是否存在边以及两个节点之间边的类型可以基于待检测程序的代码属性图和程序依赖图确定,其中代码属性图中包含了各候选漏洞语句之间可能存在的数据依赖关系和控制依赖关系,而程序依赖图中包含了各候选漏洞语句之间可能存在的函数调用关系。因此,依赖融合图中任意两个节点之间存在函数调用关系、数据依赖关系或控制依赖关系。
103.随后,可以基于图神经网络对上述依赖融合图进行语义信息抽取,得到该依赖融合图的融合图向量。其中,依赖融合图的融合图向量中包含了该图中各节点的语义信息以及各节点之间的关联信息。将抽象语法树子图、控制流子图和数据流子图对应的拼接向量与依赖融合图的融合图向量进行融合,得到其融合结果后,基于该融合结果进行分类,可以得到待检测程序的漏洞检测结果。
104.基于上述任一实施例,所述对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量,具体包括:
105.获取所述依赖融合图的各个节点中各个标记的标记向量;
106.拼接所述依赖融合图的任一节点中各个标记的标记向量,得到所述依赖融合图的所述任一节点的标记融合向量;
107.对所述依赖融合图的所述任一节点的标记融合向量进行自注意力变换,得到所述依赖融合图的所述任一节点中各个标记的标记权重;
108.基于所述依赖融合图的所述任一节点中各个标记的标记权重,对所述依赖融合图的所述任一节点中各个标记的标记向量进行加权,得到所述依赖融合图的所述任一节点的语义向量;
109.利用关系图神经网络,基于所述依赖融合图的各个节点的语义向量,获取所述依赖融合图的融合图向量。
110.具体地,依赖融合图中各个节点对应各个候选漏洞语句,每个候选漏洞语句中包含多个标记(即代码中的token,例如关键字、参数名、函数名等),因此可以基于预训练的语言模型(例如word2vec,bert等)对任一节点中的各个标记进行特征提取,得到各个标记的标记向量。考虑到任一节点中包含的各个标记的重要性不同,因此可以拼接该节点中各个标记的标记向量,得到该节点的标记融合向量,再基于sag pooling等注意力模块对该节点的标记融合向量进行自注意力变换,从而得到该节点中各个标记的标记权重。根据该节点中各个标记的标记权重,对该节点中各个标记的标记向量进行加权求和,即得到该节点的语义向量。
111.获得依赖融合图中所有节点的语义向量之后,可以将所有节点的语义向量以及所有节点的连接关系矩阵输入至关系图神经网络进行语义提取,从而得到该关系图神经网络输出的该依赖融合图中各个节点的节点向量,并融合所有节点的节点向量,得到该依赖融合图的融合图向量。
112.基于上述任一实施例,图5是本发明提供的基于车联网风险的漏洞检测装置的结构示意图,如图5所示,该装置包括:数据获取单元510、语句筛选单元520、子图获取单元530和漏洞检测单元540。
113.其中,数据获取单元510用于获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图;
114.语句筛选单元520用于从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;
115.子图获取单元530用于基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;
116.漏洞检测单元540用于基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
117.本发明实施例提供的装置,通过从抽象语法树中搜索候选语法节点,并基于候选语法节点,从程序依赖图中遍历与候选语法节点相关联的语句,得到候选漏洞语句,可以从较大规模的待检测程序中筛选出与漏洞相关联的候选漏洞语句,作为后续漏洞检测的基准,较大程度地降低后续漏洞检测模型的解析难度和运算复杂度,同时也较大程度地去除
了待检测程序中的无关信息、避免了无关信息在漏洞检测过程中带来的干扰,从而提升了漏洞检测的效率和准确性;随后,从抽象语法树、控制流图以及数据流图中划分出与上述候选漏洞语句相关联的子图,从而得到抽象语法树子图、控制流子图和数据流子图,作为漏洞检测模型进行语义信息抽取的独立单元,可以尽量完整地提取各类解析信息中包含的语义信息,同时避免引入过多冗余信息,再基于抽象语法树子图、控制流子图和数据流子图的图向量的拼接向量进行分类,得到待检测程序的漏洞检测结果,提升了车载智能终端的漏洞检测的准确性,降低了车联网安全风险。
118.基于上述任一实施例,所述基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量,具体包括:
119.基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量;
120.将所述每一语义提取层输出的所述任一子图的层向量融合,得到所述任一子图的图向量;
121.其中,所述任一子图为所述抽象语法树子图、所述控制流子图或所述数据流子图;
122.任一语义提取层在对任一子图进行语义信息抽取时,会基于注意力机制确定所述任一子图在所述任一语义提取层的重要节点,强化所述重要节点在所述任一语义提取层的节点向量,并融合各个节点在所述任一语义提取层的节点向量,得到所述任一语义提取层输出的所述任一子图的层向量。
123.基于上述任一实施例,所述基于所述漏洞检测模型的语义提取模块中的每一语义提取层,对任一子图进行语义信息抽取,得到所述每一语义提取层输出的所述任一子图的层向量,具体包括:
124.基于当前语义提取层的图卷积神经网络,对上一语义提取层输出的所述任一子图中各个节点的节点向量以及各个节点之间边的类型向量进行语义提取,确定所述任一子图中各个节点在当前语义提取层的初始向量;
125.基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重;
126.基于所述任一子图中各个节点在当前语义提取层的节点权重,确定所述任一子图在当前语义提取层的重要节点以及所述重要节点在当前语义提取层的节点权重;其中,所述重要节点在当前语义提取层的节点权重大于1;
127.将所述重要节点在当前语义提取层的初始向量乘以对应节点在当前语义提取层的节点权重,得到所述重要节点在当前语义提取层的节点向量,并将所述任一子图中其余节点在当前语义提取层的初始向量作为对应节点在当前语义提取层的节点向量;
128.将所述任一子图中各个节点在当前语义提取层的节点向量融合,得到当前语义提取层输出的所述任一子图的层向量。
129.基于上述任一实施例,所述基于当前语义提取层的注意力模块,对所述任一子图中各个节点在当前语义提取层的初始向量进行自注意力变换,得到所述任一子图中各个节点在当前语义提取层的节点权重,具体包括:
130.拼接所述任一子图中任一节点以及所述任一节点的邻居节点在当前语义提取层的初始向量,得到节点融合向量;
131.对所述节点融合向量进行自注意力变换,得到所述任一节点在当前语义提取层的节点权重。
132.基于上述任一实施例,所述基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果,具体包括:
133.基于所述候选漏洞语句,构建依赖融合图;所述依赖融合图的任一节点对应任一候选漏洞语句,所述依赖融合图中任意两个节点之间存在函数调用关系、数据依赖关系或控制依赖关系;
134.对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量;
135.基于所述拼接向量与所述依赖融合图的融合图向量之间的融合结果进行分类,得到所述待检测程序的漏洞检测结果。
136.基于上述任一实施例,所述对所述依赖融合图进行语义信息抽取,得到所述依赖融合图的融合图向量,具体包括:
137.获取所述依赖融合图的各个节点中各个标记的标记向量;
138.拼接所述依赖融合图的任一节点中各个标记的标记向量,得到所述依赖融合图的所述任一节点的标记融合向量;
139.对所述依赖融合图的所述任一节点的标记融合向量进行自注意力变换,得到所述依赖融合图的所述任一节点中各个标记的标记权重;
140.基于所述依赖融合图的所述任一节点中各个标记的标记权重,对所述依赖融合图的所述任一节点中各个标记的标记向量进行加权,得到所述依赖融合图的所述任一节点的语义向量;
141.利用关系图神经网络,基于所述依赖融合图的各个节点的语义向量,获取所述依赖融合图的融合图向量。
142.基于上述任一实施例,所述基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图,具体包括:
143.从所述抽象语法树中划分出对应所述候选漏洞语句的语法结构的抽象语法树子图;
144.从所述控制流图中划分出对应所述候选漏洞语句中包含的程序块的控制流向的控制流子图;
145.从所述数据流图中划分出对应所述候选漏洞语句中包含的各数据操作的数据依赖关系的数据流子图。
146.基于上述任一实施例,所述漏洞检测模型是基于如下步骤训练得到的:
147.获取漏洞库中各类漏洞对应的漏洞代码样本以及正常代码样本,并构建所述漏洞代码样本以及所述正常代码样本的样本抽象语法树子图、样本控制流子图和样本数据流子图;
148.基于所述漏洞检测模型,以及所述漏洞代码样本和所述正常代码样本的样本抽象语法树子图、样本控制流子图和样本数据流子图,确定所述漏洞检测模型输出的所述漏洞代码样本和所述正常代码样本的漏洞检测结果;
149.基于所述漏洞代码样本和所述正常代码样本的漏洞检测结果,对所述漏洞检测模型的参数进行调整。
150.基于上述任一实施例,所述漏洞库包括通用软件漏洞库和车联网产品漏洞库。
151.图6是本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、存储器(memory)620、通信接口(communications interface)630和通信总线640,其中,处理器610,存储器620,通信接口630通过通信总线640完成相互间的通信。处理器610可以调用存储器620中的逻辑指令,以执行基于车联网风险的漏洞检测方法,该方法包括:获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图;从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
152.此外,上述的存储器620中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
153.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于车联网风险的漏洞检测方法,该方法包括:获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得到抽象语法树、程序依赖图、控制流图和数据流图;从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
154.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的基于车联网风险的漏洞检测方法,该方法包括:获取车载智能终端中的待检测程序,对所述待检测程序进行代码解析,得
到抽象语法树、程序依赖图、控制流图和数据流图;从所述抽象语法树中搜索候选语法节点,并基于所述候选语法节点,从所述程序依赖图中遍历与所述候选语法节点相关联的语句,得到候选漏洞语句;其中,所述候选语法节点是基于与各类漏洞类型相关联的语句类型确定的;基于所述候选漏洞语句,结合所述抽象语法树、所述控制流图和所述数据流图,构建抽象语法树子图、控制流子图和数据流子图;基于漏洞检测模型,分别对所述抽象语法树子图、控制流子图和数据流子图进行语义信息抽取,得到所述抽象语法树子图、控制流子图和数据流子图的图向量;将所述抽象语法树子图、控制流子图和数据流子图的图向量拼接,得到拼接向量,并基于所述拼接向量进行分类,得到所述待检测程序的漏洞检测结果。
155.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
156.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1