一种基于Transformer的智能合约漏洞检测方法技术

技术编号:37981024 阅读:15 留言:0更新日期:2023-06-30 09:56
本发明专利技术请求保护一种基于Transformer的智能合约漏洞检测方法,包括以下:(1)通过以太坊浏览器收集了大量智能合约数据,并经过人工和工具扫描标注漏洞标签构建原始数据集;(2)在数据预处理阶段,将所收集的智能合约源码编译转换为操作码序列;(3)针对原始操作码移除操作数抽象操作码,降低模型训练的难度;(4)利用word2vec模型,将预处理后的操作码进行训练,训练之后获得特定操作码的词向量表示,获得操作码之间的关联性;(5)利用Transformer模型训练智能合约漏洞检测模型;(6)使用模型进行智能合约漏洞检测。本发明专利技术能够自动学习潜在的智能合约漏洞特征或表示,解决了传统神经网络模型无法处理智能合约长序列文本的问题,实现对智能合约漏洞自动化分析。智能合约漏洞自动化分析。智能合约漏洞自动化分析。

【技术实现步骤摘要】
一种基于Transformer的智能合约漏洞检测方法


[0001]本专利技术涉及计算机领域,尤其涉及一种基于Transformer的智能合约漏洞检测方法。

技术介绍

[0002]随着社会经济的发展和技术的变革,区块链已经作为了一种新兴的技术,营造了可信的交易环境,根据以太坊浏览器网站Etherscan 2020年数据显示,以太坊生态系统正在快速增长,开发者们在2020年创造了总计1070万智份智能合约,与2019年的690万份相比,增长了55%。如此庞大体量的智能合约中蕴含了巨大的经济价值,然而在过去的10年中,因为智能合约的漏洞而造成经济损失事件比比皆是,The DAO事件,黑客利用了智能合约中的可重入漏洞,盗走The DAO社区超过360万的以太坊,超过该项目筹集的以太坊总数的三分之一。频繁发生的漏洞安全问题,越发引起以太坊社区和学术界的关注,类似Mythril,Oyente、Securify等漏洞检查工具,在漏洞检测任务中取得优异的成绩,然而这类工具如果不随着时间的推移而进行迭代更新的话,会导致漏洞无法识别的隐患,从而导致不可预计的损失。本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于Transformer的智能合约漏洞检测方法,其特征在于,包括以下步骤:(1)智能合约源码数据收集步骤;(2)智能合约源码编译步骤;(3)操作码抽象处理步骤;(4)操作码词向量训练步骤;(5)Transformer模型训练步骤;(6)使用基于Transformer的智能合约漏洞检测模型进行漏洞检测的步骤。2.根据权利要求1所述的一种基于Transformer的智能合约漏洞检测方法,其特征在于,所述步骤(1)智能合约源码数据收集具体包括:通过编写python脚本对Etherscan上的智能合约源代码进行爬取;其中根据智能合约SWC以太坊智能合约漏洞库清单,将所收集的智能合约通过人工和Mythril、Oyente、Securify在内的工具扫描标注的方法,使存在的漏洞归纳为整数上溢和整数下溢漏洞、交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞、代码重入漏洞五种。3.根据权利要求1所述的一种基于Transformer的智能合约漏洞检测方法,其特征在于,所述步骤(2)智能合约源码编译步骤具体包括:通过智能合约操作码进行智能合约漏洞检测,将智能合约源代码编译为操作,其中智能合约操作码直接作用于以太坊虚拟机栈,是最接近虚拟机运行原理的语言,功能相同的源码纵使代码表现形式不同但转换为操作码后是相同的,在以太坊黄皮书上,共规定了145条操作指令,其中有些指令目前并没有使用,仅用于未来的扩展使用。为了避免智能合约源代码中自定义变量名和函数名以及Solidity不同版本等与漏洞检测无关因素的影响,提出将合约源码转换为操作码进行处理。通过Solc编译器将Solidity源码编译成字节码,之后根据以太坊黄皮书中字节码与操作码的对应关系生成操作码序列。4.根据权利要求1所述的一种基于Transformer的智能合约漏洞检测方法,其特征在于,所述步骤(3)操作码抽象处理步骤具体包括:S101、移除操作数,每个push指令后紧跟操作数,位数1

32字节不等,操作数与漏洞产生没有直接关联,将其移除;S102、功能相似的操作码归为一类,block information类中的BLOCKHASH、TIMESTAMP、NUMBER、DIFFICULTY、GASLIMIT和COINBASE这6种操作码代表着区块的信息,将此6种操作码归为一类;将加减乘除和模运算在内的算术运算操作码抽象为一类;将算术比较操作码抽象为一类;将与地址有关的操作码抽象为一类;将逻辑算术运算操作码抽象为一类;将逻辑运算符操作码抽象为一类;S103、对以太坊虚拟机栈的作用相似的操作码抽象为一类,将PUSH5到PUSH32在内代表压栈操作的指令归为一类,将DUP1

DUP16代表复制操作的指令归为一类,将SWAP1

SWQP16代表交换操作的指令归为一类。5.根据权利要求4所述的一种基于Transformer的智能合约漏洞检测方法,其特征在于,所述步骤(4)操作码词向量训练步骤具体包括:通过训练CB...

【专利技术属性】
技术研发人员:黄海辉曾伟刘俊刘雷刘帅武
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

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

1