[发明专利]一种以太坊智能合约问题检测和预防方法与装置在审
申请号: | 201911314940.7 | 申请日: | 2019-12-19 |
公开(公告)号: | CN111177730A | 公开(公告)日: | 2020-05-19 |
发明(设计)人: | 张鹏程;肖锋;于佳男;张勐;吉顺慧;戴启印;曹文南 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 211100 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 以太 智能 合约 问题 检测 预防 方法 装置 | ||
本发明提出了一种以太坊智能合约问题检测和预防方法与装置,该方法的输入是用户给定的以太坊智能合约源代码。首先格式化源代码,整理代码的格式。然后根据不同问题的特征确定对应的正则表达式及检测规则,并确定预防重入漏洞和整数溢出漏洞的代码语句构造方法,再使用定义的正则表达式对格式化后的代码进行匹配,通过匹配定位可能存在问题的代码语句。对于整数溢出漏洞和重入漏洞两种智能合约中的严重安全问题,本方法通过正则表达式定位可能存在问题的语句,然后通过程序插桩技术达成预防这两种问题产生的效果。在检测智能合约问题时,本方法可以获得优良的准确率、查全率和检测效率,并且可以覆盖当前绝大部分的智能合约问题种类。
技术领域
本发明涉及一种代码问题检测和预防方法,尤其涉及一种针对以太坊智能合约的基于正则表达式和程序插桩的问题检测和预防方法,属于区块链安全领域。
背景技术
以太坊是最大的支持智能合约的区块链,市值超过160亿美元。智能合约是在区块链平台上运行的自主程序。它们通常用几种高级语言开发,然后编译成字节码。一旦将智能合约的字节码部署到区块链,任何人可以调用它的函数,但是不能更改字节码。不幸的是,不可避免的,许多智能合约包含错误,但这些错误不能被修补,因为区块链上数据的不可更改性。因此,拥有能够帮助开发人员在将他们的字节码部署到区块链之前彻底检测智能合约存在的问题的自动化工具是特别重要的。
静态代码分析是当前检测以太坊智能合约安全的主流方法,现在已经提出了一些工具来检测智能合约中存在的问题。然而,它们中的大多数只能处理智能合约的字节码。虽然直接分析智能合约字节码能够带来比较优秀的准确率,但检测效率低下,并且不能够覆盖当下绝大部分种类的以太坊智能合约问题。因此,需要一个自动化工具,能够快速地检测以太坊智能合约问题,并且能够覆盖当下绝大部分种类的以太坊智能合约问题,在此基础下,还要拥有不错的准确率。虽然最近Tikhomirov等人提出了一种基于词法分析、语法分析和XPath、处理以太坊智能合约源代码的以太坊智能合约问题检测和预防方法,但他们的方法仍然存在着一些缺陷:他们不能够准确地描述智能合约问题语句的特征;他们无法检测一些对于以太坊智能合约安全有严重威胁的问题,诸如重入漏洞和整数溢出漏洞;他们的方法基于词法分析、语法分析和Xpath,这使得他们方法的检测效率仍然不够出色。
发明内容
发明目的:考虑区块链上的数据具有不可修改的特性,所以智能合约问题的严重性相较于其他领域严重得多。本发明提供了一种基于正则表达式和程序插桩的以太坊智能合约问题检测和预防方法与装置,针对使用Solidity语言开发的以太坊智能合约,使用定义的用于描述不同问题特征的正则表达式、检测规则和预防代码构造方法达到检测和预防问题产生的目的。
技术方案:为实现上述发明目的,本发明采用如下技术方案:
一种以太坊智能合约问题检测和预防方法,包括如下步骤:
步骤1:获取待检测的以太坊智能合约,并将源代码进行格式化;
步骤2:根据不同问题的特征,确定对应的正则表达式及检测规则,以及确定预防重入漏洞和整数溢出漏洞的代码语句的构造方法;
步骤3:将格式化后的代码发送到不同的问题检测程序中,问题检测程序根据步骤2定义的正则表达式和检测规则,检测不同种类的智能合约问题;
步骤4:对于重入漏洞,将格式化后的代码发送到预防重入漏洞程序中,预防重入漏洞程序根据步骤2定义的正则表达式定位可能引入重入漏洞的代码语句,然后根据合约内容构造欲插入的预防代码,最后将预防代码插入到智能合约中;
步骤5:对于整数溢出漏洞,将格式化后的代码发送到预防整数溢出漏洞程序中,预防整数溢出漏洞程序根据步骤2定义的正则表达式定位可能引入整数溢出漏洞的代码语句,然后根据合约内容构造欲插入的预防代码,最后将预防代码插入到智能合约中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911314940.7/2.html,转载请声明来源钻瓜专利网。