买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:北京工业大学
摘要:本发明公开了一种基于预训练和补丁排序技术的智能合约漏洞修复方法,实现了对智能合约漏洞函数的自动修复。该方法通过困惑度对补丁进行排序,过滤掉不能编译的补丁;并基于预训练技术构建智能合约漏洞自动化修复框架,通过从智能合约函数中学习语法规则,将漏洞修复问题转化为文本任务,达到了智能合约漏洞修复的目的。实验结果表明该方法能准确地对智能合约整数溢出、可重入、以太泄露等漏洞进行自动修复,提高了智能合约漏洞修复效率,有效地保障了智能合约及区块链应用系统的安全。
主权项:1.一种基于预训练和补丁排序技术的智能合约漏洞修复方法,其特征在于,该方法的实施过程如下:首先,使用智能合约函数对编程语言模型进行预训练;然后,使用智能合约漏洞修复数据集进行微调,获得训练模型;最后,使用训练模型,通过集束搜索生成补丁并使用漏洞检测工具验证;具体步骤如下:1预训练阶段:使用函数级预训练方法,对标识符、关键字、参数进行掩码;①准备标签Y;将输入智能合约函数X使用BPE算法进行分词,然后通过词嵌入技术获得向量层,将单词或短语映射到高维空间中的向量表示,将此向量赋值给Y;②选取掩码词;仅对每个标识符、关键字、参数进行掩码,掩码可能性设为15%,记为Wmasked,剩余部分为X';③掩码操作;将Wmasked中80%的内容随机替换为词表中任意一个单词,10%的内容替换为特殊tokenmask,其余10%删除;④计算掩码部分的损失; 其中,Lreplace表示替换部分的损失;Lmask表示特殊token的损失;Ldelete表示删除部分的损失;⑤返回所有损失; 其中,LX'表示X中剩余token的损失;2微调阶段:1智能合约数据预处理:对于给定的智能合约数据集,首先去除智能合约源代码中的注释,包括单行注释和多行注释;然后从漏洞合约中提取漏洞相关信息作为源代码的序列表示,补丁合约中的正确函数作为目标代码的序列表示;最后,使用BPE分词器进行字词切分,分别表示为SourceTokens、TargetTokens;2构建模型:模型的主体由预训练模型Natgen构成;核心为N层Transformer编码器栈和解码器栈;①模型输入:为SourceTokens序列和TargetTokens序列中的每个词嵌入向量,并将其组合成矩阵H0和T0H0=EmbeddingSourceTokens3T0=EmbeddingTargetTokens4其中,Embedding表示word_embeddings方法;②提取特征:获取H0和T0,经过N层编码器和解码器被转化为TM;编码栈:Hi=EncoderBlockiHi-15其中,EncoderBlocki表示第i个编码块,i=1,2,…,N;每个编码器的输出表示为:EncoderBlockiHi-1=LNMultiAttnHi-1+Hi-1+LNFFNHi-16其中MultiAttn指的是包含M个head的多头注意力机制;LN表示的是正则化层,FFN表示的是前向反馈网络;多头注意力机制的计算方式如下:Qr=Hi-1·WrQ,Kr=Hi-1·WrK,Vr=Hi-1WrV7 为线性映射矩阵,Qr、Kr、Vr为查询query、键值key、值value向量;T表示矩阵的转置;headr为每个注意力头的输出,u表示注意力头的数量;为多头注意力层的输出;解码栈:Tm=DecoderBlockmHN,Tm-1,m∈[1,M]10其中,DecoderBlockm内部可以表示为:DecoderBlockmHN,Tm-1=LNMultiAttnHN,HN,MaskMultiAttnTm-1+Tm-1+LNFFNTm-111其中,MaskMultiAttn表示掩码多头自注意力机制方法;③计算每个时间步的输出:将提取得到的特征向量TM作为多层感知器的输入,并对结果使用softmax进行规范化: 其中,x0表示初始输入,表示第n层第i个神经元的输出;wi,表示各神经元的权重;b,bk表示偏置;tanh表示双曲正切激活函数,g表示softmax激活函数;Y表示经过softmax的概率输出;3模型训练:按照上文所述构建基于预训练技术的智能合约漏洞修复模型,并设定相应的模型参数,进行模型的训练;3修复阶段:1使用集束搜索生成多个补丁,具体步骤如下:①初始化;从起始状态开始,生成第一个词或符号,并将其加入到候选序列列表中;②扩展候选序列;对于每个候选序列,根据模型预测的概率分布,生成下一个词或符号,并将生成的词与原序列组合成新的候选序列;最终,本步骤会产生若干个新的候选序列;③剪枝;在生成新的候选序列后,根据一个预先设定的参数,保留得分最高的一部分候选序列,丢弃其他的候选序列;参数称为集束大小beamsize;重复步骤②和③:重复执行新候选序列生成和剪枝操作,直到满足停止条件为止,如生成了指定长度的序列或者达到了指定的生成数量等;步骤④:选择最终结果;在搜索结束后,从所有生成的候选序列中选择得分最高的作为最终的输出结果;2优选补丁:为了从候选补丁中选择最优补丁用于修复,通过计算每个补丁的困惑度为其排序;困惑度越低,说明文本质量越高,根据其计算公式,困惑度与产生的句子长度成正比;综合考虑修复长度问题,对过短的句子进行过滤处理,困惑度公式如下: 其中:N代表补丁中单词的总数;Pwi|wi-1是模型在给定前9-1个单词的情况下,预测第9个单词的概率。
全文数据:
权利要求:
百度查询: 北京工业大学 一种基于预训练和补丁排序技术的智能合约漏洞修复方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。