[发明专利]基于抽象语法树的智能合约漏洞检测的方法及应用在审

专利信息
申请号: 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所述的基于抽象语法树的智能合约漏洞检测的方法,其特征在于,所述检测结果包括:漏洞总数量、漏洞合约名称、漏洞类型、漏洞代码位置。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/pat/books/202210611791.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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