CN114297665A - 基于深度学习的智能合约漏洞检测方法和装置 - Google Patents
基于深度学习的智能合约漏洞检测方法和装置 Download PDFInfo
- Publication number
- CN114297665A CN114297665A CN202111659465.4A CN202111659465A CN114297665A CN 114297665 A CN114297665 A CN 114297665A CN 202111659465 A CN202111659465 A CN 202111659465A CN 114297665 A CN114297665 A CN 114297665A
- Authority
- CN
- China
- Prior art keywords
- code
- edge
- heterogeneous network
- training
- vulnerability
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于深度学习的智能合约漏洞检测方法和装置,涉及漏洞检测技术领域,该方法包括:首先对待检测的智能合约代码进行处理,生成待测代码;然后根据待测代码生成待测异构网络图;再利用训练好的神经网络模型对待测异构网络图进行漏洞检测,生成检测结果,通过构建异构图利用模型进行漏洞检测,缓解了现有技术中存在的准确性低、灵活性低的技术问题,达到了提高检测结果准确性、扩大适用范围的技术效果。
Description
技术领域
本发明涉及漏洞检测技术领域,尤其是涉及一种基于深度学习的智能合约漏洞检测方法和装置。
背景技术
随着区块链经济的泡沫化日益严重,作为区块链2.0的代表的以太坊逐渐受到越来越多的关注。从目前来看,以智能合约为主要工具的以太坊因为智能合约产生的失误已经遭受过许多次损失惨重的攻击,并且由于其货币本身具有的隐私性,导致被非法盗取的货币几乎很难找回。
因此,智能合约安全的重要性显而易见,但是目前却因为编写智能合约所用到的Solidity代码可读性差、代码繁琐且复杂,并且编写代码的人也很难能想到未来合约所受到的攻击,就使得很容易编写出带有漏洞的合约。为了避免会产生更多的损失,以及为了不断巩固区块链发展生态,对智能合约进行代码漏洞检测变得极为必要。
目前,针对智能合约的漏洞,通常使用经典静态分析和动态执行技术进行识别,此类检测技术基本上依赖于几个固定的专家规则,存在容易出错的固有风险。并且由于使用的范围比较固定,不具备很好的灵活性,当规则暴露时,狡猾的攻击者可以轻松绕过固定模式以规避风险。也就是说,现有针对智能合约的漏洞检测方法存在准确性低、灵活性低的技术问题。
发明内容
本发明的目的在于提供一种基于深度学习的智能合约漏洞检测方法和装置,以缓解现有技术中存在的准确性低、灵活性低的技术问题。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种基于深度学习的智能合约漏洞检测方法,包括:对待检测的智能合约代码进行处理,生成待测代码;
根据上述待测代码生成待测异构网络图;上述待测异构网络图包括多个第一节点以及连接上述第一节点的第一边;上述第一节点的信息包括上述待测代码的变量重要性指标;
利用训练好的神经网络模型对上述待测异构网络图进行漏洞检测,生成检测结果。
在一些可能的实施方式中,上述变量重要性指标包括:系统内在定义函数、代码自定义函数和代码自变量。
在一些可能的实施方式中,上述第一边的信息包括:边类型和边特征;上述边类型包括控制边和数据边;上述边特征用于表示上述边是否存在漏洞合约。
在一些可能的实施方式中,对待检测的智能合约代码进行处理,生成初始待测代码的步骤之前,还包括:
对预先获取的智能合约代码进行处理,生成训练代码;
根据上述训练代码生成训练异构网络图;上述训练异构网络图包括多个第二节点以及连接上述第二节点的第二边;上述第二节点的信息包括上述训练代码的变量重要性指标;
利用上述训练异构网络图对待训练的神经网络模型进行训练,得到训练后的神经网络模型。
在一些可能的实施方式中,根据上述训练代码生成训练异构网络图的步骤,包括:
根据上述训练代码生成合约代码逻辑图G和权重更新图G’;
以三元组子图的形式并在满足节点类型和边特征一致的条件下,对上述权重更新图G’的三元组子图与上述合约代码逻辑图G进行匹配合并,生成训练异构网络图。
在一些可能的实施方式中,利用上述训练异构网络图对待训练的神经网络模型进行训练的步骤,包括:
对上述权重更新图G′进行边特征的缩放处理;
在上述训练异构网络图中提取含有相同边特征类型的智能合约的漏洞子图,并计算每条边存在漏洞的概率。
在一些可能的实施方式中,利用训练好的神经网络模型对上述待测异构网络图进行漏洞检测,生成检测结果,包括:确定上述待测异构网络图中每条边的漏洞特征信息;上述漏洞特征信息包括存在漏洞的概率;
基于上述漏洞特征信息,确定目标边序列;上述目标边序列包括多条目标边,上述目标边满足预先确定的存在漏洞的概率;
将上述目标边序列输入训练好的神经网络模型中,生成检测结果。
第二方面,本发明实施例提供了一种基于深度学习的智能合约漏洞检测装置,包括:
第一生成模块,用于对待检测的智能合约代码进行处理,生成待测代码;
第二生成模块,用于根据上述待测代码生成待测异构网络图;上述待测异构网络图包括多个第一节点以及连接上述第一节点的第一边;上述第一节点的信息包括上述待测代码的变量重要性指标;
检测模块,用于利用训练好的神经网络模型对上述待测异构网络图进行漏洞检测,生成检测结果。
第三方面,本发明实施例提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述第一方面任一项所述的方法。
本发明提供了一种基于深度学习的智能合约漏洞检测方法和装置,该方法包括:首先对待检测的智能合约代码进行处理,生成待测代码;然后根据待测代码生成待测异构网络图;再利用训练好的神经网络模型对待测异构网络图进行漏洞检测,生成检测结果。通过构建异构图利用模型进行漏洞检测,缓解了现有技术中存在的准确性低、灵活性低的技术问题,达到了提高检测结果准确性、扩大适用范围的技术效果。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于深度学习的智能合约漏洞检测方法的流程示意图;
图2为本发明实施例提供的一种异构网络图的原理示意图;
图3为本发明实施例提供的一种三元组子图进行边合并的原理示意图;
图4为本发明实施例提供的一种基于深度学习的智能合约漏洞检测方法中代码图形化为异构图的结果示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
随着区块链经济的泡沫化日益严重,作为区块链2.0的代表的以太坊逐渐受到越来越多的关注。以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台,可以利用智能合约使用户编写自己想要的合同,行使用户所定之规定。但因为内在问题导致存在漏洞的智能合约一旦上链完成就无法再进行修改,这就给攻击者提供了机会。
从目前来看,以智能合约为主要工具的以太坊因为智能合约产生的失误已经遭受过许多次损失惨重的攻击,并且由于其货币本身具有的隐私性,导致被非法盗取的货币几乎很难找回,这就使得攻击者一旦找到漏洞就可以使用一些方法进行攻击,并且基本全身而退,不留一点痕迹。
因此智能合约安全的重要性显而易见,但是目前却因为编写智能合约所用到的Solidity代码可读性差、代码繁琐且复杂,并且编写代码的人也很难能想到未来合约所受到的攻击,就使得很容易编写带有漏洞的合约,有些漏洞容易发现但仍存在一些很深处的漏洞。
为了避免会产生更多的损失,以及为了不断巩固区块链发展生态,对智能合约进行代码漏洞检测变得极为必要。
目前针对智能合约的漏洞基本有两种检测的方式,一种是使用经典静态分析和动态执行技术识别漏洞,此类检测技术基本上依赖于几个固定的专家规则,存在容易出错的固有风险。并且由于使用的范围比较固定,不具备很好的灵活性,当规则暴露时,狡猾的攻击者可以轻松绕过固定模式以规避风险。另一种是利用深度学习模式处理复杂的合同数据,其准确性大大提高,运用范围广泛,但由于其内部是黑盒模式,导致外部很难检测出其内部对于漏洞的检测规则是什么,具有很强的隐蔽性。
基于此,本发明实施例提供了一种基于深度学习的智能合约漏洞检测方法和装置,以缓解上述问题。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种基于深度学习的智能合约漏洞检测方法进行详细介绍,参见图1所示的一种基于深度学习的智能合约漏洞检测方法的流程示意图,该方法可以由电子设备执行,主要包括以下步骤:
S110:对待检测的智能合约代码进行处理,生成待测代码;
在本发明实施例中,通过Geth等客户端获取用户提交的智能合约代码,传输给终端服务器进行数据处理,对于智能合约地址在Etherscan浏览器获得其智能合约的代码,将字节码反编译成操作码,再将操作码统一进行逆向处理成伪代码作为这个网络的输入。
S120:根据待测代码生成待测异构网络图;
其中,待测异构网络图包括多个第一节点以及连接第一节点的第一边;第一节点的信息包括待测代码的变量重要性指标。
在一种实施例中,变量重要性指标包括:系统内在定义函数、代码自定义函数和代码自变量。
第一边的信息包括:边类型和边特征;边类型包括控制边和数据边;边特征用于表示边是否存在漏洞合约。
在本发明实施例中,对输入的代码进行构建异构网络G=(V,E)的构建。其中,V代表节点集合,主要包含两种类型的节点:主要节点,次要节点。主要节点:F表示系统内在定义函数的集合、P表示代码自定义函数的集合。次要节点:Q表示代码自变量的集合。参见图2所示的一种异构网络图的原理示意图。
E表示连边,为节点之间的传递关系,边的类型用Te表示,边的类型有控制边和数据边两种类型,Te=0表示这条边为控制边,Te=1表示这条边为数据边。每条边除了类型外,还包含这条边所对应的特征W,U,其中W不为零代表这个合约为无漏洞合约,U不为零代表有漏洞合约边,即:
V∈{F,P,Q}
E=(W,U,Te)
S130:利用训练好的神经网络模型对待测异构网络图进行漏洞检测,生成检测结果。
在一种实施例中,上述步骤S130包括:(1)确定待测异构网络图中每条边的漏洞特征信息;漏洞特征信息包括存在漏洞的概率;(2)基于漏洞特征信息,确定目标边序列;目标边序列包括多条目标边,目标边满足预先确定的存在漏洞的概率;(3)将目标边序列输入训练好的神经网络模型中,生成检测结果。
本发明提供了一种基于深度学习的智能合约漏洞检测方法,该方法包括:首先对待检测的智能合约代码进行处理,生成待测代码;然后根据待测代码生成待测异构网络图;再利用训练好的神经网络模型对待测异构网络图进行漏洞检测,生成检测结果。通过构建异构图利用模型进行漏洞检测,缓解了现有技术中存在的准确性低、灵活性低的技术问题,达到了提高检测结果准确性、扩大适用范围的技术效果。
在一种实施例中,在步骤S110之前,上述方法还可以包括训练阶段,具体步骤包括:
(1)对预先获取的智能合约代码进行处理,生成训练代码;
(2)根据训练代码生成训练异构网络图;
其中,训练异构网络图包括多个第二节点以及连接第二节点的第二边;第二节点的信息包括训练代码的变量重要性指标。
变量重要性指标可以包括:系统内在定义函数、代码自定义函数和代码自变量。第二边的信息包括:边类型和边特征;边类型包括控制边和数据边;边特征用于表示边是否存在漏洞合约。
作为一个具体的示例,根据训练代码生成训练异构网络图的步骤,包括:
首先根据训练代码生成合约代码逻辑图G和权重更新图G’;
然后以三元组子图的形式并在满足节点类型和边特征一致的条件下,对权重更新图G’的三元组子图与合约代码逻辑图G进行匹配合并,生成训练异构网络图。
(3)利用训练异构网络图对待训练的神经网络模型进行训练,得到训练后的神经网络模型。
具体包括:对权重更新图G′进行边特征的缩放处理;在训练异构网络图中提取含有相同边特征类型的智能合约的漏洞子图,并计算每条边存在漏洞的概率。
作为一个具体的示例,本发明实施例提供的一种基于深度学习的智能合约漏洞检测方法可以包括:深度学习模型训练阶段和模型应用阶段。
具体的,模型训练阶段可以包括:输入作为训练的样本数据、预处理、构建异构网络图、子图匹配、模型训练、生成训练好的transformer模型。
模型应用阶段可以包括:输入待测样本数据、预处理、构建异构网络图、子图匹配、输入训练好的transformer模型进行检测、判断是否有漏洞(是,则输出漏洞类型;否,则输出结果无漏洞)。
另外作为一个具体的示例,本发明实施例提供了一种基于深度学习的智能合约漏洞检测方法,具体包括:
S11:通过Geth等客户端获取用户提交的智能合约代码,传输给终端服务器进行数据处理,对于智能合约地址在Etherscan浏览器获得其智能合约的代码,将字节码反编译成操作码,再将操作码统一进行逆向处理成伪代码作为这个网络的输入
S21:对代码构建成异构网络:对输入的代码进行构建异构网络G=(V,E)的构建。其中,V代表节点集合,主要包含两种类型的节点:主要节点,次要节点。主要节点:F表示系统内在定义函数的集合、P表示代码自定义函数的集合。次要节点:Q表示代码自变量的集合。E表示连边,为节点之间的传递关系,边的类型用Te表示,边的类型有控制边和数据边两种类型,Te=0表示这条边为控制边,Te=1表示这条边为数据边。每条边除了类型外,还包含这条边所对应的特征W,U,其中W不为零代表这个合约为无漏洞合约,U不为零代表有漏洞合约边。
V∈{F,P,Q}
E=(W,U,Te)
S22:构建检测集。参见图3所示的三元组子图进行边合并的原理图示意图,将收集来的合约代码,按照上述步骤构建为异构网络G。G为合约代码逻辑图,G′为权重更新图,其中无漏洞的智能合约边的特征W为1,U为0;有漏洞的智能合约边特征W为0,U为1。遍历合并规则如下:
1).在待更新的合约代码逻辑图G中选取F节点,与权重更新图G′中的相同F节点匹配,循环遍历更新直至将所有节点更新完毕;
2).将权重更新F节点为中心节点,以三元组子图的形式并在满足节点类型和边特征Te一致的条件下,对待G′的三元组子图与已G进行匹配合并;
3).对于未能更新的节点,将其节点名为Inu,其中n为合约代码逻辑图G名称,u为节点名称,更新完之后对边进行处理。其中更新边特征为Dk;
Dk=(D′k,Te)
S31:对权重更新图G′进行边特征到缩放处理,其中每条边的特征缩放规则Dnk,Dsk如下所示,其中N为无漏洞的智能合约的个数,S为初始化为一个数组,如下所示:
Sj=[0,0,0,0,0]
其中,数组S的下标索引表示不同类型漏洞合约,用j表示。例如Sj=3=4就代表漏洞代号为3在这条边出现的次数为4次即Sj=[0,0,0,4,0],k为智能合约已合并图中第k条边。
具体如图2所示。
将已合并在图中所进行合并的含有相同类型的智能合约的漏洞子图提取出来,并计算每条边存在漏洞的概率Pk,此处Pk为1*5的数组。I为取出子图的第I条边,此处的Pk为:
S32:对边权重处理成Pk,Xk′为由边满足Pk所构成的序列,Xk′|j为漏洞为j所组成的序列,Pk|j为Pk中漏洞为j的连接值,并将序列Xk′|j输入到transformer中进行训练。其中序列Xk′|j的选取Pk|j≥(S/N)的为连边和节点所构成,其中j为漏洞类型,k’为在满足漏洞类型为j所构成第k条链。具体如下:
Xk′|j=(V,Pi)j=h h=0,...,5
含有不同漏洞的智能合约对应不同的one-hot编码。例如正常合约对应的独热编码为y=[1,0,0,0,0,0],重入漏洞所对应的独热编码为y=[0,1,0,0,0,0],时间戳漏洞所对应的独热编码为y=[0,1,0,0,0,0]等。
S41:对与待检测的智能合约先进行如上S21的第一步即将其代码构建成为异构网络,并根据主要节点为主在智能合约图里面进行子图匹配,将匹配出来的序列输入到训练好的transformer模型里面进行判断。
例如可重入代码:
将上述代码图形化为异构图的结果如图4所示。本发明实施例提供了一种基于深度学习的智能合约漏洞检测装置,该装置包括:第一生成模块,用于对待检测的智能合约代码进行处理,生成待测代码;
第二生成模块,用于根据待测代码生成待测异构网络图;待测异构网络图包括多个第一节点以及连接第一节点的第一边;第一节点的信息包括待测代码的变量重要性指标;
检测模块,用于利用训练好的神经网络模型对待测异构网络图进行漏洞检测,生成检测结果。
本申请实施例所提供的基于深度学习的智能合约漏洞检测装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。本申请实施例提供的基于深度学习的智能合约漏洞检测装置与上述实施例提供的基于深度学习的智能合约漏洞检测方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本申请实施例还提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图5为本申请实施例提供的一种电子设备的结构示意图,该电子设备400包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
对应于上述方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述方法的步骤。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于深度学习的智能合约漏洞检测方法,其特征在于,包括:
对待检测的智能合约代码进行处理,生成待测代码;
根据所述待测代码生成待测异构网络图;所述待测异构网络图包括多个第一节点以及连接所述第一节点的第一边;所述第一节点的信息包括所述待测代码的变量重要性指标;
利用训练好的神经网络模型对所述待测异构网络图进行漏洞检测,生成检测结果。
2.根据权利要求1所述的方法,其特征在于,所述变量重要性指标包括:系统内在定义函数、代码自定义函数和代码自变量。
3.根据权利要求2所述的方法,其特征在于,所述第一边的信息包括:边类型和边特征;所述边类型包括控制边和数据边;所述边特征用于表示所述边是否存在漏洞合约。
4.根据权利要求1所述的方法,其特征在于,对待检测的智能合约代码进行处理,生成初始待测代码的步骤之前,还包括:
对预先获取的智能合约代码进行处理,生成训练代码;
根据所述训练代码生成训练异构网络图;所述训练异构网络图包括多个第二节点以及连接所述第二节点的第二边;所述第二节点的信息包括所述训练代码的变量重要性指标;
利用所述训练异构网络图对待训练的神经网络模型进行训练,得到训练后的神经网络模型。
5.根据权利要求4所述的方法,其特征在于,根据所述训练代码生成训练异构网络图的步骤,包括:
根据所述训练代码生成合约代码逻辑图G和权重更新图G’;
以三元组子图的形式并在满足节点类型和边特征一致的条件下,对所述权重更新图G’的三元组子图与所述合约代码逻辑图G进行匹配合并,生成训练异构网络图。
6.根据权利要求5所述的方法,其特征在于,利用所述训练异构网络图对待训练的神经网络模型进行训练的步骤,包括:
对所述权重更新图G′进行边特征的缩放处理;
在所述训练异构网络图中提取含有相同边特征类型的智能合约的漏洞子图,并计算每条边存在漏洞的概率。
7.根据权利要求1所述的方法,其特征在于,利用训练好的神经网络模型对所述待测异构网络图进行漏洞检测,生成检测结果,包括:
确定所述待测异构网络图中每条边的漏洞特征信息;所述漏洞特征信息包括存在漏洞的概率;
基于所述漏洞特征信息,确定目标边序列;所述目标边序列包括多条目标边,所述目标边满足预先确定的存在漏洞的概率;
将所述目标边序列输入训练好的神经网络模型中,生成检测结果。
8.一种基于深度学习的智能合约漏洞检测装置,其特征在于,包括:
第一生成模块,用于对待检测的智能合约代码进行处理,生成待测代码;
第二生成模块,用于根据所述待测代码生成待测异构网络图;所述待测异构网络图包括多个第一节点以及连接所述第一节点的第一边;所述第一节点的信息包括所述待测代码的变量重要性指标;
检测模块,用于利用训练好的神经网络模型对所述待测异构网络图进行漏洞检测,生成检测结果。
9.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659465.4A CN114297665A (zh) | 2021-12-31 | 2021-12-31 | 基于深度学习的智能合约漏洞检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659465.4A CN114297665A (zh) | 2021-12-31 | 2021-12-31 | 基于深度学习的智能合约漏洞检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114297665A true CN114297665A (zh) | 2022-04-08 |
Family
ID=80972606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111659465.4A Pending CN114297665A (zh) | 2021-12-31 | 2021-12-31 | 基于深度学习的智能合约漏洞检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297665A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225527A (zh) * | 2022-06-10 | 2022-10-21 | 广州大学 | 一种人工免疫技术的区块链智能合约安全风险评估方法 |
CN117201138A (zh) * | 2023-09-13 | 2023-12-08 | 烟台大学 | 一种基于漏洞子图的智能合约漏洞检测方法、系统和设备 |
-
2021
- 2021-12-31 CN CN202111659465.4A patent/CN114297665A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225527A (zh) * | 2022-06-10 | 2022-10-21 | 广州大学 | 一种人工免疫技术的区块链智能合约安全风险评估方法 |
CN117201138A (zh) * | 2023-09-13 | 2023-12-08 | 烟台大学 | 一种基于漏洞子图的智能合约漏洞检测方法、系统和设备 |
CN117201138B (zh) * | 2023-09-13 | 2024-02-13 | 烟台大学 | 一种基于漏洞子图的智能合约漏洞检测方法、系统和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426722B (zh) | Sql注入缺陷检测方法、系统、设备及存储介质 | |
CN109347787B (zh) | 一种身份信息的识别方法及装置 | |
US9983984B2 (en) | Automated modularization of graphical user interface test cases | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
CN114297665A (zh) | 基于深度学习的智能合约漏洞检测方法和装置 | |
CN107204956B (zh) | 网站识别方法及装置 | |
CN113381962B (zh) | 一种数据处理方法、装置和存储介质 | |
CN107992738B (zh) | 一种账号登录异常检测方法、装置及电子设备 | |
CN103577323B (zh) | 基于动态关键指令序列胎记的软件抄袭检测方法 | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN109145080B (zh) | 一种文本指纹获得方法及装置 | |
CN112860841A (zh) | 一种文本情感分析方法、装置、设备及存储介质 | |
CN112085056B (zh) | 目标检测模型生成方法、装置、设备及存储介质 | |
CN108961019B (zh) | 一种用户账户的检测方法和装置 | |
CN112800427A (zh) | webshell检测方法、装置、电子设备和存储介质 | |
CN112699382A (zh) | 物联网网络安全风险的评估方法、装置及计算机存储介质 | |
CN112383554B (zh) | 接口流量异常检测方法、装置、终端设备及存储介质 | |
CN111090807A (zh) | 一种基于知识图谱的用户识别方法及装置 | |
CN105825084B (zh) | 用于对具有图像的对象进行匹配检测的方法 | |
CN110909361A (zh) | 一种漏洞检测方法,装置和计算机设备 | |
CN111461164A (zh) | 样本数据集的扩容方法及模型的训练方法 | |
CN106874340B (zh) | 一种网页地址分类方法及装置 | |
US11762730B2 (en) | Selection of outlier-detection programs specific to dataset meta-features | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN113918467A (zh) | 金融系统测试方法、装置、设备及存储介质 |
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 |