一种基于预训练模型的多模态二进制相似性漏洞检测方法

    技术2025-07-20  33


    本发明属于网络安全领域,具体为一种基于预训练模型的多模态二进制相似性漏洞检测方法。


    背景技术:

    1、随着各种开源社区的流行,开发人员通常会复用第三方开源代码,但是代码复用为开发带来便利的同时也加剧了克隆漏洞的传播。出于产权保护等因素,厂商通常不会公开源代码,因此研究人员提出了许多二进制代码的漏洞检测方法。例如符号执行、污点分析、模糊测试等技术,这些方法经过不断的发展,如今已广泛应用在漏洞检测领域。但是这些现有的方法仍有其不足之处,例如符号执行的效率受限于其路径空间的搜索、约束求解以及并行处理等问题,污点分析对程序的动态运行覆盖率要求较高,模糊测试的效果与种子的选取与变异策略也有很大的关系。

    2、随着逆向工程相关技术的不断发展,基于二进制代码相似性检测(bcsd)技术也逐渐应用于漏洞检测领域。传统的bcsd是通过提取特征从而比较两段代码之间的相似度,这就导致相关方法的有效性在很大程度上依赖于选定的特征。如今的bcsd更多依赖于深度学习技术,将汇编代码以函数、构建图或构建gadget进行嵌入,在向量空间中计算汇编代码的相似度。受限于不同目标架构编译方法的差异,相同的源代码编译后可能差异较大。目前的方法大多是针对汇编指令进行建模,由于编译器种类、编译优化等级和目标架构等差异,编译后的代码如指令顺序、寄存器分配等信息都会不同,这些差异都会对漏洞检测造成影响,这就需要一种更稳定的方法去表示二进制代码。

    3、并且含有漏洞的代码与其补丁代码有时差异显著,有时也体现在细微之处。对于差异显著的漏洞代码,现有的方法取得了较好的效果,而对于差异较小的补丁代码与漏洞代码,现有的方法往往难以准确识别,呈现出较高的漏报率。当前使用rnn、blstm或预训练的nlp模型进行漏洞检测的方法更加关注代码的语义信息,对于代码的语法、控制流信息关仍注有所欠缺,因此结合代码语义信息和代码结构信息的漏洞检测方法仍需要深入研究。


    技术实现思路

    1、为了克服现有技术的不足,本发明提出一种基于预训练模型的多模态二进制相似性漏洞检测方法,能够缓解编译多样性对漏洞检测的影响,有效降低漏报率。

    2、实现本发明目的的技术方案为:一种基于预训练模型的多模态二进制相似性漏洞检测方法,步骤如下:

    3、步骤1,将二进制文件进行反汇编生成汇编指令,对汇编指令进行反编译得到伪代码;

    4、步骤2,为伪代码生成代码属性图,将代码属性图遍历转换为代码属性图序列;

    5、步骤3,将伪代码与代码属性图序列输入electra-small模型进行预训练,并设置替换词检测、代码属性图边预测与多模态对比学习三个预训练目标;

    6、步骤4,在漏洞检测任务上对预训练的electra-small模型进行调整,利用调整好的electra-small模型进行漏洞检测。

    7、优选地,步骤1将二进制文件进行反汇编生成汇编指令,对汇编指令进行反编译得到伪代码,包括:

    8、将多个开源项目的库文件进行反汇编与反编译得到伪代码,其中每个库都使用gcc和clang两种编译器进行编译,包括x86-64、arm和mips的32位和64位版本以及不同级别的编译优化;

    9、将juliettest suite数据集中的55个cwe类型按照不同目标架构与编译优先级进行编译生成二进制文件,对二进制文件经过反汇编与反编译生成伪代码,最后总共约5万个文件作为模型微调实验数据集。

    10、优选地,步骤2利用joern方法为伪代码生成对应的代码属性图;将代码属性图转换为包括控制结构、数据流向信息的代码属性图序列。

    11、优选地,对electra-small模型进行预训练,当进行代码属性图边预测训练时,输入数据为步骤2中获得的代码属性图序列;当进行替换词检测与多模态对比学习训练时,输入数据为伪代码与代码属性图序列。

    12、优选地,对electra-small模型进行预训练替换词检测的具体方法为:

    13、对于输入的伪代码c=[c1,c2,…cn]和代码属性图序列g=[g1,g2,…gn],使用小型的掩码语言模型进行部分掩码mask,分别对应为mc和mg,具体公式为与其中|c|、|g|分别表示伪代码和代码属性图序列中词的个数,unif表示在取值范围内按照均匀分布随机选若干个数;

    14、使用数据生成器为mc和mg生成预测词,预测结果表示为与数据生成器在将结果输时用ccorrupt与gcorrupt替换标识与具体公式为:

    15、

    16、同时训练一个判别器d,它的输入为包含ccorrupt与gcorrupt的伪代码和代码属性图序列,判别器判断所有输入位置上的词是否是原始的输入,而不是由生成器的预测生成的;

    17、替换词检测任务的损失函数具体为:

    18、

    19、

    20、采用对数损失函数,其中|c|、|g|分别表示伪代码和代码属性图序列中词的个数,yi表示第i个词的真实标签,表示伪代码中判别器预测第i个词为原始词的概率,表示代码属性图序列中判别器预测第i个词为原始词的概率,与表示c、g对应的损失函数值。

    21、优选地,对electra-small模型进行预训练目标代码属性图边预测的具体方法为:

    22、在代码属性图输入序列中选择部分包含边信息的词g*,使用[mask]代替g*,在预训练中要求模型预测[mask]处可能代表的词,预测结果表示为具体公式为:

    23、代码属性图边预测的损失函数为:

    24、

    25、其中,|g*|表示g*的类别数量,yi表示g*在第i个类别的真实标签,表示模型预测为第i个类别的概率,表示损失函数值。

    26、优选地,,对electra-small模型进行预训练目标多模态对比学习的具体方法为:

    27、构造第一类正样本对,具体为:将伪代码视为原始输入,将代码属性图序列视为与之相似的正样本,采用跨批次采样的策略获得正样本与负样本,对于两个批次的训练数据batch1=[x1,x2,…xn],其中xi为原始样本,作为正样本对,将剩余的数据构成大小为2(n-1)的负样本集合

    28、利用transformer编码器将正负样本映射到向量空间,得到正样本对与负样本计算向量的余弦相似度表示样本之间的相似程度;

    29、将伪代码与代码属性图序列交换,将代码属性图序列视为原始输入,将伪代码视为正样本重复上述步骤构造第二类正样本对与负样本

    30、通过对比学习,将原始输入与其不同模态的正样本相似程度最大化,与负样本之间的相似程度最小化,多模态对比学习的损失函数函数具体为:

    31、

    32、

    33、其中exp表示以自然常数e为底的指数函数,表示计算向量vi和的余弦相似度,表示计算向量vi和的余弦相似度,n表示原始样本的个数,2(n-1)表示负样本集合的大小,表示第一类多模态对比学习的损失函数值,表示第二类多模态对比学习的损失函数值,表示两类多模态对比学习损失函数之和。

    34、本发明与现有技术相比,其显著优点为:本发明通过使用伪代码作为研究对象,模型只需要输入伪代码作为训练对象,而不需要输入多种不同架构的汇编指令,便可以缓解跨架构和编译多样性对二进制漏洞检测的影响;并且将伪代码与代码属性图序列进行对比学习,训练模型学习更加全面的特征从而更好地表示代码用于漏洞检测。

    35、下面结合附图对本发明做进一步详细的描述。


    技术特征:

    1.一种基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,步骤如下:

    2.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,步骤1将二进制文件进行反汇编生成汇编指令,对汇编指令进行反编译得到伪代码,包括:

    3.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,步骤2利用joern方法为伪代码生成对应的代码属性图;将代码属性图转换为包括控制结构、数据流向信息的代码属性图序列。

    4.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,对electra-small模型进行预训练,当进行代码属性图边预测训练时,输入数据为步骤2中获得的代码属性图序列;当进行替换词检测与多模态对比学习训练时,输入数据为伪代码与代码属性图序列。

    5.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,对electra-small模型进行预训练替换词检测的具体方法为:

    6.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,对electra-small模型进行预训练目标代码属性图边预测的具体方法为:

    7.根据权利要求1所述的基于预训练模型的多模态二进制相似性漏洞检测方法,其特征在于,对electra-small模型进行预训练目标多模态对比学习的具体方法为:


    技术总结
    本发明提出了一种基于预训练模型的多模态二进制相似性漏洞检测方法。本发明以Electra‑small模型为基础架构,首先将二进制代码反编译为伪代码,并生成对应的代码属性图,接着将代码属性图转换为包含结构信息的序列与伪代码一同输入模型进行预训练;接着本发明为模型设定了三个预训练目标,包括替换词检测、代码属性图边预测与多模态对比学习,使模型在大量数据上学习输入的普遍特征;最后,本发明在漏洞检测任务上对预训练模型进行微调。相对于其他二进制漏洞检测方法,本发明使用伪代码与代码属性图的多模态对比学习检测方法能够缓解编译多样性的影响,且具有更低漏报率。

    技术研发人员:符誉宝,苏铓,况博裕,付安民,朱焱
    受保护的技术使用者:南京理工大学
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-34178.html

    最新回复(0)