[发明专利]基于抽象语法树的智能合约漏洞检测的方法及应用在审
申请号: | 202210611791.6 | 申请日: | 2022-05-31 |
公开(公告)号: | CN115017514A | 公开(公告)日: | 2022-09-06 |
发明(设计)人: | 刘哲;董伟良 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/41 |
代理公司: | 苏州三英知识产权代理有限公司 32412 | 代理人: | 潘时伟 |
地址: | 211100 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 抽象 语法 智能 合约 漏洞 检测 方法 应用 | ||
1.一种基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述方法包括:
对智能合约的源代码进行词法分析和语法分析,以构造出所述源代码的抽象语法树;
遍历所述抽象语法树,以补充所述抽象语法树的节点信息,并从补充后的抽象语法树中提取所述智能合约的控制流图、读写变量信息;
根据所述控制流图获取所述智能合约的执行路径集,并根据所述读写变量信息获取所述智能合约的数据流分析结果;
根据所述数据流分析结果和所述抽象语法树自定义漏洞检测器,并将所述漏洞检测器应用到所述执行路径集的每条路径中;以及
遍历所述抽象语法树,以得到所述漏洞检测器的检测结果,并将所述检测结果输入到JSON文件中。
2.如权利要求1所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述对智能合约的源代码进行词法分析和语法分析,以构造出所述源代码的抽象语法树,包括:
将所述源代码转换为字符标记序列,其中,所述字符标记序列包括关键字、标识符、符号和运算符;以及
将所述源代码的语法规则应用到所述字符标记序列,以构造抽象语法树。
3.如权利要求1所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,遍历所述抽象语法树,以补充所述抽象语法树的节点信息,包括:
遍历所述抽象语法树,将所述抽象语法树中父节点的节点信息保存至对应的子节点中。
4.如权利要求1所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,根据所述控制流图获取所述智能合约的执行路径集,并根据所述读写变量信息获取所述智能合约的数据流分析结果,包括:
对所述控制流图的非环版本进行深度优先搜索,得到所述智能合约所有的执行路径;
根据所述读写变量信息对所述智能合约进行定值到达和活性分析,以得到数据流分析结果;以及
将所述数据流分析结果抽象成数据结构,以便分析所述智能合约的复杂语义特征。
5.如权利要求4所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述定值到达的公式为:INn=∪p∈pred(n)OUTp,OUTn=GENn∪(INn-KILLn),其中,INn和OUTn分别代表所述智能合约当前语句的流入与流出信息流,GENn和KILLn分别代表所述智能合约当前语句生成信息和杀掉信息,p代表当前语句的上条语句;以及
所述活性分析的公式为:OUTn=∪s∈suc(n)INs,INn=USEn∪(OUTn-DEFn),其中,INn和OUTn分别代表所述智能合约当前语句的流入与流出信息流,USEn和DEFn分别代表所述智能合约当前语句中使用和定义的变量,s代表当前语句的下条语句。
6.如权利要求1所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述方法还包括:
在检测过程中发生异常或运行错误时,日志系统产生警告,其中,所述警告包括:异常类型、异常被捕获的代码行、运行信息以及错误原因。
7.如权利要求1所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述检测结果包括:漏洞总数量、漏洞合约名称、漏洞类型、漏洞代码位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210611791.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种测定水样中阿特拉津的方法
- 下一篇:具有热管的恒温混合伴热系统