System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机安全领域,尤其涉及一种通过像素行过采样增强的代码图像漏洞检测方法。
技术介绍
1、随着计算机网络的普及和互联网的高速发展,信息安全问题日益突出。源代码中的漏洞成为网络安全的主要威胁之一,恶意黑客和网络犯罪分子利用这些漏洞发起攻击,可能导致信息泄露、经济损失甚至国家安全隐患。因此,漏洞检测作为软件开发和网络安全的重要环节,其技术研究具有重要意义。
2、近年来,软件规模和复杂性的持续增长导致代码结构愈加复杂,漏洞特征更隐蔽且普遍化,传统的人工检测和基于规则的静态分析工具(如checkmarx、flawfinder和rats)已无法满足快速变化的安全需求。这些方法严重依赖于专家知识库,覆盖率有限且无法高效检测未知漏洞。基于特征工程的机器学习方法,如代码扰动、代码复杂度和开发者活动分析等,尽管在一定程度上缓解了漏洞检测的难度,但其特征提取过程复杂且效果受限于特定场景。
3、深度学习技术的兴起为漏洞检测提供了新的可能性。研究人员提出了多种方法,将程序表示形式与深度学习模型相结合,根据表示方式可分为以下三类:基于序列、基于语法树和基于图的程序表示方法。
4、基于序列的方法:通过将代码表示为特定序列,利用模型如lstm和gru捕获程序语义特征。例如,vuldeepecker通过程序切片生成代码片段向量,并采用双向长短时记忆网络(blstm)进行漏洞检测;sysevr进一步结合语义分析和切片技术优化特征提取效果。
5、基于语法树的方法:利用代码的语法结构构建模型,例如trans
6、基于图的方法:采用图结构表示程序代码,利用图神经网络(gnn)进行特征提取。例如,devign通过图嵌入结合卷积操作对代码特征进行学习;grace利用大语言模型和图结构信息增强上下文学习能力;vulcnn将函数代码转化为图像形式,实现大规模漏洞扫描。
7、尽管上述方法在一定程度上提升了漏洞检测的性能,但仍存在关键问题:
8、1.信息丢失问题:卷积池化过程中重要特征可能被抹除,导致检测精度下降。
9、2.模型复杂度和计算开销高:如devign和grace,由于需要处理复杂图结构或大语言模型嵌入,难以适应大规模代码检测。
10、针对上述现有技术存在的问题,本专利技术提出了一种通过像素行过采样增强的代码图像漏洞检测方法。利用控制流程图生成代码属性图,将cfg节点间代码进行拼接以合成新样本行,通过像素行过采样方法增强代码图像的连续性。相比传统方法,本专利技术通过高质量三通道图像生成解决了卷积神经网络中关键信息丢失的问题,并在减少时间开销的同时显著提升了检测性能,具有广泛的应用前景和技术价值。
技术实现思路
1、有鉴于此,本专利技术提供了一种通过像素行过采样增强的代码图像漏洞检测方法。
2、为解决上述技术问题,本专利技术采取了如下技术方案:
3、一种通过像素行过采样增强的代码图像漏洞检测方法,包括以下步骤:
4、步骤1、提取函数样本并进行预处理;
5、步骤2、生成代码属性图以表示函数样本,并基于节点关系生成代码映射图;
6、步骤3、构建过采样代码列表及对应的中心性指标列表;
7、步骤4、生成包含三通道的代码图像;
8、步骤5、进行数据集划分;
9、步骤6、将生成的三通道代码图像输入卷积神经网络进行训练,得到漏洞检测模型。
10、优选的,所述步骤1包括以下步骤:
11、步骤1-1、从输入的源程序文件中使用自定义正则表达式提取函数,定位每个函数的起始位置,生成md5编号文件名,并根据函数名标注正样本和负样本;
12、步骤1-2、对提取的函数进行归一化处理,包括去除注释、统一函数命名以及统一变量命名。
13、优选的,所述步骤2包括以下步骤:
14、步骤2-1、利用joern工具生成代码属性图,若图中存在多个节点对应相同的源代码行号,则对这些节点进行合并,并以dot格式存储;
15、步骤2-2、根据代码属性图中同一行代码的抽象语法分析结果生成代码映射图,以代码行为单位构建节点图;
16、步骤2-3、在代码映射图中计算并保存每个节点的度中心性、katz中心性和接近中心性指标。
17、优选的,所述步骤2-1中,joern工具通过解析函数代码的控制流、数据流及抽象语法树,构建一个包含节点和边的图数据结构,节点表示代码中的函数元素,边表示代码元素之间的关系。
18、优选的,所述步骤2-3中,每个节点的度中心性、katz中心性和接近中心性指标的计算公式分别为:
19、度中心性:
20、
21、其中,deg(v)是节点v的度(即与v相连的边的数量),n是图中的总节点数;
22、katz中心性:
23、
24、其中,β是衰减因子,控制远离节点的影响,n(v)是节点v的邻居节点集合,aij是邻接矩阵中的元素,表示节点i和节点j之间是否有连接。
25、接近中心性:
26、
27、其中,d(v,i)是节点v到节点i的最短路径距离,∑id(v,i)是节点v到所有其他节点的距离之和。
28、优选的,所述步骤3包括以下步骤:
29、步骤3-1、通过分析代码映射图,识别出相连接的控制流程节点,提取出与控制流程节点相关的源代码行,拼接存在控制流边的两个节点的代码行内容,拼接后的代码行将被插入到原始的代码映射图中,生成新的代码行并插入源代码中,构建过采样代码列表;
30、步骤3-2、提取与每个控制流程节点相关的中心性指标,对新增代码行对应的中心性指标进行加权平均扩展,生成过采样中心性指标列表。
31、优选的,所述步骤4包括以下步骤:
32、步骤4-1、将过采样代码列表中的每一行代码通过sent2vec生成1×128维向量;
33、步骤4-2、将向量分别乘以过采样中心性指标列表中的度中心性、katz中心性和接近中心性,生成三种独立的加权向量,分别存储到三通道的像素行中;
34、步骤4-3、重复上述操作直至处理完成,生成包含三通道的高质量代码图像。
35、优选的,所述步骤5具体包括:进行数据集划分,采用5折交叉验证k=5,将数据集分为5个互斥子集,其中每次选择4个子集用于训练,1个子集用于测试。
36、优选的,所述步骤6包括以下步骤:
37、步骤6-1、将生成的三通道代码图像输入卷积神经网络模型;
38、步骤6-2、利用训练数据对卷积神经网络进行训练;
39、步骤6-3、利用训练好的模型对代码样本进行漏洞检测,并输出检测结果。
40、优选的,所述步骤6-2中本文档来自技高网...
【技术保护点】
1.一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤1包括以下步骤:
3.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2包括以下步骤:
4.根据权利要求3所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2-1中,Joern工具通过解析函数代码的控制流、数据流及抽象语法树,构建一个包含节点和边的图数据结构,节点表示代码中的函数元素,边表示代码元素之间的关系。
5.根据权利要求3所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2-3中,每个节点的度中心性、Katz中心性和接近中心性指标的计算公式分别为:
6.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤3包括以下步骤:
7.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步
8.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤5具体包括:进行数据集划分,采用5折交叉验证k=5,将数据集分为5个互斥子集,其中每次选择4个子集用于训练,1个子集用于测试。
9.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤6包括以下步骤:
10.根据权利要求9所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤6-2中,各项训练参数如表1所示,并通过惩罚错误分类来调整模型参数;
...【技术特征摘要】
1.一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤1包括以下步骤:
3.根据权利要求1所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2包括以下步骤:
4.根据权利要求3所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2-1中,joern工具通过解析函数代码的控制流、数据流及抽象语法树,构建一个包含节点和边的图数据结构,节点表示代码中的函数元素,边表示代码元素之间的关系。
5.根据权利要求3所述的一种通过像素行过采样增强的代码图像漏洞检测方法,其特征在于,所述步骤2-3中,每个节点的度中心性、katz中心性和接近中心性指标的计算公式分别为:
【专利技术属性】
技术研发人员:彭涛,桂凌,孙毅,苗佳哲,彭德朗,汤俊伟,
申请(专利权)人:武汉纺织大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。