System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及信息安全,尤其涉及一种源代码的漏洞检测方法、装置、设备及介质。
技术介绍
1、软件漏洞通常是由于有缺陷的安全控制设计或软件规范实施过程中的开发人员错误而引入系统的。这种缺陷和错误在软件生命周期的设计和实现阶段是不可避免的。
2、相关技术中,静态软件分析、漏洞模式库、匹配规则检测等技术,通过扫描源代码,识别潜在的错误或漏洞,经常会有误报的情况。这是由于匹配规则、模式匹配算法等的限制或不完整,以及无法访问的源代码中存在漏洞导致的。同时,静态应用程序安全测试工具难以检测复杂的漏洞,导致高假阴性率。
3、因此,亟需一种源代码的漏洞检测方法,能够自动对源代码进行漏洞检测,提高源代码漏洞的召回率,保护信息安全。
技术实现思路
1、本申请实施例提供一种源代码的漏洞检测方法、装置、设备及介质,用以自动对源代码进行漏洞检测,提高源代码漏洞的召回率,保护信息安全。
2、第一方面,本申请实施例提供一种源代码的漏洞检测方法,所述方法包括:
3、基于待检测源代码生成代码属性图;所述代码属性图的顶点信息表示所述待检测源代码的子代码,所述代码属性图的边信息表示位于边的两端的两个顶点对应的子代码之间的关系;
4、基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的多个特征向量;
5、通过已训练的对比学习模型,对所述待检测源代码的多个特征向量进行聚类,得到所述待检测源代码的预测概率;所述预测概率用于表征
6、基于所述待检测源代码的预测概率和预设概率阈值,确定所述待检测源代码的漏洞检测结果。
7、在一些实施例中,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的多个特征向量,包括:
8、基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的原始特征向量;
9、对所述原始特征向量进行正则化处理,得到所述待检测源代码的多个特征向量。
10、在一些实施例中,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的原始特征向量,包括:
11、针对所述代码属性图的每个顶点,使用编码器对所述顶点的顶点信息进行特征编码,得到所述顶点的特征向量;所述顶点的顶点信息表示所述顶点对应的子代码和所述子代码的类型;
12、基于所述边信息和所述代码属性图的各个顶点的特征向量,进行信息聚合,得到所述待检测源代码的原始特征向量。
13、在一些实施例中,所述基于所述边信息和所述代码属性图的各个顶点的特征向量,进行信息聚合,得到所述待检测源代码的原始特征向量,包括:
14、针对所述代码属性图的每个顶点,分别执行如下操作:
15、根据与所述顶点相连的边的边信息,确定所述顶点对应的至少一个相邻顶点,以及所述至少一个相邻顶点的特征向量;
16、利用门控循环函数,对所述顶点的特征向量和所述至少一个相邻顶点的特征向量进行信息筛选,确定所述顶点的分量;
17、将得到的每个顶点的分量相加,得到所述待检测源代码的原始特征向量。
18、在一些实施例中,所述对所述原始特征向量进行正则化处理,得到所述待检测源代码的多个特征向量,包括:
19、对所述待检测源代码的原始特征向量进行正则化处理n次,得到n个特征向量;所述n个特征向量的类相同且所述n个特征向量与所述原始特征向量的相似度大于相似阈值;其中,每次正则化处理时,随机清空所述已训练的对比学习模型中任一隐藏层的输出。
20、在一些实施例中,所述基于所述待检测源代码的预测概率和预设概率阈值,确定所述待检测源代码的漏洞检测结果,包括:
21、若所述待检测源代码的预测概率大于预设概率阈值,确定所述待检测源代码的漏洞检测结果为所述待检测源代码存在漏洞;
22、若所述待检测源代码的预测概率不大于预设概率阈值,确定所述待检测源代码的漏洞检测结果为所述待检测源代码不存在漏洞。
23、在一些实施例中,通过下列方式训练对比学习模型:
24、获取样本数据集;所述样本数据集中包括多个源代码样本、所述多个源代码样本各自对应的特征向量以及所述多个源代码样本各自对应的标记数据,所述标记数据为所述多个源代码样本各自对应的标签和漏洞检测标签;
25、基于所述样本数据集进行余弦相似度计算,确定所述多个源代码样本各自对应的特征向量之间的相似度;
26、基于所述多个源代码样本各自对应的特征向量之间的相似度,对所述多个源代码样本各自对应的特征向量进行聚类,得到所述多个源代码样本的漏洞检测结果;
27、基于所述多个源代码样本的漏洞检测结果和所述多个源代码样本各自对应的漏洞检测标签,确定损失函数,并基于所述损失函数调整所述对比学习模型的参数,直至达到训练条件,得到所述已训练的对比学习模型。
28、第二方面,本申请实施例提供一种源代码的漏洞检测装置,所述装置包括:
29、转换模块,用于基于待检测源代码生成代码属性图;所述代码属性图的顶点信息表示所述待检测源代码的子代码,所述代码属性图的边信息表示位于边的两端的两个顶点对应的子代码之间的关系;
30、特征提取模块,用于基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的多个特征向量;
31、预测模块,用于通过已训练的对比学习模型,对所述待检测源代码的多个特征向量进行聚类,得到所述待检测源代码的预测概率;所述预测概率用于表征所述待检测源代码存在漏洞的概率;
32、分类模块,用于基于所述待检测源代码的预测概率和预设概率阈值,确定所述待检测源代码的漏洞检测结果。
33、在一些实施例中,所述特征提取模块,具体用于:
34、基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的原始特征向量;
35、对所述原始特征向量进行正则化处理,得到所述待检测源代码的多个特征向量。
36、在一些实施例中,所述特征提取模块,具体用于:
37、针对所述代码属性图的每个顶点,使用编码器对所述顶点的顶点信息进行特征编码,得到所述顶点的特征向量;所述顶点的顶点信息表示所述顶点对应的子代码和所述子代码的类型;
38、基于所述边信息和所述代码属性图的各个顶点的特征向量,进行信息聚合,得到所述待检测源代码的原始特征向量。
39、在一些实施例中,所述特征提取模块,具体用于:
40、针对所述代码属性图的每个顶点,分别执行如下操作:
41、根据与所述顶点相连的边的边信息,确定所述顶点对应的至少一个相邻顶点,以及所述至少一个相邻顶点的特征向量;
42、利用门本文档来自技高网...
【技术保护点】
1.一种源代码的漏洞检测方法,其特征在于,所述方法包括:
2.如权利要求1所述的方法,其特征在于,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的多个特征向量,包括:
3.如权利要求2所述的方法,其特征在于,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的原始特征向量,包括:
4.如权利要求3所述的方法,其特征在于,所述基于所述边信息和所述代码属性图的各个顶点的特征向量,进行信息聚合,得到所述待检测源代码的原始特征向量,包括:
5.如权利要求2所述的方法,其特征在于,所述对所述原始特征向量进行正则化处理,得到所述待检测源代码的多个特征向量,包括:
6.如权利要求1所述的方法,其特征在于,所述基于所述待检测源代码的预测概率和预设概率阈值,确定所述待检测源代码的漏洞检测结果,包括:
7.如权利要求1所述的方法,其特征在于,通过下列方式训练对比学习模型:
8.一种源代码的漏洞检测装置,其特征在于,所述装置包括:
10.一种计算机存储介质,其特征在于,当所述计算机存储介质中的计算机程序由电子设备的处理器执行时,所述电子设备能够执行如权利要求1-7任一所述的方法。
...【技术特征摘要】
1.一种源代码的漏洞检测方法,其特征在于,所述方法包括:
2.如权利要求1所述的方法,其特征在于,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的多个特征向量,包括:
3.如权利要求2所述的方法,其特征在于,所述基于所述顶点信息和所述边信息,对所述待检测源代码进行特征提取,得到所述待检测源代码的原始特征向量,包括:
4.如权利要求3所述的方法,其特征在于,所述基于所述边信息和所述代码属性图的各个顶点的特征向量,进行信息聚合,得到所述待检测源代码的原始特征向量,包括:
5.如权利要求2所述的方法,其特征在于,所述对所述原始特征向量进行正则...
【专利技术属性】
技术研发人员:高思雨,
申请(专利权)人:中国电信股份有限公司技术创新中心,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。