CN117972732B - 基于多特征融合的智能合约漏洞检测方法及系统 - Google Patents

基于多特征融合的智能合约漏洞检测方法及系统 Download PDF

Info

Publication number
CN117972732B
CN117972732B CN202410393695.8A CN202410393695A CN117972732B CN 117972732 B CN117972732 B CN 117972732B CN 202410393695 A CN202410393695 A CN 202410393695A CN 117972732 B CN117972732 B CN 117972732B
Authority
CN
China
Prior art keywords
representing
features
intelligent contract
fusion
global
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410393695.8A
Other languages
English (en)
Other versions
CN117972732A (zh
Inventor
姜浩东
付章杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Information Science and Technology
Original Assignee
Nanjing University of Information Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Information Science and Technology filed Critical Nanjing University of Information Science and Technology
Priority to CN202410393695.8A priority Critical patent/CN117972732B/zh
Publication of CN117972732A publication Critical patent/CN117972732A/zh
Application granted granted Critical
Publication of CN117972732B publication Critical patent/CN117972732B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了基于多特征融合的智能合约漏洞检测方法及系统,涉及数据处理技术领域,方法包括以下步骤:接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。

Description

基于多特征融合的智能合约漏洞检测方法及系统
技术领域
本发明涉及数据处理技术领域,具体的是基于多特征融合的智能合约漏洞检测方法及系统。
背景技术
智能合约是区块链技术最成功的应用之一,已经成为学术界和工业界研究的新关注点。智能合约是运行在区块链系统之上的程序。智能合约可以由开发人员专门设计,以实现管理数字资产的任意规则。由于区块链的不可变特性,智能合约一旦部署就无法更新。因此,智能合约的定义规则被制定为程序代码并自动执行,这对与合约交互的所有各方都是公正的。
传统方法在对复杂、多变的智能合约漏洞进行分析时存在一定的局限性。专家模式能够提供准确的漏洞特征定义和规则。而神经网络则通过大量的样本数据学习,能够自动发现隐藏的漏洞特征,并进行准确的分类和预测。通过这两种方法提取得到的特征对于准确识别智能合约漏洞至关重要,但目前的方法未能有效地提取和利用它们,导致对智能合约漏洞检测性能的不足。
发明内容
为解决上述背景技术中提到的不足,本发明的目的在于提供基于多特征融合的智能合约漏洞检测方法,方法包括以下步骤:
接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述提取待测智能合约的全局图特征的过程包括:
获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/>和/>是线性变换的权重矩阵,/>是键向量的维度,是一种用于多类别分类问题的激活函数,/>表示转置。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:所述将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
第二方面,为了达到上述目的,本发明公开了基于多特征融合的智能合约漏洞检测系统,包括:
模式图提取模块,用于接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
特征提取模块,用于将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
分类模块,用于将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
结合第二方面,在第二方面的某些实现方式中,该系统还包括:所述模式图提取模块内提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征。
模式图提取模块内提取待测智能合约的全局图特征的过程包括:
获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征;
特征提取模块内预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置。
分类模块内预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/>和/>是线性变换的权重矩阵,/>是键向量的维度,是一种用于多类别分类问题的激活函数,/>表示转置。
模式图提取模块内TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数。
分类模块内将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
在本发明的另一方面,为了达到上述目的,公开了一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个所述程序被一个或多个所述处理器执行,使得一个或多个所述处理器实现如上所述的基于多特征融合的智能合约漏洞检测方法。
本发明的有益效果:
本发明设计了基于图神经网络和多特征融合的智能合约漏洞检测方法,可以更准确地分析和识别智能合约漏洞,为用户提供更可靠的安全保障,在减少用户损失的同时增强区块链金融系统的整体安全性;
设计了专家模式与全局图特征相结合的特征提取方案,有效提取智能合约的漏洞特征;
设计了基于图神经网络和多注意力机制的特征融合方案,将局部专家模式和全局图特征进行融合,充分利用两种特征的优势,提高了漏洞检测系统的性能和鲁棒性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1是本发明方法流程示意图;
图2是本发明一个实施例的专家模式与全局图特征相结合的特征提取结构示意图;
图3是本发明一个实施例的基于图神经网络和多注意力机制的特征融合结构示意图;
图4是本发明系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
下面,对本申请实施例涉及的相关术语进行介绍:
图神经网络:图神经网络(Graph Neural Network,GNN)是指使用神经网络来学习图结构数据,提取和发掘图结构数据中的特征和模式,满足聚类、分类、预测、分割、生成等图学习任务需求的算法总称。
GNN的历史最早可以追溯到 2005 年,第一次提出 GNN 概念,用RNN来处理无向图、有向图、标签图和循环图等。Bruna等人提出将 CNN 应用到图上,通过对卷积算子巧妙的转换,提出了图卷积网络(Graph Convolutional Netwok,GCN),并衍生了许多变体。
智能合约:智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
自注意力机制(self-attention mechanism)是一种强大的神经网络模型,已经在自然语言处理(NLP)和计算机视觉(CV)等领域取得了广泛的应用。它能够自动学习输入序列中每个元素与其他元素的关系,并根据关系的重要性进行加权。
如图1所示,基于多特征融合的智能合约漏洞检测方法,其特征在于,方法包括以下步骤:
接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
其中,提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
具体的,下面通过实施例对本发明方案作进一步阐述:
对于可重入漏洞,设计了三种专家模式。
(1)enoughBalance关注的是在向用户转账前是否检查了用户余额是否足够。
(2)callValueInvocation模拟了函数中是否存在对call.value的调用。
(3)balanceDeduction检查了在资金转移后用户余额是否被扣除,考虑到如果每次在资金转移前扣除用户余额,就可以避免资金窃取。
对于时间戳依赖漏洞,设计了三种专家模式。
(1)timestampInvocation模拟了函数中是否存在对opcode block.timestamp的调用。
(2)timestampAssign检查了block.timestamp的值是否被赋给其他变量或作为参数传递给函数,即block.timestamp是否实际被使用。
(3)timestampContaminate验证了block.timestamp是否可能污染关键操作的触发条件(例如资金转移)。
对于无限循环漏洞,设计了三种专家模式。
(1)loopStatement检查函数是否存在诸如for和while等循环语句。
(2)loopCondition验证退出条件是否可达。例如,对于一个while循环,如果在循环中i从未更新,则无法达到其退出条件i<9。
(3)selfInvocation关注函数是否调用了自身,并且该自调用不在if语句中。这考虑到了如果自调用语句不在if语句中,自调用循环将永远不会终止的事实。
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征。
提取待测智能合约的全局图特征的过程包括:
进一步地,获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征。
需要进一步进行说明的是,TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数。
需要进行说明的是,基于TMP的全局图特征提取方法,将智能合约函数表述为合约图,全局图特征包含了智能合约中各个组件之间的关系和连接信息,能够反映合约的整体结构和行为。针对功能代码提取其全局图特征。
根据本发明的一个实施例,基于TMP的全局图特征提取方法将智能合约函数表述为合约图,能够反映合约的整体结构和行为,针对功能代码提取其全局图特征,具体过程如图2所示,包括:
构造合约图,将智能合约函数表述为合约图,并为不同的程序元素(即节点)分配不同的角色。构建边来模拟程序元素之间的控制和数据流,并考虑它们的时间顺序。此外,设计一个节点消除过程来规范化合约图并突出重要节点。所述合约图的构建和归一化过程,具体如下:
(1)节点的构造
将不同程序元素分为核心节点、普通节点和回退节点三种类型。
核心节点是关键调用和变量的表示,对于检测特定漏洞至关重要。例如,在检测重入漏洞时,核心节点可以表示资金转移函数或内置的call.value函数的调用,以及与用户余额相关的变量。
普通节点用于表示辅助作用的调用和变量。它们不如核心节点重要,但在检测漏洞时仍起到一定的作用。
回退节点是为了模拟虚拟攻击合约的回退函数而创建的。回退函数可以与待测试的函数进行交互,并具有特定的行为
(2)边的构造
为了捕捉节点之间的语义依赖关系,构建了三种类型的边:控制流边、数据流边和回退边。
控制流边用于捕捉代码的控制语义,使用正向边描述代码序列的自然控制流,它连接相邻语句中的两个节点,可以保留源代码中的编程逻辑。
数据流边用于跟踪变量的使用情况,涉及到变量的访问或修改。
为了明确建模特定的回退机制,构建了两条回退边。第一条回退边从第一个call.value调用连接到回退节点,第二条回退边从回退节点指向待测试的函数。
(3)节点和边的特征
边的特征被提取为一个元组(Vstart, Vend, Order, Type),其中Vstart和Vend表示其起始和结束节点,Order表示时间顺序,Type表示边的类型。
关键节点的特征由(ID, AccFlag, Caller, Type)组成,其中ID表示其标识符,Caller表示调用的调用者地址,Type表示节点类型。
回退节点和普通节点的特征由(ID, Type)组成;
对合约图进行归一化,去除所有普通节点,并将其特征合并到最近的核心节点;
将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置。
将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
针对所述的专家模式特征和全局图特征数据,依次输入ReLU激活函数、Concatenate层、ReLU激活函数、Attention层、Concatenate层、ReLU激活函数、Conv1D层、MaxPooling1D层、ReLU激活函数、Sigmoid激活函数,对待测智能合约进行特征提取,将待测智能合约的专家模式特征与全局图特征融合,得到待测智能合约的漏洞特征,具体过程如图3所示。
预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/>和/>是线性变换的权重矩阵,/>是键向量的维度,是一种用于多类别分类问题的激活函数,/>表示转置。
所述将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
为进一步对本申请提出的方法进行验证,本申请通过设置相应的实验环境对方法的性能进行实验验证。本申请使用的数据集包含1300个来自以太坊智能合约,模式提取工具和图构建工具使用Python实现,神经网络使用TensorFlow实现。随机选择80%的函数作为训练集,另外20%作为测试集。实验结果如表1所示:
表1:实验结果
经实验可知,本申请对于可重入漏洞,实现了91.59%的检测准确率;对于时间戳依赖漏洞,实现了88.72%的检测准确率;对于无限循环漏洞,实现了78.63%的检测准确率,由此证明了本申请的有效性。
实施例二:第二方面,如图4所示,为了达到上述目的,本发明公开了基于多特征融合的智能合约漏洞检测系统,包括:
模式图提取模块,用于接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
特征提取模块,用于将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
分类模块,用于将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
结合第二方面,在第二方面的某些实现方式中,该系统还包括:所述模式图提取模块内提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征。
模式图提取模块内提取待测智能合约的全局图特征的过程包括:
获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征;
特征提取模块内预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置。
分类模块内预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/>和/>是线性变换的权重矩阵,/>是键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置。
模式图提取模块内TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数。
分类模块内将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
基于同一种发明构思,本发明还提供一种计算机设备,该计算机设备包括包括:一个或多个处理器,以及存储器,用于存储一个或多个计算机程序;程序包括程序指令,处理器用于执行存储器存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其用于实现一条或一条以上指令,具体用于加载并执行计算机存储介质内一条或一条以上指令从而实现上述方法。
需要进一步进行说明的是,基于同一种发明构思,本发明还提供一种计算机存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法。该存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电、磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上显示和描述了本公开的基本原理、主要特征和本公开的优点。本行业的技术人员应该了解,本公开不受上述实施例的限制,上述实施例和说明书中描述的只是说明本公开的原理,在不脱离本公开精神和范围的前提下,本公开还会有各种变化和改进,这些变化和改进都落入要求保护的本公开范围内容。

Claims (6)

1.基于多特征融合的智能合约漏洞检测方法,其特征在于,方法包括以下步骤:
接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征;
提取待测智能合约的全局图特征的过程包括:
获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征;
将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置;
将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征;
预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/> 和/>是线性变换的权重矩阵,/>是键向量的维度,是一种用于多类别分类问题的激活函数,/>表示转置;
将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
2.根据权利要求1所述的基于多特征融合的智能合约漏洞检测方法,其特征在于,所述TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,/>表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,/>是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数。
3.根据权利要求1所述的基于多特征融合的智能合约漏洞检测方法,其特征在于,所述将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
4.基于多特征融合的智能合约漏洞检测系统,其特征在于,包括:
模式图提取模块,用于接收待测智能合约,分别提取待测智能合约的专家模式特征和全局图特征;
模式图提取模块内提取待测智能合约的专家模式特征的过程:
获取待测智能合约的功能代码,功能代码的信息包括:变量和状态管理、条件和控制流程、数据操作和计算、事件触发和通知、资产转移和交易处理、权限控制、时间处理、异常处理和错误检测;
设定不同类型的智能合约漏洞的漏洞特征定义和规则,对于三种智能合约漏洞定义三种不同专家模式,三种智能合约漏洞包括:可重入漏洞、时间戳依赖漏洞和无限循环漏洞;
提取专家模式,使用一个one-hot向量来表示每个专家模式,并附加一个数字0/1来指示被测函数是否具有专家模式;
采用多个多层感知器MLP,每个MLP负责一个专家模式,将提取的局部专家模式编码作为待测智能合约的专家模式特征;
模式图提取模块内提取待测智能合约的全局图特征的过程包括:
获取待测智能合约的功能代码;
将待测智能合约的功能代码转换为全局语义图,定义不同的节点和边来表示不同的程序元素和语义关系,并将全局语义图进行归一化以突出重要节点;
采用临时消息传递TMP图神经网络模型,将归一化的全局语义图转换为全局图特征,作为待测智能合约的全局图特征;
特征提取模块,用于将待测智能合约的专家模式特征和全局图特征输入至预先建立的自注意力编码器网络模型内进行进一步特征提取,输出得到二次专家模式特征和全局图特征;
特征提取模块内预先建立的自注意力编码器网络模型如下:
其中,表示注意力机制,/>,/>,/>分别表示查询向量、键向量和值向量,/>为键向量的维度,/>是一种用于多类别分类问题的激活函数,/>表示转置;
分类模块,用于将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征;
分类模块内预先建立的交叉注意力编码器网络模型如下:
其中,表示注意力机制,/>和/>分别表示输入序列,/>,/>,/>分别表示查询向量、键向量和值向量,/>、/> 和/>是线性变换的权重矩阵,/>是键向量的维度,是一种用于多类别分类问题的激活函数,/>表示转置;
将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果。
5.根据权利要求4所述的基于多特征融合的智能合约漏洞检测系统,其特征在于,所述模式图提取模块内TMP图神经网络模型如下:
消息传播阶段,用于让每个节点接收和发送信息,以学习和更新每个节点的状态,公式如下:
其中,表示当前节点的状态,/>表示起始节点的隐藏状态,/>表示边的类型,/>表示网络参数,/>表示偏置项;
其中,为双曲正切激活函数,/>是一种用于多类别分类问题的激活函数,/>为过度系数,/>表示权重矩阵,/>表示结束节点的隐藏状态,/>表示更新后的结束节点的隐藏状态,/>、/>表示偏置项;
读出阶段,用于生成最终预测标签,检测是否存在漏洞,公式如下:
其中,表示最终预测标签,/>是一种激活函数,/>表示主节点的数量,/>是节点/>在处理结束后的状态,/>是节点/>最开始的状态,/>和/>是简化的模型参数;
分类模块内将二次专家模式特征和全局图特征输入至预先建立的交叉注意力编码器网络模型内进行特征融合,输出得到融合特征,将融合特征输入至预先建立的多层感知器分类模型内,输出得到待测智能合约的检测结果的过程包括:
将三种局部专家模式特征全局图特征进行拼接得到250维的特征,作为融合特征;
将融合特征输入预先建立的多层感知机分类模型,得到待测智能合约的检测结果。
6.一种基于多特征融合的智能合约漏洞检测设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个所述程序被一个或多个所述处理器执行,使得一个或多个所述处理器实现如权利要求1-3中任一所述的基于多特征融合的智能合约漏洞检测方法。
CN202410393695.8A 2024-04-02 2024-04-02 基于多特征融合的智能合约漏洞检测方法及系统 Active CN117972732B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410393695.8A CN117972732B (zh) 2024-04-02 2024-04-02 基于多特征融合的智能合约漏洞检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410393695.8A CN117972732B (zh) 2024-04-02 2024-04-02 基于多特征融合的智能合约漏洞检测方法及系统

Publications (2)

Publication Number Publication Date
CN117972732A CN117972732A (zh) 2024-05-03
CN117972732B true CN117972732B (zh) 2024-06-07

Family

ID=90850013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410393695.8A Active CN117972732B (zh) 2024-04-02 2024-04-02 基于多特征融合的智能合约漏洞检测方法及系统

Country Status (1)

Country Link
CN (1) CN117972732B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118282876B (zh) * 2024-06-04 2024-08-30 烟台大学 一种不完备异构以太坊网络的异常节点检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035842A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于编码解码器的智能合约漏洞检测可解释性方法
WO2021037196A1 (zh) * 2019-08-28 2021-03-04 杭州趣链科技有限公司 智能合约代码漏洞检测方法、装置、计算机设备和存储介质
CN115499164A (zh) * 2022-08-17 2022-12-20 哈尔滨工业大学(深圳) 一种基于图神经网络的多特征融合区块链智能合约漏洞检测方法、装置、计算机及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021037196A1 (zh) * 2019-08-28 2021-03-04 杭州趣链科技有限公司 智能合约代码漏洞检测方法、装置、计算机设备和存储介质
CN112035842A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于编码解码器的智能合约漏洞检测可解释性方法
CN115499164A (zh) * 2022-08-17 2022-12-20 哈尔滨工业大学(深圳) 一种基于图神经网络的多特征融合区块链智能合约漏洞检测方法、装置、计算机及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DC-Hunter:一种基于字节码匹配的危险智能合约检测方案;韩松明;梁彬;黄建军;石文昌;;信息安全学报;20200515(03);全文 *
韩松明 ; 梁彬 ; 黄建军 ; 石文昌 ; .DC-Hunter:一种基于字节码匹配的危险智能合约检测方案.信息安全学报.2020,(03),全文. *

Also Published As

Publication number Publication date
CN117972732A (zh) 2024-05-03

Similar Documents

Publication Publication Date Title
Tann et al. Towards safer smart contracts: A sequence learning approach to detecting security threats
CN117972732B (zh) 基于多特征融合的智能合约漏洞检测方法及系统
CN111966817B (zh) 基于深度学习及代码上下文结构和文本信息的api推荐方法
CN114547611A (zh) 一种基于多模态特征的智能合约庞氏骗局检测方法及系统
CN113904844B (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
Narayana et al. Automation and smart materials in detecting smart contracts vulnerabilities in Blockchain using deep learning
CN111861463A (zh) 基于区块链和人工智能的信息智能识别方法及大数据平台
Saheb Nasagh et al. A fuzzy genetic automatic refactoring approach to improve software maintainability and flexibility
Wang et al. Gvd-net: Graph embedding-based machine learning model for smart contract vulnerability detection
Xu et al. Vulnerability Detection of Ethereum Smart Contract Based on SolBERT-BiGRU-Attention Hybrid Neural Model.
CN112613072B (zh) 基于档案大数据的信息管理方法、管理系统及管理云平台
Mohamed et al. Enhancing test cases prioritization for internet of things based systems using Search-based technique
Cai et al. Fine-grained smart contract vulnerability detection by heterogeneous code feature learning and automated dataset construction
Yang et al. A novel Android malware detection method with API semantics extraction
Zhen et al. DA-GNN: A smart contract vulnerability detection method based on Dual Attention Graph Neural Network
CN116663018A (zh) 一种基于代码可执行路径的漏洞检测方法及装置
Duan et al. A New Smart Contract Anomaly Detection Method by Fusing Opcode and Source Code Features for Blockchain Services
Yu et al. Information Security Field Event Detection Technology Based on SAtt‐LSTM
Zheng et al. An approach for predicting multiple-type overflow vulnerabilities based on combination features and a time series neural network algorithm
Satapathy et al. Automated software engineering: a deep learning-based approach
Ouyang et al. Binary vulnerability mining based on long short-term memory network
Lin et al. The Best of Both Worlds: Integrating Semantic Features with Expert Features for Smart Contract Vulnerability Detection
CN112581140B (zh) 一种智能合约验证方法、计算机存储介质
Hettab et al. Automatic test cases generation from UML activity diagrams using graph transformation
Wang et al. Low-code vulnerability identification based on TextCNN

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant