[发明专利]基于源代码图表示学习的智能合约多漏洞检测方法及系统有效
申请号: | 202110643307.3 | 申请日: | 2021-06-09 |
公开(公告)号: | CN113360915B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 蔡杰;李斌;张佳乐;孙小兵;薄莉莉;朱毅;章永龙 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F11/36;G06F8/41;G06N3/0464;G06N3/048;G06N3/08 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 225009 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 源代码 图表 学习 智能 合约 漏洞 检测 方法 系统 | ||
1.一种基于源代码图表示学习的智能合约多漏洞检测方法,其特征在于,包括以下步骤:
(1)构建智能合约源代码数据集,并对数据集中样本是否存在漏洞进行标记;
(2)结合智能合约的抽象语法树和语义信息构建智能合约函数粒度代码属性图;代码属性图中的每个节点包含代码语句和节点类型,图中的边类型根据语义信息分为AST边、控制流边、数据流边、控制依赖边和数据依赖边;包括:
(2.1)利用solidity编译器编译智能合约源代码,生成对应的抽象语法树,搜索智能合约抽象语法树中所有节点类型为FunctionDefinition的节点集合Vfunc,提取以这些节点为根节点的子树,得到函数粒度的抽象语法树集合;
(2.2)在函数粒度抽象语法树中寻找节点类型为ModifierInvocation的节点,此节点代表当前函数使用的函数修饰器,根据此节点内容寻找对应的函数修饰器具体实现,并将其添加在当前函数内部;
(2.3)在函数粒度的抽象语法树基础上,利用静态分析方法分析函数的语义信息,包括数据流、控制流、控制流依赖和数据依赖;将这些语义信息与抽象语法树结合,组成函数粒度代码属性图;图中各节点仍使用抽象语法树节点,而图中边类型根据其包含的语义信息分为以下几类:AST边、控制流边、数据流边、控制依赖边和数据依赖边;
(2.4)利用深度优先遍历算法将抽象语法树展开成序列表示,并在序列表示的基础上利用word2vec技术将抽象语法树节点映射到低维向量空间;
(3)根据智能合约漏洞的语法特征,定义智能合约切片准则,利用程序切片技术得到智能合约源代码中与漏洞相关的切片语句集合,并从代码属性图中提取与切片语句相关的语义信息组成切片代码属性图;包括:
(3.1)根据智能合约漏洞库SWC和CWE中已知的不同类型漏洞的语法特征定义切片准则;
(3.2)利用静态切片技术中的图可达性方法,根据定义的切片准则进行代码切片;在代码属性图中利用字符串匹配方法,搜索节点内容包含预定义切片准则的节点集合Vsc={vsc},从这些节点出发,沿数据依赖边和控制依赖边对代码属性图进行前向和后向遍历,寻找与节点vsc存在数据依赖或者控制依赖关系的相关节点集合Vs;切片准则节点集合Vsc和切片依赖相关节点集合VS共同组成代码切片语句节点集合V=Vsc∪Vs;
(3.3)根据步骤(3.2)得到的切片语句集合V,从代码属性图中提取切片代码属性图GS=(V,E,H),其中E是图中边的集合,H∈R|V|*d表示所有节点的初始状态其值为各节点利用word2vec映射的特征向量,d表示节点特征向量的维度;
(3.4)考虑到智能合约存在fallback机制,在步骤(3.3)得到的切片代码属性图的基础上添加fallback边;
(4)构建门控图神经网络与多层感知机结合的漏洞检测模型并进行训练,所述门控图神经网络用于对切片代码属性图进行特征提取,多层感知机用于根据提取的特征以及切片代码属性图中各节点的初始状态特征进行智能合约漏洞预测;
(5)利用步骤(2)和(3)中的方法生成待测试智能合约的切片代码属性图,输入到训练好的漏洞检测模型中预测是否存在漏洞。
2.根据权利要求1所述的基于源代码图表示学习的智能合约多漏洞检测方法,其特征在于,步骤(1)具体过程包括:
(1.1)通过Google BigQuery数据库获得部署在以太坊上的智能合约地址集合,利用合约地址在Etherscan平台得到对应的智能合约源代码;
(1.2)通过智能合约漏洞检测工具检测收集到的智能合约源码,并根据检测结果对样本进行标记,检测工具结果显示存在漏洞的合约标记为1,否则标记为0;之后对标记为漏洞的合约样本进行人工审计,以确保样本标记的准确性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110643307.3/1.html,转载请声明来源钻瓜专利网。