(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211394528.2
(22)申请日 2022.11.08
(71)申请人 广东启链科技有限公司
地址 528200 广东省佛山市南海区桂城街
南平西路广东夏西国际橡塑城一期5
号楼20026(住所申报)
(72)发明人 李志伟
(74)专利代理 机构 广州爱豆鼎盛知识产权代理
事务所(普通 合伙) 44763
专利代理师 袁翔
(51)Int.Cl.
G06F 21/57(2013.01)
G06F 21/62(2013.01)
G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
基于图神经网络的智能合约用户权限异常
漏洞检测方法
(57)摘要
本发明公开了基于图神经网络的智能合约
用户权限异常漏洞检测方法, 包括如下步骤: S1、
收集用于模型训练的数据, 获得合约源码数据
集; S2、 合约抽象语法树提取与预训练; S3、 基于
抽象语法树的合约图构造; S4、 基于合约图的权
限异常识别; S5、 获得预测结果。 本发明基于智能
合约的函数调用信息与合约存储变量的访问赋
值信息对合约权限异常问题进行检测, 不依赖特
定的漏洞模式, 可以通过重复学习的方法不断更
新识别模型, 从而适应新型的权 限控制漏洞, 提
高了检测方法的准确性; 不依赖于合约的交易记
录与特定的库方法, 因此可以适用于一般的开源
智能合约, 提高了 检测方法的可扩 展性。
权利要求书2页 说明书5页 附图1页
CN 115525905 A
2022.12.27
CN 115525905 A
1.基于图神经网络的智能合约用户权限异常漏洞检测方法, 其特征在于: 包括如下步
骤:
S1、 收集用于模型训练的数据, 获得合约源码数据集;
S2、 合约抽象语法树 提取与预训练, 包括如下步骤:
S21、 首先对合约抽象语法树进行构建, 构建抽象语法树数据集为{AST_i,L_i,i=1,2,
3,…}, 其中AST即为 合约的抽象语法树;
S22、 然后对抽象语法树进行优化, 由于抽象语法树包含的信息复杂, 通常需要对抽象
语法树进行预处理来筛选有效信息, 在智能合约权限异常检测场景下, 主要考虑智能合约
的函数、 修饰 器、 与全局变量之间的交 互关系;
S23、 最后对S2 2中获得的优化后的抽象语法树进行 预训练;
S3、 基于抽象语法树的合约图构造, 包括如下步骤:
S31、 对图节点构造, 所述图节点 三类节点: 函数节点、 修饰 器节点和全局变量节点;
S32、 对边的构造, 所述边的构造中包括构造两种类型的边, 分别为控制流信息边和数
据流信息边;
S4、 基于合约图的权限异常识别, 包括如下步骤:
S41、 将S3中获得的抽象语法树 合约图进行训练, 获得训练好的分类 器;
S42、 漏洞识别, 设定新的合约源代码, 根据S2和S3的过程将新的合约源代码转换成对
应的抽象语法树合约图, 然后将获得的抽象语法树合约图输入S4 1中获得的分类器, 得到 分
类结果;
S5、 获得预测结果。
2.根据权利要求1所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述S1中获得的合约源码数据集包括标记过的是否有权限控制问题的智能合约
以及智能合约的源代码, 所述合约源码数据集记 为{SC_i,L_i,i=1,2,3, …}, 其中, SC指一
个智能合约, L指该合约对应的标签, 若i为1, 则认为合约存在用户权限异常问题, 若i为0,
则认为合约用户权限无异常。
3.根据权利要求2所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述权限异常通常是 由多个函数 的调用产生, 所以需要记录合约的函数定义和
调用信息, 所述权限异常体现在用户对合约存储变量的自由修改, 所以需要记录合约的变
量定义、 调用和赋值信息 。
4.根据权利要求1所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述修饰器视作智能合约中的一种特殊函数, 所述S22中对抽象语法树进行优
化, 首先, 仅保留抽象语法树中与上述三类对象相关的节点, 即抽象语法树中函数对应的子
树, 抽象语法树中修饰器对应的子树, 抽象语法树中全局变量声明对应的子树, 并将除此以
外的节点删除; 其次, 对于剩下的节点, 仅保留节点类型信息(如函数调用 节点)与节点名
(如函数名)信息, 删掉 其他信息。
5.根据权利要求4所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述抽象语法树通过前序遍历转换为词序列, 所述抽象语法树预训练采用
Word2Vec技术对词序列进行预训练, 可以得到每个词对应的特征向量映射{Vec}, 对于一个
抽象语法树的词节点to ken, 可以通过Vec计算该词对应的词向量v。权 利 要 求 书 1/2 页
2
CN 115525905 A
26.根据权利要求1所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述函数节点以智能合约的函数为粒度构造图节 点, 对于合约中的每个函数, 构
造对应的函数节点F, 对于每个函数, 可以从合约抽象语法树中找到对应的函数子树, 通过
前序遍历将该函数子树转换为对应的词序列[c1,c2,c3, …], 通过计算v_F=(Vec(c1)+Vec
(c2)+Vec(c 3)+…)/n得到该节点的特 征向量;
所述修饰器节点构造对应的修饰器节点M, 对于每个修饰器, 可以从合约抽象语法树中
找到对应的修饰器子树, 通过前序遍历将该修饰器子树转换为对应的词 序列, 通过V对词序
列进行向量映射并通过类似函数节点特 征的计算可 得到该修饰 器节点的特 征向量v_M;
所述全局变量节点将合约中定义的每个全局变量var定义为一个图节点, 并计算Vec
(var)得到该节点的特 征向量。
7.根据权利要求6所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述控制流信息边为若两个函数之间存在调用关系, 如函数F1调用了函数F2, 就
增加一条从F1对应节 点指向F2对应节点的边。 若一个函数F调用了修饰器M, 则增加一条从F
对应节点指向M对应节点的边;
所述数据流信息边为根据智能合约函数对全局变量的访 问情况, 若函数F访 问了全局
变量Var, 则添加一条从Var到F的边, 若函数F修 改了全局变量Var, 则添加一条从F到Var的
边, 若修饰器M访问了全局变量Var, 则添加一条从V ar到M的边, 若修饰器M修改了全局 变量
Var, 则添加一条从M 到Var的边。
8.根据权利要求7所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述智能合约源代码转换为, 记作G(V, E), 其中, V为图的节点, 包含全局变量节
点V(var)、 函数节点V(F), 修饰器节点V(M), E为图的边, 包含描述函数与函数(修饰器)之间
调用关系的控制流信息边, 与描述函数(修饰器)与全局变量的访问赋值关系的数据流信息
边。
9.根据权利要求8所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述S4 1中对抽象语法树合约图进 行训练采用图卷积神经网络对其进 行训练, 其
输入为(智能合约对应的合约图G(V,E), 合约是否含有权限异常漏洞的标签L), 用于获得训
练好的分类 器。
10.根据权利要求1所述的基于图神经网络的智能合约用户权限异常漏洞检测方法, 其
特征在于: 所述S42中得到的分类结果为1, 则认 为合约存在权限异常问题, 若 结果为0, 则认
为合约不存在权限异常问题。权 利 要 求 书 2/2 页
3
CN 115525905 A
3
专利 基于图神经网络的智能合约用户权限异常漏洞检测方法
文档预览
中文文档
9 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-18 22:23:53上传分享