基于迁移学习的智能合约漏洞检测方法.pdf
《基于迁移学习的智能合约漏洞检测方法.pdf》由会员分享,可在线阅读,更多相关《基于迁移学习的智能合约漏洞检测方法.pdf(6页珍藏版)》请在咨信网上搜索。
1、第2 6 卷第4期2023年8 月扬州大学学报(自然科学版)Journal of Yangzhou University(Natural Science Edition)Vol.26No.4Aug.2023基于迁移学习的智能合约漏洞检测方法薛佳雷,李斌*,张佳乐,孙小兵,蔡杰(扬州大学信息工程学院,江苏扬州2 2 512 7)摘要:针对智能合约源代码漏洞数据集乏的问题,提出一种基于迁移学习的智能合约漏洞检测方法.首先,从CodeBERT预训练模型中迁移表示传统编程语言的语义特征参数,学习智能合约编程语言Solidity的语义表示;其次,使用长短期记忆网络处理语义向量,加入上下文语义关联;最后,
2、训练智能合约漏洞检测模型,完成智能合约源代码形式的二分类漏洞检测任务.实验结果表明,与基线方法和机器学习方法相比,该方法在数据集匮乏情况下的智能合约漏洞检测准确率更高.关键词:区块链;智能合约;漏洞检测;深度学习;迁移学习中图分类号:TP311.13D0I:10.19411/j.1007-824x.2023.04.005近年来,区块链技术1快速发展,作为区块链核心部分的智能合约2 为交易多方提供了可信的去中心化应用程序,但其存在的漏洞常被用于恶意攻击用户账户,造成巨大的经济损失.现有的智能合约漏洞检测方法主要为传统检测工具和机器学习方法.传统漏洞检测工具包括SmartCheck3I和Secur
3、ifyL4,其中SmartCheck是根据合约语法规则生成源代码的可扩展标记语言(extensiblemarkuplanguage,XM L)解析树作为中间表示,通过查询匹配数据发现漏洞;Securify是通过将代码符号化来分析数据流和控制流信息,根据预定义的安全属性规则进行漏洞检测.基于符号执行的传统漏洞检测方法需要探索所有的可执行路径或分析合约中的依赖关系,耗时较长,且依赖预先定义的专家规则.机器学习方法则是利用神经网络模型自动学习检测工具中无法定义的漏洞特征,进而提高漏洞检测的准确率,已被广泛应用于智能合约漏洞检测.Gao等5 提出了一种基于词嵌人和向量空间的SmartEmbed漏洞检测
4、方法,代码为矩阵向量,通过比较相似度阈值检测漏洞;Zhuang等6 提出将合约代码的函数公式转换为合约图,根据信息传递构造的神经网络作为漏洞检测模型;Wang等7 提出ContractWard方法,从智能合约的操作码中提取二元图特征,利用机器学习算法进行漏洞检测.然而,机器学习过程需要大量的标签数据集,而以太坊平台上开源的智能合约源代码仅占1%8,漏洞数据集十分乏.针对以上问题,本文拟引人迁移学习 的思想,提出一种基于迁移学习的智能合约漏洞检测方法,利用预训练模型对智能合约代码进行表征,以期提高特征提取准确度,在小数据集上获得更好的检测效果.1本文方法1.1总体框架本文提出的基于迁移学习的智能
5、合约漏洞检测模型总体框架如图1所示.预训练阶段,获取CodeBERT10I预训练模型中编码器的训练参数,迁移到漏洞检测模型的编码器中微调阶段,训练收稿日期:2 0 2 2-10-19.*联系人,E-mail:.基金项目:国家自然科学基金资助项目(6 2 2 0 6 2 38,6 19 7 2 335,6 18 7 2 312,6 2 0 0 2 30 9);江苏省自然科学基金资助项目(BK 2 0 2 2 0 56 2);江苏省高等学校自然科学研究面上基金资助项目(2 0 KJB520024);扬州市科技计划资助项目(YZ2021157,YZ2021158).引文格式:薛佳雷,李斌,张佳乐,等
6、基于迁移学习的智能合约漏洞检测方法J.扬州大学学报(自然科学版),2 0 2 3,26(4):25-30.文献标志码:A文章编号:10 0 7-8 2 4X(2023)04-0025-0626智能合约漏洞检测模型,先对智能合约源代码漏洞数据集进行数据预处理,去除中英文注释和空格,转化为代码序列,使用迁移参数后的编码器将智能合约代码序列转化为特征向量;再使用长短期记忆(long short-termmemory,LST M)网络接收预训练模型的输出结果,进一步获取智能合约代码的上下文特征;最后在输出层使用全连接层和Softmax逻辑回归分类函数,输出智能合约漏洞检测结果,采用交叉熵作为损失函数.
7、应用阶段,输人未知漏洞的智能合约源代码,进行漏洞检测并输出漏洞检测结果.1.2智能合约代码特征提取智能合约特定的Solidity语言是一种面向对象的编程语言,与传统编程语言具有相似的编码规定和语法结构,因此可迁移从传统编程语言学习到的知识,例如变量命名规定、代码标记顺序信息和语义表示等,能够更好地利用现有资源.CodeBERT模型使用Java、Py t h o n、Ja v a Sc r i p t、R u b y、PH P和Go等6 种传统编程语言代码进行训练,具备良好的代码特征提取能力.本文通过访问CodeBERT预训练模型的编码器,获取训练参数,提取智能合约代码特征.根据图2 所示的Tr
8、ansformer编码器结构,利用多头自注意力层捕捉输入信息的重要部分,帮助漏洞检测模型重点关注智能合约代码的语义表示.8 个注意力头部进行并行特征分析,除训练权重和参数外,其余结构完全一致.扬州大学学报(自然科学版)CodeBERT预训练阶段编码器微调阶段智能合约源代码未知漏洞的应用阶段智能合约源代码图1模型总体框架Fig.1Overall framework of the model8个注意力头部第2 6 卷1编码器LSTM训练后模型输出层1漏洞检测0漏洞检测0输人位置编码自注意力层嵌人矩阵隐藏层状态多头自注残差连接意力层和归一化前馈神经网络层残差连接和归一化图2 Transformer中
9、的编码器结构Fig.2 Structure of Transformer encoder将智能合约代码序列输人模型,对输人单词序列进行词嵌入操作,转化为词向量表示,即词嵌人矩阵,两个维度分别代表词嵌人维度和序列长度.为了能捕捉序列中单词顺序信息,引入位置编 p.2:=sin(10-8/s),码表示单词所在位置(p.2+1=cos(10-8/s),列索引.单个注意力头部特征提取过程如下:首先,词向量矩阵流入编码器Self-Attention层,利用缩放点积计算每个词向量的关注权重;其次,给定一个输入词向量,表示每个标记的嵌人,创建查询向量q,关键向量k和值向量v;最后,使用第i个查询向量q;和句
10、中每个单词的关键向量k;,通过点积计算关注度得分i=qik;/Va,利用Softmax函数得到归一化分数;=So f t m a x(i)=exp(:)/=,e x p(:).为关注语义相关单词,弱化不相关单词,将值向量v;乘以归一化分数,并求其中d为模型输出维度,i为映射维度索引,s为单词序第4期取权值之和z;=,viSelf-Attention层的输出连接到参数矩阵E,线性层投影A=concat(Attention(q:,k;,v))E.利用Mult-headedAttention多头注意力机制,对每个注意力头部各执行8 次不同的权重矩阵计算得到矩阵Z,拼接所有注意力头部,并乘以附加权重矩
11、阵E。,得到融合所有注意力头部信息的矩阵Z=E。,Z,由此将输人的向量矩阵转换为一组由关键向量k和值向量v组合的特征向量,包含智能合约代码的语义表示.最终,特征向量流向前馈神经网络层.1.3基于LSTM网络的特征向量处理采用LSTM网络进行特征向量处理,获取长距离依赖的序列特征表示.LSTM单元结构如图3所示,包含遗忘门、输入门和输出门3种门结构,利用tanh激活函数控制信息交互,并维持和控制单元状态.首先,前馈神经网络层接收的特征向量进人遗忘门,筛选t一1时刻的隐藏状态at-1和t时刻的输人信息流,的重要信息,使用Sigmoid激活函数o()得到遗忘门信息f,=(W,a t-1,十b,),其
12、中W,和bf分别为遗忘门的权值矩阵和偏置向量;其次,通过输人门确定细胞状态信息,利用Sigmoid激活函数确定更新信息i=o(W,Lat-1,a,+b.),同时使用tanh激活函数得到候选记忆细胞c,=tanh(W.Lat-1,,十b.),其中W,和b;分别为输入门的权值矩阵和偏置向量,W。和b。分别为输人单元状态的权值矩阵和偏置向量;再次,将上述过程所得的细胞状态更新的准备信息及遗忘门信息进行拼接整合,得到新的细胞状态c,=f.ct-1十ic,;最后,利用Sigmoid激活函数确定细胞状态的输出信息o,=o(W。La t-1,,十b。),与tanh激活函数放缩后的细胞状态相乘,输出当前状态信
13、息a,=o,tanh(c,),其中W。和b。分别为输出门的权值矩阵和偏置向量.完成漏洞模型特征学习后,得到智能合约代码序列的特征向量表示.在输出层使用全连接层F()和Softmax激活函数,得到漏洞检测结果R=Softmax(F()),若结果为1表示存在该漏洞,结果为0 表示不存在该漏洞.2实验结果与分析本文实验采用的操作系统为Windows10,处理器为IntelCorei5,显卡为NVDIARTX3060,显存为32 GB,CU D A 版本为11.1,cuDNN版本为8.7.1,Python版本为3.7.10,Pytorch版本为1.14.编码器最大长度设置为512,批量大小设置为8,学
14、习率设置为0.0 0 0 0 1,训练轮次设置为15.2.1实验数据集选取 Smartbugs1和 Smart-Contract-Datasetl两个公开数据集进行智能合约漏洞检测实验.数据集包括整数溢出、可重人性、执行顺序依赖、时间戳、拒绝服务和tx.origin漏洞6 种solidity智能合约编程语言的常见漏洞.以Smartbugs数据集作为漏洞检测的基准数据集,收集Smart-Contract-Dataset中包含6 种漏洞类型的智能合约补充到基准数据集中,每种漏洞类型对应的样本数量分别为整数溢出136 2 个,可重入性555个,执行顺序依赖944个,时间戳10 93个,拒绝服务40
15、7 个和tx.origin漏洞155个,将数据集按7:3划分为训练集和测试集.2.2评价指标采用机器学习领域常用的评估指标准确率 A-T,+T精度 P-TTpT+F召回率薛佳雷等:基于迁移学习的智能合约漏洞检测方法27Ci-1C1f.C遗忘门输人门tanhat-1XTp+TNa,tanha.i输出门图3LSTM单元结构Fig.3 LSTM cell structure28TpR=T,+FN一和F1分数F=P+R负例样本数量,F为假负例样本数量,Fp为假正例样本数量.2.3实验结果图4为智能合约漏洞检测实验训练集和测试集的准确率和损失函数曲线图.由图4可知,训练过程和测试过程的损失函数曲线在实验
16、初期拟合良好,随着训练轮数的增加,拟合度降低,产生一定范围内的波动;6 种漏洞检测的准确率均在8 0%以上,其中tx.origin漏洞检测的准确率高达98.05%.由此得出,本文提出的基于迁移学习的智能合约漏洞检测方法是有效的.100-训练准确率验证准确率80F训练损失验证损失%/率聊604020F10080%/率聊604020“训练损失0246810 12 14216训练轮数(c)执行顺序依赖10080%/率聊604020训练准确率验证准确率10.2训练损失验证损失04681002为了进一步验证本文模型的有效性,选取主流的智能合约漏洞检测工具SmartCheck3、Se c u r i-fy
17、4和Mythri作为基线模型进行对比实验,结果如表1所示.由表1可知,与3种基线模型对各类漏洞检测的最佳结果相比,本文模型检测整数溢出漏洞的精度、召回率和F1分数分别提升了16.59%,2 2.2 8%和19.6 0%,可重人性漏洞的精度、召回率和F1分数分别提升了2 4.13%,13.31%和18.45%,执行顺序依赖漏洞的精度、召回率和F1分数分别提升了14.6 7%,2.99%和扬州大学学报(自然科学版)2PR评估智能合约漏洞检测效果,其中Tp为真正例样本数量,T为真71.0100r10.880F%/本业60F400.2200.0681024训练轮数(a)整数溢出训练准确率验证准确率10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 迁移 学习 智能 合约 漏洞 检测 方法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。