CN117556425B - 基于图神经网络的智能合约漏洞检测方法、系统和设备 - Google Patents
基于图神经网络的智能合约漏洞检测方法、系统和设备 Download PDFInfo
- Publication number
- CN117556425B CN117556425B CN202311579362.6A CN202311579362A CN117556425B CN 117556425 B CN117556425 B CN 117556425B CN 202311579362 A CN202311579362 A CN 202311579362A CN 117556425 B CN117556425 B CN 117556425B
- Authority
- CN
- China
- Prior art keywords
- node
- feature vector
- feature
- vector
- graph
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 74
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 26
- 239000013598 vector Substances 0.000 claims abstract description 234
- 230000002776 aggregation Effects 0.000 claims abstract description 58
- 238000004220 aggregation Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 58
- 238000000605 extraction Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 15
- 239000011159 matrix material Substances 0.000 claims description 11
- 230000011218 segmentation Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 238000007499 fusion processing Methods 0.000 claims description 6
- 230000007613 environmental effect Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000036962 time dependent Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013401 experimental design Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及网络安全技术领域,具体为基于图神经网络的智能合约漏洞检测方法、系统和设备,该检测方法将基于操作码基础块中的特征指令得到的特征指令向量,进行语义特征提取处理,得到语义特征向量;同时,提取控制流图中基本块之间的边关系,得到关系特征向量;然后将语义特征向量与关系特征向量进行融合后,根据基本块的位置进行分割,得到每个基本块对应的节点特征向量;接着,将节点特征向量集进行邻居节点信息聚合和自注意力处理,获得的图特征向量经分类处理,得到漏洞检测结果;该检测方法具有较高的精确率、召回率和F1分数。
Description
技术领域
本发明涉及网络安全技术领域,具体为基于图神经网络的智能合约漏洞检测方法、系统和设备。
背景技术
传统的智能合约漏洞检测方法包括模糊测试、符号执行和形式化验证为三种最常用的技术。模糊测试是一种较为高效的软件分析技术,其核心思想是为程序提供大量测试样例,在程序执行过程中监控程序异常行为,以发现程序漏洞;符号执行是一种自动化漏洞检测技术,目前被广泛用于智能合约的漏洞检测;形式化验证技术是通过严谨可验证的描述语言或逻辑来描述程序,以便对其进行严格的数学推理和验证,从而获得漏洞检测结果。然而,这些检测方法存在以下不足:1)高误报率,可能产生大量的误报,即错误地标记一些合法代码或行为为错误或漏洞;2)易发生状态空间爆炸和执行路径指数级增长,覆盖漏洞种类不全面;3)自定义漏洞检测的建模需要一定的人工经验,切探测出的漏洞不一定是实际可达的。上述出现不足造成目前智能合约的检测难度大,检测结果的精确率低。
发明内容
本发明的目的是提供一种基于图神经网络的智能合约漏洞检测方法、系统和设备。
本发明技术方案如下:
一种基于图神经网络的智能合约漏洞检测方法,包括如下操作:
S1、获取待检智能合约的字节码,所述字节码经反编译处理,得到操作码序列;基于所述操作码序列,得到操作码基本块和控制流图;获取所述操作码基本块中的特征指令,基于所述特征指令,得到特征指令向量;
S2、所述特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的所述控制流图中基本块之间的边关系,得到关系特征向量;所述语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;
S3、所述节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;所述节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;
S4、所述图特征向量经分类处理,得到漏洞检测结果。
所述S3中邻居节点信息聚合处理的操作具体为:获取所述节点特征向量,与当前邻居节点节点特征向量的关联度,得到当前邻居节点关联度;基于所述当前邻居节点关联度,以及所有邻居节点关联度,得到当前邻居节点关联度注意力系数;所述节点特征向量,与所有邻居节点关联度注意力系数分别进行相乘后,进行求和处理,得到所述节点聚合特征向量。
所述S3中得到图特征向量的操作具体为:获取所述节点聚合特征向量的潜在权重,得到节点潜在权重;所述节点潜在权重经归一化处理,得到节点规范化注意权重;所述节点规范化注意权重与节点聚合特征向量相乘,得到节点注意力特征;所有的节点注意力特征经求和处理,得到所述图特征向量。
所述S1中得到特征指令向量的操作具体为:所述特征指令经分词和嵌入初始化处理,得到所述特征指令向量。
所述S1中所述特征指令包括:算术指令、和/或堆栈指令、和/或环境指令、和/或控制指令、和/或区块链系统指令。
所述S4中分类处理的操作具体为:将所述图特征向量,与分类数据库中的标准图特征向量进行特征匹配,获取匹配值;当匹配值大于阈值后,输出对应标准图特征向量的漏洞属性,得到所述漏洞检测结果。
所述S2中语义特征提取处理的操作可通过如下公式实现:
Zt=σ(Wz·[ht-1,xt],
Rt=σ(Wr·[ht-1,xt]),
xt为所述特征指令向量,ht-1为t-1时刻的语义特征向量,Wz为更新门权重矩阵,σ()为sigmod函数,Zt为t时刻的更新门输出,Wr为重置门权重矩阵,Rt为t时刻的重置门输出,tanh()双曲正切函数,⊙为元素乘法,为t时刻的中间语义特征向量,ht为t时刻的语义特征向量。
一种基于图神经网络的智能合约漏洞检测系统,包括:
特征指令向量生成模块,用于获取待检智能合约的字节码,所述字节码经反编译处理,得到操作码序列;基于所述操作码序列,得到操作码基本块和控制流图;获取所述操作码基本块中的特征指令,基于所述特征指令,得到特征指令向量;
节点特征向量集生成模块,用于所述特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的所述控制流图中基本块之间的边关系,得到关系特征向量;所述语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;
图特征向量生成模块,用于所述节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;所述节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;
漏洞检测结果生成模块,用于所述图特征向量经分类处理,得到漏洞检测结果。
一种基于图神经网络的智能合约漏洞检测设备,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现上述的基于图神经网络的智能合约漏洞检测方法。
一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现上述的基于图神经网络的智能合约漏洞检测方法。
本发明的有益效果在于:
本发明提供的一种基于图神经网络的智能合约漏洞检测方法,将基于操作码基础块中的特征指令得到的特征指令向量,进行语义特征提取处理,得到语义特征向量;同时,提取控制流图中基本块之间的边关系,得到关系特征向量;然后将语义特征向量与关系特征向量进行融合后,根据基本块的位置进行分割,得到每个基本块对应的节点特征向量;接着,将节点特征向量集进行邻居节点信息聚合和自注意力处理,获得的图特征向量经分类处理,得到漏洞检测结果;该检测方法具有较高的精确率、召回率和F1分数。
附图说明
通过阅读下文优选实施方式的详细描述,本申请的方案和优点对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
在附图中:
图1为实施例中检测方法的流程示意图。
具体实施方式
下面将结合附图更详细地描述本公开的示例性实施方式。
本实施例提供了一种基于图神经网络的智能合约漏洞检测方法,参见图1,包括如下操作:
S1、获取待检智能合约的字节码,所述字节码经反编译处理,得到操作码序列;基于所述操作码序列,得到操作码基本块和控制流图;获取所述操作码基本块中的特征指令,基于所述特征指令,得到特征指令向量;
S2、所述特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的所述控制流图中基本块之间的边关系,得到关系特征向量;所述语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;
S3、所述节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;所述节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;
S4、所述图特征向量经分类处理,得到漏洞检测结果。
S1、获取待检智能合约的字节码,字节码经反编译处理,得到操作码序列;基于操作码序列,得到操作码基本块和控制流图;获取操作码基本块中的特征指令,基于特征指令,得到特征指令向量。
获取待检智能合约的字节码。以太坊上部署待检智能合约时,智能合约以字节码的形式运行。为了更准确地进行漏洞检测,使用生成的待检智能合约的字节码作为基础。为了避免因为不同的编译器版本导致字节码不同从而干扰漏洞检测的效果,本实施例选择使用vandal编译工具中的sol命令编译智能合约,通过程序识别智能合约的版本,严格按照每个智能合约源代码中声明的编译器版本进行编译,最终生成字节码。
反编译字节码为操作码序列。本实施例选择本文使用vandal工具对字节码进行反编译,生成操作码序列。
基于操作码序列,得到操作码基本块和控制流图。根据操作码序列当中的指令,对操作码序列进行划分,确定由操作码序列组成的不同的操作码基本块(检查基本块),每个基本块之间是相互独立的,也就是说,每个基本块只能从该基本块中操作码序列的第一条操作指令进入,从跳转或终止指令(参见表1,如STOP、JUMP、JUMPI、RETURN、REVERT、SELFDESTRUCT等)结尾,两个相邻的基本块间通过有向边来表示连接关系。通过解析基础块中的跳转指令(JUMP和JUMPI),并根据各个基础块的跳转关系,将基础块连接起来,两个相邻的基本块间通过有向边来表示连接关系,生成待检智能合约的控制流图。
表1基础块中的跳转指令
智能合约中指令一般会在150条左右,为提高计算效率,本文选取其中45条可以反映智能合约的执行逻辑和语义,且与智能合约操作码漏洞识别任务相关的指令,这些指令称为特征指令。参见表2,特征指令包括:算术指令、和/或堆栈指令、和/或环境指令、和/或控制指令、和/或区块链系统指令。
表2操作码指令分类
得到特征指令向量的操作为:特征指令经分词和嵌入初始化处理后,进行拼接处理,得到特征指令向量。具体为:将从每个操作码基本块中提取的特征指令进行分词,将操作码基本块中有关于特征指令的信息离散化,得到基本块特征指令分组特征;接着,将基本块特征指令分组特征,进行嵌入初始化(可通过embedding初始化实现),变为0或1的词向量值形式;最后,根据基本块的执行顺序,将词向量值形式的基本块特征指令分组特征拼接到一起,形成特征指令向量。
S2、特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的控制流图中基本块之间的边关系,得到关系特征向量;语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集。
语义特征提取处理的操作可通过如下公式实现:
Zt=σ(Wz·[ht-1,xt],
Rt=σ(Wr·[ht-1,xt]),
xt为特征指令向量,ht-1为t-1时刻的语义特征向量,Wz为更新门权重矩阵,σ()为sigmod函数,Zt为t时刻的更新门输出,Zt的取值为0或1,Wr为重置门权重矩阵,Rt为t时刻的重置门输出,tanh()双曲正切函数,可将数据变为[-1,1]范围的数值,⊙为元素乘法,为t时刻的中间语义特征向量,ht为t时刻的语义特征向量。
通过语义特征提取处理,能够有效地将特征指令向量转化为,具有长距离依赖、且便于提取特征的基本块的语义特征向量,便于后续的计算和分析
得到关系特征向量。获取控制流图中,不同基本块之间的边关系,组成关系特征向量。获取边关系的操作可通过vandal工具实现。
最后将语义特征向量与关系特征向量,根据对应基本块位置,进行拼接融合,然后再根据对应的基本块位置,对拼接后的向量进行分割,得到每个基本块对应的节点特征向量(将一个基本块看作为一个节点),所有的节点特征向量,形成了节点特征向量集。
S3、节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量。
邻居节点信息聚合处理的操作具体为:获取节点特征向量,与当前邻居节点节点特征向量的关联度,得到当前邻居节点关联度;基于当前邻居节点关联度,以及所有邻居节点关联度,得到当前邻居节点关联度注意力系数;节点特征向量,与所有邻居节点关联度注意力系数分别进行相乘后,进行求和处理,得到节点聚合特征向量。所有的节点聚合特征向量,形成了节点聚合特征向量集。
得到当前邻居节点关联度的操作可通过如下公式实现:
eij为节点i与其当前邻居节点j的当前邻居节点关联度,hi为节点i的节点特征向量,hj为节点i的当前邻居节点j的节点特征向量,||表示向量的拼接操作,为第一可学习参数矩阵。LeakeyReLu()为LeakeyReLu函数。
得到当前邻居节点关联度注意力系数的操作可通过如下公式实现:
αij为节点i与其当前邻居节点j的当前邻居节点关联度注意力系数,eik为节点i与任意邻居节点k的邻居节点关联度注意力系数,N为节点i的邻居节点总数。
得到节点聚合特征向量的操作可通过如下公式实现:
h'i为节点i的节点聚合特征向量,为第二可学习参数矩阵,σ()为sigmod函数,hj为节点i的当前邻居节点j的节点聚合特征向量。
得到图特征向量的操作具体为:获取节点聚合特征向量的潜在权重,得到节点潜在权重;节点潜在权重经归一化处理,得到节点规范化注意权重;节点规范化注意权重与节点聚合特征向量相乘,得到节点注意力特征;所有的节点注意力特征经求和处理,得到图特征向量。
得到节点潜在权重的操作可通过如下公式实现:
gi=tanh(wGh'i+b),
gi为节点i的节点潜在权重,h'i为节点i的节点聚合特征向量,wG为第三可学习权重矩阵,b为偏置向量。
得到节点规范化注意权重的操作可通过如下公式实现:
βi=softmax(gi),
βi为节点i的节点规范化注意权重,softmax()为归一化函数。
得到图特征向量的操作可通过如下公式实现:
G为图特征向量,βih'i为节点i的节点注意力特征,N为节点(基本块)的总数。
通过上述处理得到的图的图特征向量G,能够捕捉到图的整体特征,有助于更深入地理解图的结构和语义信息,同时将全局洞察融合到节点特征中,从而增强图特征向量表达和概括图属性的能力。
S4、图特征向量经分类处理,得到漏洞检测结果。
分类的操作可以为:将图特征向量,与分类数据库中的标准图特征向量进行特征匹配,获取匹配值;当匹配值大于阈值后,输出对应标准图特征向量的漏洞属性,得到漏洞检测结果。匹配值为图特征向量和标准图特征向量之间的语义相似度值。
分类的操作还可以为:将图特征向量馈送到一个全连接层中进行分类,当分类损失熵小于损失阈值时,输出分类结果,得到漏洞检测结果。分类损失熵有第一损失熵和第二损失熵相加得到。
其中,第一损失熵可通过如下公式得到:
其中xi是图特征向量x的第i个元素,log_softmax函数对图特征向量x的每个元素取幂,然后对其进行归一化,最后取归一化概率值的对数,得到最终的对数概率分布。
其中,第二损失熵可通过如下公式得到:
NLLLoss函数计算预测值和目标标签之间的差异,target表示目标标签的概率分布,target i表示目标标签向量中第i个元素的概率。通过使用log_softmax和NLLLoss函数作为分类损失函数,可以更有效地执行分类任务。
通过将每个智能合约表示为图特征向量,并赋予合约一个类别标签,所使用的的分类模型可以学习如何从合约的图特征中识别不同漏洞类型。这种方式充分利用了智能合约的结构信息和上下文关联,提高了漏洞检测的准确性和鲁棒性。
为展示本实施例提供的检测方法(以下检测本实施例方法)的效果,做了如下实验。
实验环境。显卡为AMD的MI 100,显存大小为64GB,硬盘大小为1TB,CPU处理器型号为AMD 5950X,实验平台为windows10、Python3.8和基于深度学习的框架Pytorch。
数据集。实验中共收集到17970个真实的智能合约,数据集来自CCF比赛的合约数据,其中可用的智能合约数据集数量为17970个,数据集由Oyente、Smartcheck和人工进行标记完成,其中包括正常的合约数6890个,整数溢出漏洞数9340个,时间依赖漏洞数1240个和自毁合约漏洞数500个,数据集情况如表3所示。
表3数据集信息汇总表
合约类型 | 数量(个) |
正常合约 | 6890 |
整数溢出漏洞 | 9340 |
时间依赖漏洞 | 1240 |
自毁合约漏洞 | 500 |
总计 | 17970 |
实验设计和评价指标。对于数据集,随机选择80%的合约作为训练集,10%合约用于测试集,剩余的10%用于验证集。采用精确率Fpre、召回率Frec、F1分数3个指标评价检测效果。3种指标的表达式分别为:
其中,TP是实际有漏洞的文件预测为有漏洞的文件数,TN是实际无漏洞的文件预测为无漏洞的文件数,FN是实际有漏洞的文件预测为无漏洞的文件数,FP是实际无漏洞的文件预测为有漏洞的文件数。精确率是实际有漏洞的文件预测为有漏洞的文件数占所有预测为有漏洞的文件数的比值。召回率是实际有漏洞的文件预测为有漏洞的文件数占所有实际有漏洞的文件数的比值。F1分数是一个综合精确率和召回率的评分指标,一般来说,F1分数越高,说明检测效果越好,取值范围为0~1。
对比实验和分析。为了评估本实施例方法的精确率,选择了三种现有智能合约漏洞检测方法(smartcheck、Oyente、Mythril)与本实施例方法进行对比。然后与现有深度学习检测方法,包括2个传统的深度学习框架(LSTM,GRU)和1个原始的图卷积网络监测方法(GCN)进行比较。针对整数溢出、交易顺序依赖、自毁三种漏洞进行实验,结果如表4和表5所示。
表4与现有检测方法对比的结果汇总表
根据表4的结果显示,本实施例方法与smartcheck、Oyente、Mythril相比,在漏洞检测方面取得了明显的进步。对于整数溢出漏洞检测,本实施例方法精确率方面能分别提高至18.96%、35.99%、30.85%,F1分数最低提高了19.71%,而本文模型达到了显著的78.16%。对于交易顺序依赖漏洞检测,本实施例方法在精确率方面分别提高了23.92%、23.11%、8.42%。此外,其他几个指标也有显著的提升。在自毁漏洞检测方面,与smartcheck和mythril相比,本模型的精确率分别提升了27.34和15.63%。可见,本实施例方法能够显著提升智能合约漏洞检测的精确率Fpre、召回率、F1分数。
表5与深度学习方法对比的结果汇总表
由表5可以看出,本实施例方法的检测效果最好,整数溢出漏洞检测的精确率能够达到72.17%,交易顺序依赖漏洞检测的精确率能够达到67.03%,自毁漏洞检测的精确率能够达到73.66%,与上述3种深度学习模型对比,本实施例方法捕捉更全面的智能合约特征,可以有效提升精确率,降低漏报、误报率,漏洞检测的性能更好。
本实施例还提供一种基于图神经网络的智能合约漏洞检测系统,包括:
特征指令向量生成模块,用于获取待检智能合约的字节码,字节码经反编译处理,得到操作码序列;基于操作码序列,得到操作码基本块和控制流图;获取操作码基本块中的特征指令,基于特征指令,得到特征指令向量;
节点特征向量集生成模块,用于特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的控制流图中基本块之间的边关系,得到关系特征向量;语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;
图特征向量生成模块,用于节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;
漏洞检测结果生成模块,用于图特征向量经分类处理,得到漏洞检测结果。
本实施例还提供一种基于图神经网络的智能合约漏洞检测设备,包括处理器和存储器,其中,处理器执行存储器中保存的计算机程序时实现上述的基于图神经网络的智能合约漏洞检测方法。
本实施例还提供一种计算机可读存储介质,用于存储计算机程序,其中,计算机程序被处理器执行时实现上述的基于图神经网络的智能合约漏洞检测方法。
本实施例提供的一种基于图神经网络的智能合约漏洞检测方法,通过划分操作码序列,生成操作码基础块和控制流图;其次对操作码基础块中选定的特征指令进行分词,把块中信息转化为离散量,进行嵌入初始化生成特征指令向量,获取特征指令向量的长距离语义关系,得到语义特征向量;同时,提取控制流图中基本块之间的边关系,得到关系特征向量;然后将语义特征向量与关系特征向量进行融合后,根据基本块的位置进行分割,得到每个基本块对应的节点特征向量;接着,将节点特征向量集进行邻居节点信息聚合和自注意力处理,获得的图特征向量经分类处理,得到漏洞检测结果;该检测方法具有较高的精确率、召回率和F1分数。
Claims (8)
1.一种基于图神经网络的智能合约漏洞检测方法,其特征在于,包括如下操作:
S1、获取待检智能合约的字节码,所述字节码经反编译处理,得到操作码序列;基于所述操作码序列,得到操作码基本块和控制流图;获取所述操作码基本块中的特征指令,基于所述特征指令,得到特征指令向量;
S2、所述特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的所述控制流图中基本块之间的边关系,得到关系特征向量;所述语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;
所述语义特征提取处理的操作通过如下公式实现:
Zt=σ(Wz·[ht-1,xt],
Rt=σ(Wr·[ht-1,xt]),
xt为所述特征指令向量,ht-1为t-1时刻的语义特征向量,Wz为更新门权重矩阵,σ()为sigmod函数,Zt为t时刻的更新门输出,Wr为重置门权重矩阵,Rt为t时刻的重置门输出,tanh()双曲正切函数,⊙为元素乘法,为t时刻的中间语义特征向量,ht为t时刻的语义特征向量;
S3、所述节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;
所述邻居节点信息聚合处理的操作具体为:获取所述节点特征向量,与当前邻居节点节点特征向量的关联度,得到当前邻居节点关联度;基于所述当前邻居节点关联度,以及所有邻居节点关联度,得到当前邻居节点关联度注意力系数;所述节点特征向量,与所有邻居节点关联度注意力系数分别进行相乘后,进行求和处理,得到所述节点聚合特征向量;
所述节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;
S4、所述图特征向量经分类处理,得到漏洞检测结果。
2.根据权利要求1所述的基于图神经网络的智能合约漏洞检测方法,其特征在于,所述S3中得到图特征向量的操作具体为:
获取所述节点聚合特征向量的潜在权重,得到节点潜在权重;
所述节点潜在权重经归一化处理,得到节点规范化注意权重;
所述节点规范化注意权重与节点聚合特征向量相乘,得到节点注意力特征;
所有的节点注意力特征经求和处理,得到所述图特征向量。
3.根据权利要求1所述的基于图神经网络的智能合约漏洞检测方法,其特征在于,所述S1中得到特征指令向量的操作具体为:所述特征指令经分词和嵌入初始化处理,得到所述特征指令向量。
4.根据权利要求1所述的基于图神经网络的智能合约漏洞检测方法,其特征在于,所述S1中所述特征指令包括:算术指令、和/或堆栈指令、和/或环境指令、和/或控制指令、和/或区块链系统指令。
5.根据权利要求1所述的基于图神经网络的智能合约漏洞检测方法,其特征在于,所述S4中分类处理的操作具体为:
将所述图特征向量,与分类数据库中的标准图特征向量进行特征匹配,获取匹配值;当所述匹配值大于阈值后,输出对应标准图特征向量的漏洞属性,得到所述漏洞检测结果。
6.一种基于图神经网络的智能合约漏洞检测系统,其特征在于,包括:
特征指令向量生成模块,用于获取待检智能合约的字节码,所述字节码经反编译处理,得到操作码序列;基于所述操作码序列,得到操作码基本块和控制流图;获取所述操作码基本块中的特征指令,基于所述特征指令,得到特征指令向量;
节点特征向量集生成模块,用于所述特征指令向量经语义特征提取处理,得到语义特征向量;基于获取的所述控制流图中基本块之间的边关系,得到关系特征向量;所述语义特征向量与关系特征向量经融合处理后,进行对应基本块的分割处理,得到的所有节点特征向量,形成节点特征向量集;所述语义特征提取处理的操作通过如下公式实现:Zt=σ(Wz·[ht-1,xt],Rt=σ(Wr·[ht-1,xt]),xt为所述特征指令向量,ht-1为t-1时刻的语义特征向量,Wz为更新门权重矩阵,σ()为sigmod函数,Zt为t时刻的更新门输出,Wr为重置门权重矩阵,Rt为t时刻的重置门输出,tanh()双曲正切函数,⊙为元素乘法,/>为t时刻的中间语义特征向量,ht为t时刻的语义特征向量;
图特征向量生成模块,用于所述节点特征向量集中,每个节点特征向量经邻居节点信息聚合处理,得到的所有节点聚合特征向量,形成节点聚合特征向量集;所述节点聚合特征向量集中,每个节点聚合特征向量经自注意力处理后,得到的所有节点注意力特征经聚合处理,得到图特征向量;所述邻居节点信息聚合处理的操作具体为:获取所述节点特征向量,与当前邻居节点节点特征向量的关联度,得到当前邻居节点关联度;基于所述当前邻居节点关联度,以及所有邻居节点关联度,得到当前邻居节点关联度注意力系数;所述节点特征向量,与所有邻居节点关联度注意力系数分别进行相乘后,进行求和处理,得到所述节点聚合特征向量;
漏洞检测结果生成模块,用于所述图特征向量经分类处理,得到漏洞检测结果。
7.一种基于图神经网络的智能合约漏洞检测设备,其特征在于,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1-5任一项所述的基于图神经网络的智能合约漏洞检测方法。
8.一种计算机可读存储介质,其特征在于,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的基于图神经网络的智能合约漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579362.6A CN117556425B (zh) | 2023-11-24 | 2023-11-24 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579362.6A CN117556425B (zh) | 2023-11-24 | 2023-11-24 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117556425A CN117556425A (zh) | 2024-02-13 |
CN117556425B true CN117556425B (zh) | 2024-04-23 |
Family
ID=89816467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311579362.6A Active CN117556425B (zh) | 2023-11-24 | 2023-11-24 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117556425B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157385A (zh) * | 2021-02-08 | 2021-07-23 | 北京航空航天大学 | 一种基于图神经网络的智能合约漏洞自动化检测方法 |
CN116383832A (zh) * | 2023-04-26 | 2023-07-04 | 浙江工业大学 | 一种基于图神经网络的智能合约漏洞检测方法 |
CN116467720A (zh) * | 2023-04-25 | 2023-07-21 | 江苏大学 | 一种基于图神经网络的智能合约漏洞检测方法及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3906488B1 (en) * | 2019-06-12 | 2023-08-02 | Nec Corporation | Method and contract rewriting framework system for supporting smart contracts in a blockchain network |
-
2023
- 2023-11-24 CN CN202311579362.6A patent/CN117556425B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157385A (zh) * | 2021-02-08 | 2021-07-23 | 北京航空航天大学 | 一种基于图神经网络的智能合约漏洞自动化检测方法 |
CN116467720A (zh) * | 2023-04-25 | 2023-07-21 | 江苏大学 | 一种基于图神经网络的智能合约漏洞检测方法及电子设备 |
CN116383832A (zh) * | 2023-04-26 | 2023-07-04 | 浙江工业大学 | 一种基于图神经网络的智能合约漏洞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117556425A (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274134A (zh) | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 | |
CN109522192B (zh) | 一种基于知识图谱和复杂网络组合的预测方法 | |
CN111931935B (zh) | 基于One-shot 学习的网络安全知识抽取方法和装置 | |
CN110728313B (zh) | 一种用于意图分类识别的分类模型训练方法及装置 | |
CN112115326B (zh) | 一种以太坊智能合约的多标签分类和漏洞检测方法 | |
CN114547611A (zh) | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 | |
CN115225336B (zh) | 一种面向网络环境的漏洞可利用性的计算方法及装置 | |
CN115100739B (zh) | 人机行为检测方法、系统、终端设备及存储介质 | |
CN116150757A (zh) | 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法 | |
CN112783513A (zh) | 一种代码风险检查方法、装置及设备 | |
CN117556425B (zh) | 基于图神经网络的智能合约漏洞检测方法、系统和设备 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN116383832A (zh) | 一种基于图神经网络的智能合约漏洞检测方法 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN115758388A (zh) | 一种基于低维字节码特征的智能合约的漏洞检测方法 | |
CN112906824B (zh) | 车辆聚类方法、系统、设备及存储介质 | |
CN111562943B (zh) | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 | |
Salman | Test Case Generation from Specifications Using Natural Language Processing | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
CN114579761A (zh) | 信息安全知识实体关系连接预测方法、系统及介质 | |
Ouyang et al. | Binary vulnerability mining based on long short-term memory network | |
Karlaš et al. | Canonpipe: Data Debugging with Shapley Importance over Machine Learning Pipelines | |
Liu et al. | SELF: A method of searching for library functions in stripped binary code | |
CN115640577B (zh) | 一种针对二进制物联网固件程序的漏洞检测方法和系统 | |
CN116383883B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |