当前位置: 首页 > 专利查询>浙江大学专利>正文

一种多层次特征增强的智能合约漏洞检测方法及系统技术方案

技术编号:38074073 阅读:24 留言:0更新日期:2023-07-06 08:42
本发明专利技术提出了一种多层次特征增强的智能合约漏洞检测方法及系统,通过融合外部包调用关系、函数间调用与依赖关系、函数内程序信息流等多维度的合约语义信息,精准地建模合约代码特征,实现智能合约代码异常分析与漏洞检测。具体为:构建智能合约抽象语法树AST,基于AST分析合约外部包调用关系,生成外部包调用关系有向图,并提取相应的图特征;基于AST分析函数间调用与依赖关系,生成函数间依赖关系有向图,并提取相应的图特征;以函数为单位拆分合约AST,对函数AST进行信息流增强;基于多源特征融合输出合约异常分数。本发明专利技术准确地建模了合约代码特征,提高了合约代码异常分析与漏洞检测的效率和准确率,具有很好的拓展性与借鉴意义。鉴意义。鉴意义。

【技术实现步骤摘要】
一种多层次特征增强的智能合约漏洞检测方法及系统


[0001]本专利技术涉及区块链智能合约安全领域,具体讲的是一种多层次特征增强的智能合约漏洞检测方法及系统。

技术介绍

[0002]智能合约被称为去中心化应用的执行引擎,它的出现推动了去中心化应用的快速发展。智能合约本质上是一段程序代码,与传统的计算机程序一样,它也会存在安全漏洞;然而,与传统程序不同的是,智能合约一旦部署到区块链上将不能被更新或修改,因此漏洞造成的损失将无法挽回。以太坊是第一个引入智能合约的区块链平台,智能合约安全漏洞不仅给以太坊造成了严重的经济损失,同时也给整个区块链生态的可信交易环境带来了巨大的安全风险,阻碍了区块链发展。
[0003]智能合约代码漏洞俨然成为区块链安全领域的重大问题。当前的智能合约静态分析技术主要依赖于程序静态污点分析、形式化验证、以及符号执行等方法,它们存在合约语义信息建模不完整、代码特征提取不全面、合约分析耗时长等痛点问题,从而会导致较高的漏报率和误报率,无法在实际应用中取得令人满意的漏洞检测效果。因此,研究一种可靠的智能合约漏洞检测方法与系统是有必要的,可以帮助开发者及时发现合约中潜在的安全漏洞,进一步提高部署在区块链上的智能合约的可靠性和安全性。
[0004]本专利技术提出多层次特征增强的方法,能够有效地检测智能合约漏洞。通过把智能合约代码转换为抽象语法树(AST),在不同层面对AST进行特征增强,从多方面多角度分析合约代码中可能存在的漏洞,提高智能合约漏洞检测的范围和准确度。

技术实现思路

>[0005]针对当前智能合约静态分析方法存在的语义信息建模不完整、代码特征提取不全面等问题,本专利技术提出了一种多层次特征增强的智能合约漏洞检测方法,通过融合外部包调用关系、函数间调用与依赖关系、函数内程序信息流等多维度的合约语义信息,精准地建模合约代码特征,实现更准确的异常分析与漏洞检测。
[0006]为了实现上述目的,本专利技术采用如下技术方案:
[0007]第一个方面,一种多层次特征增强的智能合约漏洞检测方法,包括以下步骤:
[0008]步骤1:给定一个待测的智能合约,以合约源码作为输入,通过词法和语法分析,构造智能合约的抽象语法树AST;
[0009]步骤2:分析合约外部包调用关系:遍历合约AST,记录合约中与外部包调用返回值存在数据流依赖和控制流依赖的所有状态变量,利用静态污点分析技术,追踪该返回值的传播路径,生成合约外部包调用关系有向图G1,并利用基于时序信息传递的图特征网络提取G1的特征X1;
[0010]步骤3:分析函数间调用与依赖关系:基于合约AST,以构造函数为起点,搜索遍历AST的每个节点和每条边,分析合约内的函数间调用以及状态变量数据依赖关系,剪切存在
冗余信息的节点和边,生成函数间依赖关系有向图G2,并对G2中节点和边分别进行信息增强,利用基于时序信息传递的图特征网络提取G2的特征X2;
[0011]步骤4:分析函数内程序信息流:以函数为单位,将合约AST拆分为函数层面的子AST,针对每个子AST,分别进行节点和边的信息流增强;进一步地,拼接所有经过信息增强后的子AST,并利用基于时序信息传递的图特征网络提取拼接后的整个合约AST的特征X3;
[0012]步骤5:融合步骤2~4分别提取的特征X1,X2,X3,将融合后的特征X输入到前馈神经网络多层感知器(Multi

Layer Perceptron,MLP)中,输出最终预测的合约代码异常分数。
[0013]第二个方面,本专利技术还提供了一种多层次特征增强的智能合约漏洞检测方法的系统,用于实现上述的智能合约漏洞检测方法。
[0014]本专利技术提供了一种多层次特征增强的智能合约漏洞检测方法及系统,为智能合约代码异常分析和漏洞检测提供了新思路。相较于传统的方法,基于多层次的特征增强与融合,凝聚了更丰富的合约语义信息,实现了更准确和更全面的检测效果。具体有益技术效果和创新性,主要表现在以下三个方面:
[0015](1)本专利技术提出了基于多源信息融合的智能合约异常分析方法,从多个维度分析合约的语义特征,包括外部包调用关系、函数间调用与依赖关系、以及函数内程序信息流,全面地建模了智能合约代码特征,能够对智能合约进行更有效的代码异常分析以及漏洞检测;
[0016](2)本专利技术提出了基于智能合约的静态污点分析方法,能够跟踪状态变量的传播路径,从而能够准确地判断合约关键的转账函数以及相关的条件语句是否受到污染;
[0017](3)本专利技术提出了基于智能合约抽象语法树的信息流增强方法,根据不同分析角度对合约的抽象语法树进行相应的剪枝和信息增强,使得抽象语法树更贴合不同角度下的分析要求,去除冗余信息,增强了重要的信息流,提高了检测效率和检测的准确度。
附图说明
[0018]图1为本专利技术多层次特征增强的智能合约漏洞检测方法流程示意图。
[0019]图2为本专利技术多层次特征增强的智能合约漏洞检测系统架构图。
[0020]图3为本专利技术具体实施例Bank智能合约源码以及外部包timestamp合约源码。
[0021]图4为本专利技术Bank智能合约提取的抽象语法树。
[0022]图5为本专利技术智能合约Bank外部包调用关系有向图。
[0023]图6为本专利技术智能合约Bank函数间调用与依赖关系有向图。
[0024]图7为本专利技术基于抽象语法树的信息流增强示意图。
具体实施方式
[0025]为了清晰地阐述本专利技术,使本专利技术实施例的目的、技术方案和优点更加清楚,下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,以令本领域技术人员参照说明书文字能够据以实施。下面将附图结合具体实施方式对本专利技术的技术加以详细说明。
[0026]在本专利技术的一项具体实施中,一种多层次特征增强的智能合约漏洞检测方法,包
括以下步骤:
[0027]步骤1:给定一个待测的智能合约,以合约源码作为输入,通过词法和语法分析,构造智能合约的抽象语法树AST;
[0028]步骤2:分析合约外部包调用关系:遍历合约AST,记录合约中与外部包调用返回值存在数据流依赖和控制流依赖的所有状态变量,利用静态污点分析技术,追踪该返回值的传播路径,生成合约外部包调用关系有向图G1,并利用基于时序信息传递的图特征网络提取G1的特征X1;
[0029]步骤3:分析函数间调用与依赖关系:基于合约AST,以构造函数为起点,搜索遍历AST的每个节点和每条边,分析合约内的函数间调用以及状态变量数据依赖关系,剪切存在冗余信息的节点和边,生成函数间依赖关系有向图G2,并对G2中节点和边分别进行信息增强,利用基于时序信息传递的图特征网络提取G2的特征X2;
[0030]步骤4:分析函数内程序信息流:以函数为单位,将合约AST拆分为函数层面的子AST,针对每个子AST,分别进行节点和边的信息流增强;进一步地,拼接所有经过信息增强后本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种多层次特征增强的智能合约漏洞检测方法,其特征在于,包括以下步骤:步骤1:给定一个待测的智能合约,以合约源码作为输入,通过词法和语法分析,构造智能合约的抽象语法树AST;步骤2:分析合约外部包调用关系:遍历合约AST,记录合约中与外部包调用返回值存在数据流依赖和控制流依赖的所有状态变量,利用静态污点分析技术,追踪该返回值的传播路径,生成合约外部包调用关系有向图G1,并利用基于时序信息传递的图特征网络提取G1的特征X1;步骤3:分析函数间调用与依赖关系:基于合约AST,以构造函数为起点,搜索遍历AST的每个节点和每条边,分析合约内的函数间调用以及状态变量数据依赖关系,剪切存在冗余信息的节点和边,生成函数间依赖关系有向图G2,并对G2中节点和边分别进行信息增强,利用基于时序信息传递的图特征网络提取G2的特征X2;步骤4:分析函数内程序信息流:以函数为单位,将合约AST拆分为函数层面的子AST,针对每个子AST,分别进行节点和边的信息流增强;进一步地,拼接所有经过信息增强后的子AST,并利用基于时序信息传递的图特征网络提取拼接后的整个合约AST的特征X3;步骤5:融合步骤2~4分别提取的特征X1,X2,X3,将融合后的特征X输入到前馈神经网络多层感知器(Multi

Layer Perceptron,MLP)中,输出最终预测的合约代码异常分数。2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,步骤2中合约外部包调用关系分析过程具体为:2.1)遍历合约AST,提取外部包调用的返回值,记录合约中与该返回值存在数据依赖和控制依赖的所有状态变量;2.2)将外部包调用返回值以及与返回值存在数据依赖和控制依赖的状态变量标记为污点源,利用静态污点分析技术,跟踪污点源的传播路径,并对以下三种情况进行污点汇聚点检查:(a)合约转账函数的地址参数是否受到污点源干扰;(b)合约转账函数的转账金额参数是否受到污点源干扰;(c)合约执行路径上的条件语句是否受到污点源干扰;2.3)以污点汇聚点为终止点,生成合约外部包调用关系有向图G1,将边的特征聚集到其父节点上,删除边特征,在父节点上拼接子节点特征和聚集到的边特征,利用基于时序信息传递的图特征网络,提取外部包调用关系图特征X1。3.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,步骤3中函数间调用与依赖关系分析过程具体为:3.1)从构造函数开始,采用深度优先方式遍历合约AST的每条边,对原始的合约AST进行剪切,去除不相关的外部包调用以及局部变量,只保留函数节点、状态变量节点、以及关键的合约内部调用,其中,合约内部调用包括区块状态调用以及内置转账函数调用;3.2)分析合约中是否存在函数间的调用关系,分析函数中状态变量的读写依赖关系,进一步生成函数间依赖关系有向图G2;3.3)针对G2,分别对节点和边进行信息增强,即:函数节点储存函数参数、函数返回类型、调用函数和被调用函数;状态变量节点储存数据依赖关系以及控制依赖关系;边分为三类,即读操作边,写操作边,顺序边;读操作边表示函数节点对状态变量节点执行读操作,而
写操作边则表示函数节点对状态变量执行写操作,顺序边表示函数节点之间的执行顺序;将边的特征聚集到其父节点上,删除边特征,在父节点上拼接节点特征和聚集到的边特征,利用基于时序信息传递的图特征网络,提取函数间依赖关系有向图特征X2。4.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,步骤4中函数内程序语句信息流分析的具体过程为:4.1)以函数为单位,将合约AST拆分为函数层面的子AST,即ST1,ST2,...,ST

【专利技术属性】
技术研发人员:陈建海罗岳于悦钱鹏刘振广何钦铭
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1