一种用于源代码漏洞检测的代码属性图压缩方法及装置制造方法及图纸

技术编号:32112850 阅读:24 留言:0更新日期:2022-01-29 18:56
本发明专利技术公开了一种用于源代码漏洞检测的代码属性图压缩方法及装置,所述方法包括如下步骤:根据代码属性图计算基于前K跳邻居的节点邻域信息增益;对节点邻域信息增益进行局部归一化处理;选择归一化处理后的节点邻域信息增益低的节点组成候选删除节点集合,判断候选删除节点集合中是否存在割点,并将割点从候选删除节点集合中移除,最终得到删除节点集合;从代码属性图中去掉删除节点集合中的节点以及与节点相连的边,得到代码属性压缩图。本发明专利技术通过计算节点的前K跳邻居增益信息,选择增益信息低的节点进行删除同时保证压缩图的连通性,在尽可能保持代码属性图的节点属性和结构特征的情况下降低其复杂度,从而提高后续模型训练的时空效率。型训练的时空效率。型训练的时空效率。

【技术实现步骤摘要】
一种用于源代码漏洞检测的代码属性图压缩方法及装置


[0001]本专利技术涉及软件漏洞检测方法,特别是涉及一种用于源代码漏洞检测的代码属性图压缩方法及装置。

技术介绍

[0002]软件漏洞是指在软件设计、开发、配置过程中引起的错误或者缺陷,且一般不会影响程序的正常运行,但在某些情况下会被他人恶意利用对软件系统进行攻击,最终导致系统崩溃、数据泄露、被植入危险代码等后果。目前已有的自动化漏洞检测技术,用到的方法包括但不限于静态分析、动态分析、符号执行、机器学习等,且基于软件静态分析结构图和深度学习的模型层出不穷,虽然这些方法在相关数据集上已经取得了较好的结果,但是它们依然面临着代码图结构表示复杂的主要挑战。
[0003]已有的基于代码图结构的漏洞检测技术,大多都是将代码的数据流图、控制流图、程序依赖图、抽象语法树等结合起来构成综合属性图,往往结构复杂、时空效率低,难以应用到实际的软件项目中。且已存的很多方法将代码属性图假设成同构图,忽略了代码中不同节点类型代表的语义信息。这些都是基于代码图结构的源代码漏洞检测任务所面临的问题。

技术实现思路

[0004]本专利技术针对上述问题,提供了一种用于源代码漏洞检测的代码属性图压缩方法、装置及计算机存储介质。通过在尽可能保持源代码属性图的节点属性和结构特征的情况下降低其复杂度,从而提高后续模型训练的时空效率。
[0005]本专利技术的第一方面,提供了一种用于源代码漏洞检测的代码属性图压缩方法,所述方法包括如下步骤:根据代码属性图节点计算基于前K跳邻居的节点邻域信息增益;对节点邻域信息增益进行局部归一化处理;将归一化处理后的节点邻域信息增益低的节点组成候选删除节点集合,判断候选删除节点集合中的候选删除节点是否满足:当删除候选删除节点及其相连的所有边后,图的连通分量增加,若是,则将候选删除节点作为割点从候选删除节点集合中移除,最终得到删除节点集合;从代码属性图中去掉删除节点集合中的节点以及与节点相连的边,得到代码属性压缩图。
[0006]本专利技术的进一步技术方案为:计算基于前K跳邻居的节点邻域信息增益,其中节点的邻域信息增益具体表达式为:
其中,、v
j
表示节点,表示节点的特征向量,是节点的跳邻居集合,,表示转移矩阵,表示代码属性图度矩阵D移除对角线元素后的k次方,表示代码属性图邻接矩阵A的k次方,邻接矩阵A中第行j列的值表示在节点和节点v
j
之间长度为k的路径数量。
[0007]本专利技术的进一步技术方案为:对节点邻域信息增益进行局部归一化处理,具体表达式为:其中,N()表示节点的单跳邻居集合,表示单跳节点对之间转移概率的转移矩阵,表示节点v
j
的邻域信息增益。
[0008]本专利技术的进一步技术方案为:将归一化处理后的节点邻域信息增益低的节点组成候选删除节点集合,具体步骤为:将归一化处理后的节点邻域信息增益按照升序排列;选出序列中前的节点作为候选删除节点,组成候选删除节点集合,其中表示原代码属性图的节点数目,表示压缩比例。
[0009]本专利技术的第二方面,提供了一种用于源代码漏洞检测的代码属性图压缩装置,所述装置包括:节点邻域信息增益获取模块,用于根据代码属性图节点计算基于前K跳邻居的节点邻域信息增益;归一化处理模块,用于对节点邻域信息增益进行局部归一化处理;删除节点集合获取模块,用于将归一化处理后的节点邻域信息增益低的节点组成候选删除节点集合,判断候选删除节点集合中的候选删除节点是否满足:当删除候选删除节点及其相连的所有边后,图的连通分量增加,若是,则将候选删除节点作为割点从候选删除节点集合中移除,最终得到删除节点集合;代码属性压缩图获取模块,用于从代码属性图中去掉删除节点集合中的节点以及与节点相连的边,得到代码属性压缩图。
[0010]本专利技术的第三方面,提供了一种用于源代码漏洞检测的代码属性图压缩装置,包括:处理器;以及存储器,其中,所述存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行上述用于源代码漏洞检测的代码属性图压缩方法。
[0011]本专利技术的第四方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行上述用于源代码漏洞检测的代码属性图压缩方法。
[0012]本专利技术提供的一种用于源代码漏洞检测的代码属性图压缩方法、装置及计算机存储介质,代码属性图压缩方法通过计算代码属性图中各节点的重要性,并按比例选择重要的节点构建压缩图,将压缩后的代码属性图输入到GNN模型中学习向量表示以用于判断代码中是否存在漏洞。在尽可能保持原代码属性图的节点属性和结构特征的情况下降低其复
杂度,从而提高后续模型训练的时空效率。最终得到的有益效果是:代码属性图压缩方法通过计算节点的前K跳邻居增益信息,选择增益信息低的节点进行删除同时保证压缩图的连通性,可以在尽可能保持原代码属性图的节点属性和结构特征的情况下降低其复杂度,从而提高后续模型训练的时空效率。
附图说明
[0013]图1是本专利技术实施例的用于源代码漏洞检测的代码属性图压缩方法流程图;图2是本专利技术实施例的用于源代码漏洞检测的代码属性图压缩装置结构示意图;图3是本专利技术实施例中的计算机设备的架构图。
具体实施方式
[0014]为进一步对本专利技术的技术方案作详细说明,本实施例在以本专利技术技术方案为前提下进行实施,给出了详细的实施方式和具体的步骤。
[0015]实施例1一种用于源代码漏洞检测的代码属性图压缩方法,具体步骤如图1所示,包括:S01、根据代码属性图节点计算基于前K跳邻居的节点邻域信息增益;具体实现过程为:令代码属性图,其中表示节点集合,表示节点的特征矩阵,表示代码属性图中节点的邻接矩阵。代码属性图节点类型集合为,不同类型节点的特征向量处于不同的特征空间,为方便衡量节点特征之间的距离和计算重要性,本专利技术先将节点的特征进行特征变换,转换到同一特征空间进行差异化衡量,转换公式如下:其中,表示节点类型为的节点特征矩阵,为类型节点的特征变换矩阵。各个类型节点变换之后的特征矩阵在同一个特征空间进行重要性衡量,为:。
[0016]本专利技术提出的节点重要性衡量指标基于如下:如果一个节点可被周围节点信息较好的预测,那么移除该节点后不会损失太多的信息。本专利技术采用邻域信息增益指标来指导节点的筛选,该指标被定义为中心节点信息与周围邻居节点之间的曼哈顿距离,即当选择一个预测函数之后,邻域信息增益准则可被公式化为:其中,是范数,目的是防止某个维度具有很大的方差从而决定整个增益的计算,表示待计算的中心节点的特征向量,是预测函数,表示节点的前K跳邻居节点的带权聚合信息,:
其中,是节点的跳邻居集合,K表示最大的k跳取值,是的特征向量,是代码属性图邻接矩阵A的k次方,第行j列的值表示在节点和之间长度为k的路径数量。是移除对角元素之后的矩阵,表示代码属性图度矩阵D移除对角线元素后的k次方。表示经过跳的节点对之间转移概率的转移矩阵,作为预测函数中对各跳邻居信息聚合本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于源代码漏洞检测的代码属性图压缩方法,其特征在于,所述方法包括如下步骤:根据代码属性图节点计算基于前K跳邻居的节点邻域信息增益;对节点邻域信息增益进行局部归一化处理;选择归一化处理后的节点邻域信息增益低的节点组成候选删除节点集合,判断候选删除节点集合中的候选删除节点是否满足:当删除候选删除节点及其相连的所有边后,图的连通分量增加,若是,则将候选删除节点作为割点从候选删除节点集合中移除,最终得到删除节点集合;从代码属性图中去掉删除节点集合中的节点以及与节点相连的边,得到代码属性压缩图。2.根据权利要求1所述的代码属性图压缩方法,其特征在于,计算基于前K跳邻居的节点邻域信息增益,其中节点的邻域信息增益具体表达式为:其中, 、v
j
表示节点,表示节点 的特征向量, 是节点 的 k跳邻居集合, ,表示转移矩阵,表示代码属性图度矩阵D移除对角线元素后的k次方,表示代码属性图邻接矩阵A的k次方,邻接矩阵A中第 i行j列的值表示在节点 和节点v
j
之间长度为k的路径数量。3.根据权利要求2所述的代码属性图压缩方法,其特征在于,对节点邻域信息增益进行局部归一化处理,具体表达式为:其中,表示节点的单跳邻居集合, 表示单跳节点对之间转移概率的转移矩阵,表示节点v
j
的邻域信息增益。4.根据权利要求2所述的代码属性图压缩方法,其特征在于,将归一化处理后的节点邻域信息增益低的节点...

【专利技术属性】
技术研发人员:高翠芸陈玉盼王轩刘川意廖清韩培义陈雨佳
申请(专利权)人:哈尔滨工业大学深圳哈尔滨工业大学深圳科技创新研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1