[发明专利]智能合约漏洞检测方法、装置、设备和存储介质在审
申请号: | 202210736727.0 | 申请日: | 2022-06-27 |
公开(公告)号: | CN115062313A | 公开(公告)日: | 2022-09-16 |
发明(设计)人: | 刘自强 | 申请(专利权)人: | 中国人民银行数字货币研究所 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56;G06F21/14 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 100071 北京市丰*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 智能 合约 漏洞 检测 方法 装置 设备 存储 介质 | ||
1.一种智能合约漏洞检测方法,其特征在于,所述方法应用于虚拟机服务器,包括:
获取智能合约的形式化部署信息;其中所述形式化部署信息包括形式化初始状态以及与形式化行为列表;所述形式化行为列表包括所述智能合约的初始化执行函数和行为函数;
基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,得到所述智能合约的执行结果;
根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果;所述形式化规范库包括所述智能合约的形式化规范。
2.根据权利要求1所述的方法,其特征在于,所述根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果,包括:
对于每个行为函数,检测基于所述形式化初始状态,执行所述初始化执行函数和所述行为函数的执行结果是否符合所述形式化规范;
若符合,则将所述执行结果与所述形式化初始状态建立关联关系,以及在所述执行结果未包括在所述形式化部署信息中的情况下,将所述执行结果作为新的形式化初始状态包括在所述形式化部署信息中;
若不符合,则上报错误信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
建立有向图;所述有向图包括与所述形式化初始状态对应的节点,存在关联关系的两个节点用有向边连接;
所述若符合,则将所述执行结果与所述形式化初始状态建立关联关系,包括:若符合,则查看所述有向图中是否存在与所述执行结果对应的节点,若存在,则设置从所述初始化状态指向所述节点的有向边,若不存在,则将所述执行结果添加到所述有向图中,同时设置从所述初始化状态指向所述执行结果对应的节点的有向边。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述形式化部署信息包括多个形式化初始状态;所述方法还包括:
根据所述多个形式化初始状态确定执行队列;其中所述执行队列中包括所述多个形式化初始状态中符合所述形式化规范的形式化初始状态;
所述基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,包括:基于所述执行队列中的每一个形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述智能合约的需求信息确定所述智能合约的定制形式化规范;
将所述定制形式化规范添加到所述形式化规范库中。
6.一种智能合约漏洞检测装置,其特征在于,所述装置应用于虚拟机服务器,包括:
获取模块,用于获取智能合约的形式化部署信息;其中所述形式化部署信息包括形式化初始状态以及与形式化行为列表;所述形式化行为列表包括所述智能合约的初始化执行函数和行为函数;
执行模块,用于基于所述形式化初始状态,执行所述形式化行为列表包括的初始化执行函数和行为函数,得到所述智能合约的执行结果;
检测模块,用于根据所述智能合约的形式化规范库检测所述智能合约的执行结果,得到漏洞检测结果;所述形式化规范库包括所述智能合约的形式化规范。
7.根据权利要求6所述的装置,其特征在于,所述检测模块,具体用于:
对于每个行为函数,检测基于所述形式化初始状态,执行所述初始化执行函数和所述行为函数的执行结果是否符合所述形式化规范;
若符合,则将所述执行结果与所述形式化初始状态建立关联关系,以及在所述执行结果未包括在所述形式化部署信息中的情况下,将所述执行结果作为新的形式化初始状态包括在所述形式化部署信息中;
若不符合,则上报错误信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民银行数字货币研究所,未经中国人民银行数字货币研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210736727.0/1.html,转载请声明来源钻瓜专利网。