[发明专利]一种基于代码插桩的以太坊智能合约重入漏洞检测方法有效

专利信息
申请号: 201910125985.3 申请日: 2019-02-20
公开(公告)号: CN109800175B 公开(公告)日: 2020-08-11
发明(设计)人: 张鹏程;肖锋;于佳男 申请(专利权)人: 河海大学
主分类号: G06F11/36 分类号: G06F11/36;G06Q40/04
代理公司: 南京苏高专利商标事务所(普通合伙) 32204 代理人: 孟红梅
地址: 210024 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于代码插桩的以太坊智能合约重入漏洞检测方法,属于信息技术领域。该方法通过分析以太坊智能合约源代码,根据特定转账函数语句的位置并结合函数间的相互调用关系,找到所有可能成为重入攻击靶函数的函数,并向被测合约源代码中插入用以收集被测合约运行时的数据流信息的探针代码;然后根据靶函数的函数可见性,通过向被测合约中添加函数的方式,在添加的函数中调用所有可以被外部调用的靶函数,用以触发靶函数运行,使得插入的探针代码能够获取到被测合约内的数据流信息,最终通过数据流信息判断被测合约是否具有可重入漏洞。与现有检测方法相比,本发明方法具有生成测试合约效率快、重入漏洞识别率高等优点。
搜索关键词: 一种 基于 代码 以太 智能 合约 漏洞 检测 方法
【主权项】:
1.一种基于代码插桩的以太坊智能合约重入漏洞检测方法,其特征在于,包括如下步骤:(1)判断被测合约内是否存在通过继承相互关联的合约,若存在,则导入继承相关的代码;否则进入下一步;(2)判断被测合约内有无函数使用指定转账函数方式进行以太币转账,若有,则进入下一步;否则报告被测合约无可重入漏洞,检测结束;(3)收集所有函数体内调用了指定转账函数的函数名,记为直接调用函数;并基于直接调用函数进行递归查找,获得所有在执行过程中可能执行到指定转账函数语句的函数名,记为间接调用函数;(4)在直接调用函数的函数声明/定义后的第一条语句的位置处插入A类探针代码,在直接调用函数中的指定转账函数语句的前一句的位置处插入B类探针代码,在在直接调用函数中的指定转账函数语句的后一句的位置处插入C类探针代码;在调用链首的间接调用函数的函数声明/定义后的第一条语句的位置处插入A类探针代码,在被测合约的第一条语句位置插入D类探针代码;其中A类探针代码用于获取转帐流程开始前账户代币数量,B类探针代码用于获取调用转账前账户代币数量以及用于判定被测合约内是否存在重入漏洞,C类探针代码用于重置变量值;D类探针代码用于声明变量;探针代码中的账本名和地址名分别根据合约内声明的用于发挥账本作用的映射型变量的变量名及接收指定转账函数的地址名设定;(5)向被测合约内插入模拟重入攻击的测试函数,所述测试函数执行语句包括:接收外部的以太币转账并且在账本中增加相应记录;调用直接调用函数和间接调用函数中的所有外部可见的函数作为重入攻击靶函数;(6)生成被测合约的部署文件,编译、部署被测合约于私有链上;(7)运行被测合约中的模拟重入攻击的测试函数,插入的探针代码获取到程序运行时的数据流信息,通过分析数据流信息,给出被测合约是否具有重入漏洞的检测结果。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201910125985.3/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top