【技术实现步骤摘要】
一种基于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...
【专利技术属性】
技术研发人员:黄海辉,曾伟,刘俊,刘雷,刘帅武,
申请(专利权)人:重庆邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。