System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及信息安全,尤其是涉及基于深度学习的区块链智能合约漏洞特征提取方法及系统。
技术介绍
1、智能合约的概念在1994年由nick szabo首次提出,其本质是一段无人监督的、由第三方的参与才被激活的、可信任的规则协议,随着区块链技术的快速发展,其不可篡改、不可伪造、可溯源、去中心化的特点恰好为智能合约提供了安全且无干扰的运行环境,两者互相结合,买卖交易的条款被写入到智能合约的代码中,智能合约又被存储到去中心化、分布式的区块链上,由此产生了第二代区块链,也就是以太坊。
2、然而,由于区块链具有不可篡改的特性,智能合约一旦被成功部署上链,便不能对合约本身进行任何修改或更新。所以一旦智能合约中存在漏洞,这些漏洞可能导致合约执行时出现意料之外的行为,进而导致安全问题,留下巨大的安全隐患。为此,在将智能合约部署到区块链网络之前,对智能合约进行漏洞检测具有重要意义。
3、重入漏洞、时间戳漏洞和危险detegate调用漏洞是比较常见的智能合约安全性问题,被恶意利用后都可能造成非常严重的经济损失。其中重入漏洞发生在合约中存在未正确处理的外部合约调用,攻击者可以利用这个漏洞来重复调用合约中的某个函数,从而导致合约执行意外的操作或者造成资金损失;时间戳漏洞则发生在攻击者可能利用合约执行时的时间戳进行条件判断跃过合约的某些逻辑,从而执行不正确或者恶意的操作。危险delegate调用漏洞则是发生在智能合约的委托调用过程中,保留上下文执行的特点使得在使用委托调用的过程中需要充分的权限验证和参数检查,以免被调用和执行不受控
4、目前对智能合约漏洞检测的方法主要有三种,他们分别是形式化验证法、模糊检测法和深度学习法;形式化验证法主要是把合约中的概念、判断、逻辑转化成形式化模型,然后通过严谨的数学逻辑推理证明,来检验智能合约代码中的函数是否功能正常,模块之间交互是否有问题;模糊检测法则是通过大量的枚举、迭代的方式,为待检测智能合约生成大量正确、错误的测试用例,然后监控智能合约的运行状态,完成漏洞检测;随着深度学习的不断发展,漏洞检测逐渐和模型训练、分类预测结合起来,将智能合约源代码看作纯文本,然后利用卷积神经网络、循环神经网络来学习代码的语义特征,大大提高了对不同漏洞的语义特点的学习,漏洞检测的准确率也有了明显的提升,相较于传统的分割方法,在准确率、检测成本、迁移性方面有了不可比拟的优势。
5、但目前这些方法都存在一些缺陷:形式化验证法比较依赖数学推理的严谨性,十分考验漏洞分析师的数学逻辑能力,无法适应不断有新的漏洞被发现的现状;模糊检测法中,由于生成测试用例的成本过高,可用的模糊测试工具不成熟,故其漏洞检测准确率不高;现有的依靠神经网络模型的漏洞检测方法,把智能合约源代码当作纯文本进行特征提取,并且直接训练的方法过于粗暴,忽略代码内部逻辑和代码的整体特征,依然存在源代码结构特征提取不足等问题。
6、以上三种智能合约漏洞检测方法中,基于深度学习法对智能合约漏洞进行检测是一种可行的方案,但亟待解决源代码特征提取不足的问题。
技术实现思路
1、针对
技术介绍
中的问题,本专利技术提供了基于深度学习的区块链智能合约漏洞特征提取方法及系统,旨在从智能合约源代码的全局和源代码文本出发,提取到既包含源代码全局漏洞特征,又包含函数粒度上的文本、结构特征,最终得到智能合约漏洞检测的融合特征的方案,进而提高智能合约漏洞的检测能力。
2、为实现上述目的,本专利技术提供了一种基于深度学习的区块链智能合约漏洞特征提取方法,包括:
3、对待检测的包含源代码文本的文件数据集d进行预处理,得到智能合约源代码集d1;
4、根据所述智能合约源代码集d1进行全局漏洞模式特征提取,得到全局漏洞模式特征集合p;
5、将所述全局漏洞模式特征集合p输入多层感知机mlp进行特征升维,得到高维向量p1;
6、根据源代码语法规则,对所述智能合约源代码集d1进行词法分析和语法分析,获得抽象语法树数据集t;
7、根据待检测漏洞种类对所述抽象语法树数据集t依次进行剪枝及深度搜索遍历,输出每个节点的三元组作为源代码的结构化表征序列文本s,再进行压缩,得到所述结构化表征序列文本s的低维度向量q;
8、对所述低维度向量q进行语义学习和模型训练得到特征集合q1,将所述特征集合q1与所述高维向量p1组成融合特征矩阵m,用于智能合约漏洞检测。
9、作为本专利技术的进一步改进,根据所述智能合约源代码集d1进行全局漏洞模式特征提取,得到全局漏洞模式特征集合p;包括:
10、针对不同漏洞分别提出不同漏洞模式提取算法,根据各漏洞模式提取算法分别对所述智能合约源代码集d1进行全局特征提取,得到全局漏洞模式特征集合p。
11、作为本专利技术的进一步改进,针对不同漏洞分别提出不同漏洞模式提取算法,包括:
12、针对重入漏洞的漏洞原则,提出重入漏洞模式提取算法,包括子原则:合约内部是否有自定义锁结构修饰符定义;检查全局有无对call.value()的调用;调用call.value()的函数的是否被自定义修饰符修饰;修饰符是否为onlyowner;检查调用call.value()后是否引起当前用户的账户余额的变化;
13、针对时间戳依赖漏洞的漏洞原则,提出时间戳依赖漏洞模式提取算法,包括子原则:检查全局有无对_block.timestamp变量的调用或者当作右值赋值;检查_block.timestamp变量或者赋值后的变量是否作为调用函数的传入参数;是否作为条件语句的判断条件;是否污染了安全敏感运算;是否参与耗气;
14、针对危险delegate调用漏洞的漏洞原则,提出危险delegate调用漏洞模式提取算法,包括子原则:检查全局有无_delegate_调用;合约内是否有修饰符限定onlyowner使用权;检查调用的目标地址是否为合约拥有者指定的目标地址。
15、作为本专利技术的进一步改进,根据待检测漏洞种类对所述抽象语法树数据集t进行剪枝,包括:
16、依据待检测漏洞种类,找到深度最大且包含该待检测漏洞种类对应的关键词的子树,将该子树作为顶级语句块子树;
17、在除所述顶级语句块子树外的语句块子树中,获取最大关键性的子树作为次级语句块子树;
18、将所述顶级语句块子树和所述次级语句块子树中涉及到的所有语言规则节点作为动态关键节点序列,根据所述动态关键节点序列对所述抽象语法树数据集t进行剪枝。
19、作为本专利技术的进一步改进,在除所述顶级语句块子树外的语句块子树中,获取最大关键性的子树作为次级语句块子树;包括:
20、根据语法规则及不同语法节点对该待检测漏洞种类的影响,将语法节点划分为不同类,并赋予不同的权重;
21、根据语句块子树中各节点的权重值和深度值,分别计算各语句块子树的最大关键性,公式为:
22、
本文档来自技高网...
【技术保护点】
1.基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,包括:
2.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:根据所述智能合约源代码集D1进行全局漏洞模式特征提取,得到全局漏洞模式特征集合P;包括:
3.根据权利要求2所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:针对不同漏洞分别提出不同漏洞模式提取算法,包括:
4.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:根据待检测漏洞种类对所述抽象语法树数据集T进行剪枝,包括:
5.根据权利要求4所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,在除所述顶级语句块子树外的语句块子树中,获取最大关键性的子树作为次级语句块子树;包括:
6.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:节点三元组输出,过程包括:
7.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:进行压缩,得到所述结构化表征序列文本S的低维
8.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:对Q进行语义学习和模型训练得到特征集合Q1,包括:
9.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,所述对待检测的包含源代码文本的文件数据集D进行预处理,包括:合约拆分、去除注释、去除空行、函数名字替换,得到智能合约源代码集D1。
10.基于深度学习的区块链智能合约漏洞特征提取系统,用于实现如权利要求1~9任一项所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,包括:预处理模块、全局漏洞模式特征提取模块、特征升维模块、抽象语法树数据集获取模块、抽象语法树结构化表征向量获取模块和特征融合模块;
...【技术特征摘要】
1.基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,包括:
2.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:根据所述智能合约源代码集d1进行全局漏洞模式特征提取,得到全局漏洞模式特征集合p;包括:
3.根据权利要求2所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:针对不同漏洞分别提出不同漏洞模式提取算法,包括:
4.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:根据待检测漏洞种类对所述抽象语法树数据集t进行剪枝,包括:
5.根据权利要求4所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于,在除所述顶级语句块子树外的语句块子树中,获取最大关键性的子树作为次级语句块子树;包括:
6.根据权利要求1所述的基于深度学习的区块链智能合约漏洞特征提取方法,其特征在于:节点三元组输...
【专利技术属性】
技术研发人员:何泾沙,高华辰,朱娜斐,李名河,杨悦,
申请(专利权)人:北京工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。