基于深度学习和信息反馈的智能合约模糊测试方法.pdf
《基于深度学习和信息反馈的智能合约模糊测试方法.pdf》由会员分享,可在线阅读,更多相关《基于深度学习和信息反馈的智能合约模糊测试方法.pdf(6页珍藏版)》请在咨信网上搜索。
1、h t t p:/ww wj s j k x c o mD O I:/j s j k x 到稿日期:返修日期:基金项目:四川省自然科学基金(N S F S C );四川大学专职博士后研发基金(S C U )T h i sw o r kw a ss u p p o r t e db yt h eN a t u r a lS c i e n c eF o u n d a t i o no fS i c h u a nP r o v i n c e,C h i n a(N S F S C )a n dS i c h u a nU n i v e r s i t yP o s t d o c t o
2、r a lS c i e n c eR e s e a r c hF o u n d a t i o n(S C U )通信作者:杨秋辉(y a n g q i u h u i s c u e d u c n)基于深度学习和信息反馈的智能合约模糊测试方法赵明敏杨秋辉洪玫蔡创四川大学计算机学院成都 (q q c o m)摘要主流区块链平台以太坊上频繁发现由不安全编程引起的智能合约安全漏洞.为了提高模糊测试对合约代码的覆盖率,以更全面地检测安全漏洞,提出了一种智能合约模糊测试方法.首先构造智能合约交易序列数据集,再基于深度学习构建智能合约交易生成模型以生成模糊测试初始种子;然后根据覆盖率和分支距离
3、信息,对智能合约进行信息反馈引导的模糊测试,提出了特定的测试用例染色体编码方式,并设计实现了相应的交叉和变异算子.所提方法能有效覆盖智能合约的深层次状态以及严格条件守卫的分支代码.在 个智能合约上进行实验,结果表明,所提方法的代码覆盖率为 ,漏洞检测率为 ,与I L F,s F u z z,E c h i d n a方法相比,所提方法的代码覆盖率提高了 ,漏洞检测率提高了 .所提方法有助于提升以太坊智能合约安全测试的有效性,具有参考价值.关键词:以太坊智能合约;安全测试;深度学习;模糊测试;信息反馈引导中图法分类号T P S m a r tC o n t r a c tF u z z i n
4、gB a s e do nD e e pL e a r n i n ga n dI n f o r m a t i o nF e e d b a c kZ HAO M i n g m i n,YAN GQ i u h u i,HON G M e i a n dC A IC h u a n gS c h o o l o fC o m p u t e rS c i e n c e,S i c h u a nU n i v e r s i t y,C h e n g d u ,C h i n aA b s t r a c t V u l n e r a b i l i t i e so f s m
5、a r t c o n t r a c t sc a u s e db y i n s e c u r ep r o g r a mm i n gh a v eb e e n f r e q u e n t l yd i s c o v e r e do nt h em a i n s t r e a mb l o c k c h a i np l a t f o r mE t h e r e u m I no r d e r t o i m p r o v et h ec o v e r a g eo fc o n t r a c t sb yf u z z i n ga n dd e t
6、e c ts e c u r i t yv u l n e r a b i l i t i e sm o r ec o m p r e h e n s i v e l y,t h i sp a p e rp r o p o s e sas m a r tc o n t r a c t f u z z i n g F i r s t,c o n s t r u c t i n gE t h e r e u ms m a r tc o n t r a c t t r a n s a c t i o ns e q u e n c ed a t as e t,t h e nb u i l d i n
7、gs m a r t c o n t r a c tg e n e r a t i o nm o d e lb a s e do nd e e pl e a r n i n gt og e n e r a t e i n i t i a l s e e d sf o r f u z z i n g T h e n,a c c o r d i n gt ot h e i n f o r m a t i o no f c o v e r a g ea n db r a n c hd i s t a n c e,c o n d u c t i n f o r m a t i o nf e e d b
8、 a c k g u i d e df u z z i n go ns m a r t c o n t r a c t s,as p e c i f i cc h r o m o s o m ee n c o d i n gm e t h o d f o r t e s t c a s e s i sp r o p o s e d,a n dc o r r e s p o n d i n gc r o s s o v e r o p e r a t o r s a n dm u t a t i o no p e r a t o r s a r ed e s i g n e da n d i m
9、 p l e m e n t e d T h em e t h o dc a ne f f e c t i v e l yc o v e rt h ed e e ps t a t eo fs m a r tc o n t r a c t sa n db r a n c hc o d eg u a r d e db ys t r i c tc o n d i t i o n s E x p e r i m e n t so n s m a r t c o n t r a c t ss h o wt h a t t h e c o d e c o v e r a g e r a t eo f t
10、h i sm e t h o d i s ,a n d t h ev u l n e r a b i l i t yd e t e c t i o nr a t e i s C o m p a r ew i t ht h e I L F,s F u z z,a n dE c h i d n am e t h o d s,t h e c o d e c o v e r a g e r a t eo f t h i sm e t h o d i n c r e a s e sb y ,t h ev u l n e r a b i l i t yd e t e c t i o nr a t e i
11、n c r e a s e sb y T h i sm e t h o dh e l p s t o i m p r o v e t h e e f f e c t i v e n e s so fE t h e r e u ms m a r t c o n t r a c t s e c u r i t yt e s t i n ga n d i sw o r t h yo f r e f e r e n c e f o r t h e i n d u s t r y K e y w o r d s E t h e r e u ms m a r t c o n t r a c t s,S e
12、 c u r i t yt e s t i n g,D e e pl e a r n i n g,F u z z i n g,I n f o r m a t i o nf e e d b a c kg u i d a n c e引言随着区块链 时代的到来,主流区块链平台以太坊上频繁发现由不安全编程引起的智能合约安全漏洞,这给平台用户造成了重大的财产损失.保障以太坊智能合约安全性的最有效的手段是在智能合约被部署到以太坊区块链之前,对其进行充分的安全测试,找出安全漏洞并修复.模糊测试是目前以太坊智能合约最为主流的动态安全测试技术,其通过模糊器生成大量测试用例执行合约,以检测出安全漏洞.目前的智能合
13、约模糊测试工具主要以基于变异的灰盒模糊测试为主,通常使用轻量级的程序插桩技术,利用执行测试用例得到的合约覆盖信息,来引导测试用例的变异过程.但这些方法要么难以探索智能合约深层次的状态,要么难以覆盖具有严格条件守卫的合约分支代码,因此无法全面检测漏洞.针对以上问题,本文提出了一种基于深度学习和信息反馈引导的智能合约模糊测试方法.首先使用符号执行方法,构造以太坊智能合约交易序列数据集,再使用神经网络模型,在数据集上进行训练,构建智能合约交易生成模型,然后利用模型生成模糊测试初始种子,以提升合约覆盖率为目标对智能合约进行信息反馈引导的模糊测试,根据测试用例的执行结果,检测智能合约的安全漏洞.该方法能
14、高度覆盖智能合约代码,并能有效检测智能合约中存在的安全漏洞,具有良好的应用效果.相关工作文献 提出了一系列智能合约静态分析测试方法,根据预定义的漏洞类型分析和检测合约中的漏洞或问题,然后通过逐一匹配现有漏洞来给出检测结果.但这类方法没有分析运行后的动态信息,致使遗漏潜在漏洞.文献 使用符号执行方法对智能合约进行逐路径推理,通过求解路径约束来获得可行输入,但是目前的技术依旧存在路径爆炸和复杂约束求解的问题.因此,本文主要利用轻量级的静态分析技术来构造被测合约的控制流程图,从而获取覆盖率和分支距离信息.使用符号执行方法构造交易序列数据集,基于深度学习构建智能合约交易生成模型,在数据集上训练后的模型
15、保留了符号执行方法探索合约状态空间的能力,同时其消耗的计算资源比符号执行方法更少.在以太坊智能合约动态安全测试技术中,模糊测试是最为主流的方法.J i a n g等 提出的C o n t r a c t F u z z e r是第一个检测合约安全漏洞的黑盒模糊测试工具,但其随机生成测试用例,无法有效覆盖合约代码的深层次路径,因此可能会错过一些安全漏洞.H e等 提出的I L F是一种基于神经网络的灰盒模糊测试框架,根据被测合约的历史输入序列生成新的输入,执行并分析漏洞.G r i e c o等 提出的E c h i d n a是一个自动生成测试以检测断言和用户自定义属性中的违规行为的灰盒模糊工
16、具.N g u y e n等 提出的s F u z z借鉴传统的模糊测试工具A F L 并采用反馈自适应模糊策略来提高测试用例的覆盖率.但目前的灰盒模糊方法要么难以有效地变异交易序列来探索智能合约可能的状态,要么难以覆盖具有严格条件守卫的智能合约分支代码.因此,本文提出了一种基于深度学习和信息反馈引导的模糊测试方法,使用能有效探索智能合约可能状态空间的测试用例作为初始种子,基于覆盖率和分支距离信息反馈引导模糊测试过程,以提升模糊测试对智能合约的代码覆盖率,并有效检测智能合约中的安全漏洞.问题描述与基本思路在智能合约测试中,一些安全漏洞需要在深层次状态下才能够被触发.图给出了一个智能合约D e
17、e p S t a t e.若要触发第行的漏洞,则需要连续调用s e t Y(),c o p y Y X()和B a r()这种方法,或者需要在调用B a r()之前调用 次i n c r e a s e X(),使合约状态x 满足条件以执行a s s e r t语句.探索合约深层次状态往往需要执行特定的交易序列.符号化执行方法能生成交易探索合约状态,但随着交易序列长度的增加,合约可能的状态数量呈指数增长,符号化执行方法的效率将大幅降低.智能合约中具有严格条件守卫的分支代码在测试时很难被覆盖,图给出了一个智能合约H a r d T o C o v e r.第行和第行的分支代码均通过严格条件守卫
18、,若要覆盖分支代码,则测试用例必须使用特定的参数调用f o o方法.由于变量x的类型为i n t ,如果按均匀分布随机生成测试输入,那么只有/的概率生成特定参数.对于简单条件守卫的分支代码,使用符号化执行方法分析合约能有效得到能通过条件的测试输入,但在上述例子中,由于第行代码中的非线性计算,符号化执行方法受到底层约束求解器的限制可能无法求解到合适的输入.c o n t r a c tD e e p S t a t e i n t p r i v a t ex;i n t p r i v a t ey;c o n s t r u c t o r()p u b l i cx;y;f u n c t
19、 i o nB a r()p u b l i cv i e wr e t u r n s(i n t )i f(x)a s s e r t(f a l s e);r e t u r n;r e t u r n;f u n c t i o ns e t Y(i n t n e w Y)p u b l i c y n e wY;f u n c t i o ni n c r e a s e X()p u b l i c x;f u n c t i o nc o p y Y X()p u b l i c xy;图具有深层次状态的S o l i d i t y智能合约示例F i g E x a m p
20、l eo fS o l i d i t ys m a r t c o n t r a c t sw i t hd e e ps t a t e c o n t r a c tH a r d T o C o v e r f u n c t i o nf o o(i n tx)i n ty xx ;i f(y )i f(y )图具有严格条件守卫分支代码的S o l i d i t y智能合约示例F i g E x a m p l eo fS o l i d i t ys m a r t c o n t r a c t s f o rb r a n c hc o d ew i t hs t r i
21、c t c o n d i t i o ng u a r d s为解决上述问题,本文提出了一种智能合约模糊测试方法,整体思路如图所示,针对智能合约深层次状态的有效覆盖问题,本文方法首先使用符号执行方法来构造能探索合约深层次状态的交易序列数据集,然后使用神经网络构建智能合约交易生成模型,训练后的模型保留了符号执行方法探索合约状态空间的能力,并以更低的时间复杂度生成交易.使用模型构造模糊测试初始种子,提高对合约深层次状态的覆盖.针对严格条件守卫的分支代码的有效覆盖问题,本文方法在信息反馈引导的模糊测试中引入分支距离,以提升覆盖率和减小测试用例与严格条件守卫的基本块的分支距离为引导方向,更新模糊测试
22、种子,从而提高对智能合约严格条件C o m p u t e rS c i e n c e计算机科学V o l ,N o ,S e p 守卫的分支代码的覆盖.图本文方法的整体思路F i g O v e r a l l i d e ao f t h ep r o p o s e dm e t h o d基于深度学习构建智能合约交易生成模型本文方法根据C a d a r等 的研究,使用覆盖率优化搜索的启发式搜索策略的符号执行方法分析合约,构造出探索合约深层次状态的交易序列数据集.参考H e等 的研究,用神经网络构建智能合约交易生成模型.构造智能合约交易序列数据集首先收集 以 太 坊S o l i d
23、 i t y智 能 合 约 源 代 码,然 后 编 译部署合约,本文在本地私有以太坊网络上成功部署了 条智能合约.然后通过轻量级的静态分析技术生成合约的控制流程图(C o n t r o lF l o wG r a p h,C F G),并构造合约方法依赖图.在部署的每条智能合约上,应用C a d a r等 提出的算法,使用覆盖率优化搜索的启发式搜索策略的符号执行方法分析合约,为每个合约生成一条能最大程度覆盖合约代码的最长的交易序列,代表对合约深层次状态的探索.符号执行方法生成 的 交 易 序 列 无 法 直 接 用 于 模 型 训练,需要对其进 行 特征 提取,构造 历史 交 易特 征矩 阵
24、.特征矩阵由合约各个公有方法的语义特征向量构成,语义特征可分为两类,一是方法本身的语义特征(包括方法参数、操作码、方法名称),二是与 历史 交易 相关 的 语义 特征(包括方法的返回操 作 码、交 易 数 占 比、覆 盖 率).最 终 加入到训练数据集 中的 是特 征矩 阵 与下 一个 交 易的 二元 组序列,其中的下一个交易即是模型中有监督学习任务的标签.最后将数据集按照 的比例划分为训练集、验证集、测试集.构建智能合约交易生成模型本文方法中的智能合约交易生成模型的神经网络结构如图所示.图智能合约交易生成模型的神经网络结构F i g N e u r a l n e t w o r ka r
25、c h i t e c t u r e f o r s m a r t c o n t r a c t t r a n s a c t i o ng e n e r a t i o nm o d e l首先模型输入能表示交易序列信息的特征矩阵,然后图卷积神经网络(G r a p hC o n v o l u t i o nN e t w o r k,G C N)以特征矩阵与合约方法依赖图为输入,捕获合约公有方法间的依赖关系,输出合约的图嵌入矩阵,并将其作为s t a t e_n n和f u n c_n n的 输 入.长 短 期 记 忆 网 络(L o n g S h o r t T e r m
- 配套讲稿:
如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。