System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种面向预训练代码模型的防御方法及系统技术方案_技高网
当前位置: 首页 > 专利查询>扬州大学专利>正文

一种面向预训练代码模型的防御方法及系统技术方案

技术编号:40782782 阅读:3 留言:0更新日期:2024-03-28 19:15
本发明专利技术公开了一种面向预训练代码模型的防御方法及系统。该防御方法包括以下步骤:S1、获取并预处理代码数据集,生成对抗代码样本。S2、对对抗代码样本进行数据增强,得到训练集。S3、获取预训练模型,所述预训练模型包括掩码语言模型,基于所述训练集和预训练模型生成异常检测模型。S4、获取待检测代码文件,基于异常检测模型对待检测代码文件进行检测,识别出具有对抗性的代码文件的异常变量名。S5、基于掩码语言模型将所述异常变量名替换并修复,输出防御修复代码文件。防御系统包括数据获取模块、数据增强模块、异常检测模型生成模块、异常变量名提取模块、代码文件替换修复模块。本发明专利技术具有考虑静态分析、准确性高、速度快的特点。

【技术实现步骤摘要】

本专利技术涉及软件安全领域,具体涉及一种面向预训练代码模型的防御方法及系统


技术介绍

1、预训练的语言模型在解决基于代码的软件工程任务,如代码缺陷检测、代码作者归属,取得了显著的成功。但语言模型的安全可靠是一个不可忽视的重要问题,现有的预训练语言模型主要用于代码片段,它们通常具有很高的灵活性和多样性,这使得模型的健壮性更加重要。鲁棒性常被用作衡量预训练语言模型是否安全可靠的一个重要的质量指标。而检测鲁棒性高低则常通过对抗性攻击与防御方法。当输入的代码片段受到扰动或者攻击时,鲁棒性高的预训练语言模型能够做出一致的预测结果。

2、在一个恶意软件检测系统中,自然发生的或有意发生的变化可能会欺骗和绕过模型检测器,将有缺陷的代码发送到下游的处理模块。这种非鲁棒性对整个系统都是致命的。在对抗性攻击与防御方法中,对抗性攻击揭露了预训练语言模型进行下游任务时分析处理代码时的缺陷,后续针对此对抗性攻击的防御手段则能够暴露出对抗性攻击,指导模型避开攻击,更有效的进行下游任务工作,提高了鲁棒性。然而由于代码数据的离散性,使得预训练代码模型学习代码的连续性表示具有挑战性,尤其是代码中的标识符、语法结构等元素通常存在大量的离散性和复杂性。因此对于标识符和语法结构的攻击手段能够揭露模型的鲁棒性不足的问题。

3、对抗性训练是一种让模型在训练过程中暴露于各种对抗性攻击下,以提高其鲁棒性的技术。这种方法通过引入对抗性样本来迫使模型更好地理解和泛化数据,从而增加了模型对潜在威胁的抵抗能力。目前已有一些使用动态的对抗性训练来提高预训练语言模型针对于对抗性攻击的鲁棒性。在文献《预训练代码模型的自然攻击》中采用贪心攻击和遗传攻击相结合的方法。考虑标识符重命名规则,并使用自然性和模型预测变化来指导生成自然语义的替代词替换被攻击的代码段中的变量名。将这些生成的对抗性示例增强到原始训练集中,形成对抗性训练集。在对抗训练集上微调受害者模型并提高受害者模型对于对抗攻击的的鲁棒性。但以上方法存在弊端。首先,在再训练的过程中,缺少相关静态的防御手段。其次,对抗性训练直接使用vunk替换所有变量名,无法识别原始受害者模型未能成功预测的对抗性例子、缺少有效的手段来帮助预训练语言模型恢复对抗性的例子,使得针对对抗性攻击的防御工作难以保障模型的性能。最后,基于对抗攻击的对抗训练方法要经过在训练和微调两个阶段,较为消耗时间,无法实时提高模型的鲁棒性。


技术实现思路

1、专利技术目的:本专利技术目的是提供一种考虑静态分析、准确性高、速度快的面向预训练代码模型的防御方法及系统。

2、技术方案:本专利技术所述的面向预训练代码模型的防御方法,包括以下步骤:

3、s1、获取代码数据集,所述代码数据集包括若干个代码文件,预处理所述代码数据集,生成对抗代码样本;

4、s2、对所述对抗代码样本进行数据增强,得到训练集;

5、s3、获取预训练模型,所述预训练模型包括掩码语言模型,基于所述训练集和预训练模型生成异常检测模型;

6、s4、获取待检测代码文件,基于所述异常检测模型对所述待检测代码文件进行检测,识别出具有对抗性的代码文件的异常变量名;

7、s5、基于所述掩码语言模型将所述异常变量名替换并修复所述具有对抗性的代码文件,输出防御修复代码文件。

8、进一步的,步骤s1中,所述预处理过程包括以下步骤:

9、s11、获取下游任务模型,所述下游任务模型中设有若干个下游任务;将所述代码数据集按照所述下游任务对应的代码文件形式分类。

10、s12、将分类后的代码数据集输入所述下游任务模型,由代码文件对应的下游任务进行识别,将能够被识别的代码文件输出为干净代码样本。

11、s13、将所述干净代码样本再次输入所述下游任务模型,并采用变量名替换攻击方法攻击所述下游任务模型,攻击后输出对抗代码样本,所述对抗代码样本包括若干个对抗代码文件,所述对抗代码文件包括至少一个变量名。

12、进一步的,所述下游任务包括缺陷检测任务、克隆检测任务、代码作者归属任务;所述缺陷检测任务对应的代码文件形式包括开源c语言项目;所述克隆检测任务对应的代码文件形式包括java项目;所述代码作者归属任务对应的代码文件形式包括python文件。

13、进一步的,所述变量名替换攻击方法包括alert方法。

14、进一步的,步骤s2中,采用随机扰动和mixcode方法进行所述数据增强,包括以下步骤:

15、s21、随机扰动:提取并随机替换所述对抗代码样本中的变量名,并添加无意义的变量名,形成扰动数据。

16、s22、数据筛选:使用所述下游任务模型验证所述扰动数据,并将未通过验证的扰动数据与所述对抗代码样本合并,形成对抗代码增强样本。

17、s23、数据混合:基于mixcode方法将干净代码样本与对抗代码增强样本随机混合,形成训练集,所述训练集包括若干个增强代码文件。

18、进一步的,步骤s23中,混合过程如下:

19、

20、

21、式中,x为代码通过模型生成的输入特征向量;y为输入特征向量对应的输出标签的独热编码向量;xi为第i个代码数据的特征向量;yi为第i个代码数据的特征向量对应的标签的独热编码向量;为混合第i、第j个代码数据的特征向量生成后的代码特征向量;为混合第i、第j个代码特征向量对应标签的独热编码向量生成后的标签的独热编码向量;λ为输入的代码样本对的混合策略参数。

22、进一步的,步骤s3中,训练异常检测模型具体过程包括:为所述增强代码文件分配标签,并基于预训练模型提取增强代码文件对应的特征表示;基于所述标签和特征表示训练生成异常检测模型。

23、进一步的,步骤s4中,包括以下过程:

24、s41、基于所述异常检测模型识别所述待检测代码文件中具有对抗性的代码文件。

25、s42、基于离群值检测算法,筛选所述具有对抗性的代码文件中的异常变量名,将异常变量名组成异常值集合。

26、进一步的,步骤s5中,包括以下过程:

27、s51、按照top-k规则将所述异常值集合中的异常变量名排序。

28、s52、按照所述排序,在掩码语言模型中基于贪心算法依次生成候选变量名。

29、s53、基于离群值检测算法对所述候选变量名进行筛选,并按照top-k规则排序,依次替换异常变量名,并提取替换后具有对抗性的代码文件的特征表示。

30、s54、基于所述异常检测模型根据替换后的所述特征表示和候选变量名,输出防御修复代码文件。

31、技术方案:本专利技术所述的一种面向预训练代码模型的防御系统,包括:

32、数据获取模块,用以获取代码数据集,所述代码数据集包括若干个代码文件,预处理所述代码数据集,生成对抗代码样本。

33、数据增强模块,用以对所述对抗代码样本进行数据增强,得本文档来自技高网...

【技术保护点】

1.一种面向预训练代码模型的防御方法,其特征在于,所述方法包括以下步骤:

2.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤S1中,所述预处理过程包括以下步骤:

3.根据权利要求2所述的面向预训练代码模型的防御方法,其特征在于,所述下游任务包括缺陷检测任务、克隆检测任务、代码作者归属任务;所述缺陷检测任务对应的代码文件形式包括开源C语言项目;所述克隆检测任务对应的代码文件形式包括JAVA项目;所述代码作者归属任务对应的代码文件形式包括Python文件。

4.根据权利要求2所述的面向预训练代码模型的防御方法,其特征在于,所述变量名替换攻击方法包括ALERT方法。

5.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤S2中,采用随机扰动和MIXCODE方法进行所述数据增强,包括以下步骤:

6.根据权利要求5所述的面向预训练代码模型的防御方法,其特征在于,步骤S23中,混合过程如下:

7.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤S3中,训练异常检测模型具体过程包括:为所述增强代码文件分配标签,并基于预训练模型提取增强代码文件对应的特征表示;基于所述标签和特征表示训练生成异常检测模型。

8.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤S4中,包括以下过程:

9.根据权利要求8所述的面向预训练代码模型的防御方法,其特征在于,步骤S5中,包括以下过程:

10.一种面向预训练代码模型的防御系统,其特征在于,所述防御系统包括:

...

【技术特征摘要】

1.一种面向预训练代码模型的防御方法,其特征在于,所述方法包括以下步骤:

2.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤s1中,所述预处理过程包括以下步骤:

3.根据权利要求2所述的面向预训练代码模型的防御方法,其特征在于,所述下游任务包括缺陷检测任务、克隆检测任务、代码作者归属任务;所述缺陷检测任务对应的代码文件形式包括开源c语言项目;所述克隆检测任务对应的代码文件形式包括java项目;所述代码作者归属任务对应的代码文件形式包括python文件。

4.根据权利要求2所述的面向预训练代码模型的防御方法,其特征在于,所述变量名替换攻击方法包括alert方法。

5.根据权利要求1所述的面向预训练代码模型的防御方法,其特征在于,步骤s2中...

【专利技术属性】
技术研发人员:薄莉莉胡宇飞孙小兵刘湘月陈林华
申请(专利权)人:扬州大学
类型:发明
国别省市:

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

1