一种基于双视图因果推理的可解释漏洞检测方法及系统

文档序号:37449481发布日期:2024-03-28 18:32阅读:7来源:国知局
一种基于双视图因果推理的可解释漏洞检测方法及系统

本发明涉及软件安全领域,具体涉及一种基于双视图因果推理的可解释漏洞检测方法及系统。


背景技术:

1、软件漏洞会严重降低计算机软件的性能,甚至造成软件在运行时崩溃。因此,如何准确高效地检测出软件中潜在的安全漏洞已成为具有相当挑战性的工作。得益于深度学习在以代码为中心的软件工程任务中的巨大成功,越来越多的基于学习的漏洞检测方法被提出。与严重依赖人工制定漏洞规范的传统方法比,基于深度学习的方法侧重于构建复杂的神经网络模型,从漏洞源代码中自动学习隐含的漏洞模式。然而,由于神经网络模型的黑盒特性,这类方法在实际应用中仍具有较大的局限性。目前已有一些工作使用可解释性技术来解释黑盒漏洞检测模型的决策逻辑,如文献《vulnerability detection with fine-grained interpretations》利用gnnexplainer将目标实例简化为由一组关键语句和程序依赖关系组成的最小pdg子图。然而,这些方法面临着两个主要挑战。首先,这类方法所采用的扰动机制假设删除/保留的代码语句与基本事实一致。然而,最近的研究指出简单代码编辑会轻易改变模型预测,鲁棒性不高。因此,即使做出了正确的预测,检测模型的弱鲁棒性不高也可能导致虚假解释,准确性不高。其次,大多数现有方法都侧重于从事实推理的角度生成解释,即提供输入程序的一个子集,模型对其进行与原始程序相同的预测。然而通过这类方法提取的解释可能不够简洁,涵盖了许多冗余但与模型的预测高度相关的语句,导致仍然需要大量的人力对解释结果进行二次审计,简洁性并不强。


技术实现思路

1、发明目的:本发明目的是提供一种鲁棒性强、准确性高、简洁性强的基于双视图因果推理的可解释漏洞检测方法及系统。

2、技术方案:本发明所述的基于双视图因果推理的可解释漏洞检测方法包括以下步骤:

3、s1、获取代码样本,所述代码样本包括训练样本和待检测样本,将所述训练样本依次经过数据增强、静态分析、构建代码属性图、特征抽取后得到训练数据集;将所述待检测样本依次经过静态分析、构建代码属性图、特征抽取后得到待检测数据集;

4、s2、基于混合对比学习法处理所述训练数据集,建立漏洞检测模型;将所述待检测数据集输入所述漏洞检测模型,输出漏洞代码;

5、s3、对所述漏洞代码进行因果推理,输出漏洞检测解释。

6、进一步的,步骤s1中,所述数据增强包括注入点定位操作、变异算子选择操作、代码转换操作;经过数据增强后,所述训练样本变为无标签的代码语料和有标签的漏洞数据集。

7、进一步的,所述静态分析输出抽象语法树、控制流图、程序依赖图。

8、进一步的,所述代码属性图中包括若干个节点,每个节点对应设有文本信息和类型信息。

9、进一步的,所述特征抽取包括以下步骤:

10、s11、将每一个所述节点的文本信息、类型信息进行向量编码,得到初始节点特征;

11、s12、将所述初始节点特征输入图特征编码器,进行特征更新,得到节点的特征嵌入。

12、进一步的,在所述对比学习法中,通过计算所述无标签的代码语料对应的特征嵌入的无监督对比损失、有标签的漏洞数据集对应的特征嵌入的监督对比损失,并进行损失合并以训练生成漏洞检测模型。

13、进一步的,步骤s3中,具体包括以下步骤:

14、s31、计算事实解释子图、反事实解释子图;

15、s32、基于缩放的约束求解策略处理所述事实解释子图、反事实解释子图,生成最优的解释子图,作为漏洞检测解释。

16、技术方案:本发明所述的基于双视图因果推理的可解释漏洞检测系统包括:

17、代码样本处理模块,用以获取代码样本,所述代码样本包括训练样本和待检测样本,将所述训练样本依次经过数据增强、静态分析、构建代码属性图、特征抽取后得到训练数据集;将所述待检测样本依次经过静态分析、构建代码属性图、特征抽取后得到待检测数据集;

18、输出漏洞代码模块,用以基于混合对比学习法处理所述训练数据集,建立漏洞检测模型;将所述待检测数据集输入所述漏洞检测模型,输出漏洞代码;

19、漏洞解释模块,用以对所述漏洞代码进行因果推理,输出漏洞检测解释。

20、本发明所述的计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述方法的步骤。

21、本发明所述的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法的步骤。

22、有益效果:本发明具有如下显著效果:1、鲁棒性强:通过混合对比学习技术增强漏洞检测模型对主流可解释框架所采用的扰动机制的鲁棒性,避免模型产生虚假解释;2、准确性高、简洁性强:提出结合事实推理和反事实推理的双试图因果推理技术,根据模型的预测结果,简洁且准确地定位被测程序中导致漏洞产生的代码片段,提高漏洞检测的可解释性。



技术特征:

1.一种基于双视图因果推理的可解释漏洞检测方法,其特征在于,所述漏洞检测方法包括以下步骤:

2.根据权利要求1所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,步骤s1中,所述数据增强包括注入点定位操作、变异算子选择操作、代码转换操作;经过数据增强后,所述训练样本变为无标签的代码语料和有标签的漏洞数据集。

3.根据权利要求1所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,所述静态分析输出抽象语法树、控制流图、程序依赖图。

4.根据权利要求2所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,所述代码属性图中包括若干个节点,每个节点对应设有文本信息和类型信息。

5.根据权利要求4所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,所述特征抽取包括以下步骤:

6.根据权利要求5所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,在所述对比学习法中,通过计算所述无标签的代码语料对应的特征嵌入的无监督对比损失、有标签的漏洞数据集对应的特征嵌入的监督对比损失,并进行损失合并以训练生成漏洞检测模型。

7.根据权利要求1所述的基于双视图因果推理的可解释漏洞检测方法,其特征在于,步骤s3中,具体包括以下步骤:

8.一种基于双视图因果推理的可解释漏洞检测系统,其特征在于,包括:

9.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7其中任一项所述方法的步骤。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7其中任一项所述的方法的步骤。


技术总结
本发明公开了一种基于双视图因果推理的可解释漏洞检测方法及系统,所述漏洞检测方法包括以下步骤:S1、获取代码样本,所述代码样本包括训练样本和待检测样本,将所述训练样本依次经过数据增强、静态分析、构建代码属性图、特征抽取后得到训练数据集;将所述待检测样本依次经过静态分析、构建代码属性图、特征抽取后得到待检测数据集;S2、基于混合对比学习法处理所述训练数据集,建立漏洞检测模型;将所述待检测数据集输入所述漏洞检测模型,输出漏洞代码;S3、对所述漏洞代码进行因果推理,输出漏洞检测解释。本发明具有鲁棒性高、准确性高、简洁性强的特点。

技术研发人员:曹思聪,孙小兵,刘维,吴潇雪,薄莉莉,李斌
受保护的技术使用者:扬州大学
技术研发日:
技术公布日:2024/3/27
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1