CN113157385A - 一种基于图神经网络的智能合约漏洞自动化检测方法 - Google Patents
一种基于图神经网络的智能合约漏洞自动化检测方法 Download PDFInfo
- Publication number
- CN113157385A CN113157385A CN202110170847.4A CN202110170847A CN113157385A CN 113157385 A CN113157385 A CN 113157385A CN 202110170847 A CN202110170847 A CN 202110170847A CN 113157385 A CN113157385 A CN 113157385A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- vulnerability
- graph
- neural network
- training
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 23
- 238000001514 detection method Methods 0.000 title claims abstract description 19
- 238000012549 training Methods 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 15
- 238000012360 testing method Methods 0.000 claims description 8
- 238000003062 neural network model Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于图神经网络的智能合约漏洞自动化检测方法,包括以下:(1)智能合约虚拟机编译智能合约漏洞源码(2)构建智能合约代码属性图(CPG)(3)使用BERT预训练方法对CPG代码属性图进行预训练(4)创建图嵌入模型提取漏洞特征(5)训练图神经网络漏洞检测模型(6)使用模型进行漏洞检测。本发明是一种基图神经网络的智能合约漏洞自动化分析方法,能够自动学习潜在的智能合约漏洞特征或表示,实现对智能合约漏洞自动化分析。
Description
技术领域
本发明涉及针对智能合约技术领域,特别是涉及一种基于图神经网络的智能合约漏洞自动化检测方法。
背景技术
智能合约是运行在区块链上的程序,是一种执行合约条款的可计算交易协议,通过程序代码规定合约条款和触发条件,一旦满足出发条件合约便会自行执行。BERT是2018年10 月由Google AI研究院提出的一种预训练模型。BERT的全称是BidirectionalEncoder Representation from Transformers,可以使用BERT从源码数据中提取特征训练出漏洞嵌入向量。
智能合约无法避免地存在安全漏洞,但频发的智能合约漏洞事件严重威胁着智能合约应用安全。当前智能合约漏洞检测的方法多基于专家经验的代码审计以及依赖已有的智能合约漏洞数据库,但是现涵盖的智能合约漏洞类型不完整,误报及漏报多,并且依赖人工复核。无法满足智能合约数量及规模不断扩大、功能日益复杂、漏洞挖掘难度大等挑战。
本发明基于图神经网络的智能合约漏洞自动化检测方法,本发明所提的智能合约漏洞检测方法具有更高的自动化程度,减少对领域专家知识的依赖,大大节约代码审计的成本,提高代码审计的效率。而相较于其它使用深度学习进行智能合约漏洞检测的方法,本方法基于图神经网络方法,使用智能合约代码属性图能更好地保留源代码中地语法和语义信息。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于图神经网络的智能合约漏洞自动分析方法。其特征在于:如图1所示,包含以下步骤:
(1)智能合约虚拟机编译智能合约漏洞源码;
(2)构建智能合约代码属性图(CPG);
(3)使用BERT预训练对代码属性图(CPG)进行预训练;
(4)创建图嵌入模型提取漏洞特征;
(5)训练漏洞检测模型;
(6)使用模型进行漏洞检测。
进一步地,所述步骤(1)具体为:搭建智能合约编译运行、环境,安装智能合约虚拟机,使用智能合约虚拟机进行编译智能合约源码,生成字节码。
进一步地,所述步骤(2)具体为:构建智能合约代码属性图(CPG),包含从编译器获取智能合约抽象语法树(AST)、函数控制流图(CFG)、程序依赖图(PDG)。
进一步地,所述步骤(3)具体为:先将代码属性图进输入到BERT中进行预训练提取其中的语义信息,使用Bert预训练模型对CPG行预训练,修改最顶层softmax层,微调参数。
进一步地,所述步骤(4)具体为:使用创建图嵌入模型提取漏洞特征,可以是使用消息传递神经网络(MPNN)、门控图神经网络(GGNN)等图神经网络模型进行计算代码属性图(CPG)。将包含语义信息的向量输入MPNN或GGNN中提取图结构信息,通过图神经网络模型对特征进行聚合,最后通过全连接层输出更新系数与重置系数。
进一步地,所述步骤(5)具体为:训练漏洞数据集分为测试集和验证集,当数据量比较小时,可以使用7:3训练数据和测试数据,或者6:2:2训练数据,验证数据和测试数据。训练过程需要进行调试,使用正则化技术、残差连接等方法。
进一步地,所述步骤(6)具体为:使用模型进行漏洞检测,需要对智能合约代码进行编译和构建智能合约代码属性图(CPG),构建方法与步骤(2)相同。传入训练好的图神经网络模型,图神经网络模型将给出输入的智能合约存在的漏洞。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为本发明基于图神经网络的智能合约漏洞自动化检测方法的流程图。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
下面将附图结合具体实施方式对本发明的技术加以详细说明。
如图1所示,本发明提供的基于图神经网络的智能合约漏洞自动化检测方法包括有以下步骤:
S1.智能合约虚拟机V编译智能合约漏洞源码S,经过编译,生成字节码B。
S2.基于生成字节码B构建智能合约代码属性图C,该智能合约代码属性图C包含从编译器获取智能合约抽象语法树(AST)、函数控制流图(CFG)、程序依赖图(PDG)。
S3.使用BERT预训练对代码属性图C进行预训练,先将代码属性图进输入到BERT中进行预训练提取其中的语义信息,使用Bert预训练模型对CPG行预训练,修改最顶层softmax 层,微调参数。最终智能合约代码属性图C表示为G(V,A),V为图中所有的节点向量列表, A为图的邻接矩阵。
S4.使用消息传递神经网络(MPNN),从G(V,A)学习到更好的节点向量化表示,通过图神经网络模型对特征进行聚合,最后通过全连接层输出更新系数与重置系数。
S5.训练漏洞检测模型,训练漏洞数据集分为测试集和验证集,使用6:2:2训练数据,验证数据和测试数据。训练数据和测试集智能合约源码经过构建智能合约代码属性图处理后传入MPNN模型M,进行训练和测试。
S6.使用模型M进行漏洞检测,对待检测的智能合约代码进行编译和构建智能合约代码属性图(CPG),构建方法与步骤(2)相同。传入训练好的MPNN模型,MPNN模型将给出输入的智能合约存在的漏洞。
Claims (8)
1.一种基于图神经网络的智能合约漏洞自动化检测方法,具体包括如下步骤:
(1)智能合约虚拟机编译智能合约漏洞源码;
(2)构建智能合约代码属性图(CPG);
(3)使用BERT预训练方法对CPG代码属性图进行预训练;
(4)创建图嵌入模型提取漏洞特征;
(5)训练漏洞检测模型;
(6)使用模型进行漏洞检测。
2.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(1)智能合约虚拟机编译智能合约漏洞源码,可以是特定智能合约虚拟机,也可以是通用的智能合约虚拟机。
3.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(2)构建智能合约代码属性图(CPG),可以使用自动化工具进行构建,包含智能合约抽象语法树、控制流图、程序依赖图语义。
4.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(3)使用Bert预训练模型对CPG代码属性图进行预训练,修改最顶层softmax层,微调参数。
5.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(4)使用创建图嵌入模型提取漏洞特征,可以是使用消息传递神经网络(MPNN)、门控图神经网络(GGNN)等图神经网络模型进行计算代码属性图(CPG)。
6.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(5)训练漏洞数据集分为测试集和验证集,训练过程需要进行参数调试。
7.根据权利要求6所述的智能合约漏洞训练的数据集,其特征在于,智能合约漏洞训练的数据集可以是来公开已知的漏洞,也可以是自行标记的漏洞。
8.根据权利要求1所述的一种基于图神经网络的智能合约漏洞自动化检测方法,其特征在于,所述步骤(6)使用模型进行漏洞检测,需要对智能合约代码进行编译和构建智能合约代码属性图(CPG)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110170847.4A CN113157385A (zh) | 2021-02-08 | 2021-02-08 | 一种基于图神经网络的智能合约漏洞自动化检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110170847.4A CN113157385A (zh) | 2021-02-08 | 2021-02-08 | 一种基于图神经网络的智能合约漏洞自动化检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113157385A true CN113157385A (zh) | 2021-07-23 |
Family
ID=76882891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110170847.4A Pending CN113157385A (zh) | 2021-02-08 | 2021-02-08 | 一种基于图神经网络的智能合约漏洞自动化检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157385A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312268A (zh) * | 2021-07-29 | 2021-08-27 | 北京航空航天大学 | 一种智能合约代码相似检测方法 |
CN113868650A (zh) * | 2021-09-13 | 2021-12-31 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN115495755A (zh) * | 2022-11-15 | 2022-12-20 | 四川大学 | 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法 |
CN117556425A (zh) * | 2023-11-24 | 2024-02-13 | 烟台大学 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN112184432A (zh) * | 2020-03-16 | 2021-01-05 | 北京天德科技有限公司 | 一种基于法律语言的智能合约开发方法 |
-
2021
- 2021-02-08 CN CN202110170847.4A patent/CN113157385A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112184432A (zh) * | 2020-03-16 | 2021-01-05 | 北京天德科技有限公司 | 一种基于法律语言的智能合约开发方法 |
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
Non-Patent Citations (1)
Title |
---|
陈肇炫;邹德清;李珍;金海;: "基于抽象语法树的智能化漏洞检测系统", 信息安全学报, no. 04, 15 July 2020 (2020-07-15) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312268A (zh) * | 2021-07-29 | 2021-08-27 | 北京航空航天大学 | 一种智能合约代码相似检测方法 |
CN113868650A (zh) * | 2021-09-13 | 2021-12-31 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN113868650B (zh) * | 2021-09-13 | 2023-04-25 | 四川大学 | 基于代码异质中间图表示的漏洞检测方法与装置 |
CN115495755A (zh) * | 2022-11-15 | 2022-12-20 | 四川大学 | 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法 |
CN117556425A (zh) * | 2023-11-24 | 2024-02-13 | 烟台大学 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
CN117556425B (zh) * | 2023-11-24 | 2024-04-23 | 烟台大学 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113157385A (zh) | 一种基于图神经网络的智能合约漏洞自动化检测方法 | |
US11775414B2 (en) | Automated bug fixing using deep learning | |
Afshan et al. | Evolving readable string test inputs using a natural language model to reduce human oracle cost | |
CN117951701A (zh) | 用于确定软件代码中的缺陷和漏洞的方法 | |
CN109492402A (zh) | 一种基于规则引擎的智能合约安全评测方法 | |
CN105677574B (zh) | 基于函数控制流的安卓应用漏洞检测方法和系统 | |
CN111460450A (zh) | 一种基于图卷积网络的源代码漏洞检测方法 | |
CN106537333A (zh) | 用于软件产物的数据库的系统和方法 | |
Kessentini et al. | Example-based model-transformation testing | |
US10365995B2 (en) | Composing future application tests including test action data | |
CN113312268A (zh) | 一种智能合约代码相似检测方法 | |
CN108664791A (zh) | 一种超文本预处理器代码中的网页后门检测方法及装置 | |
CN110580222A (zh) | 一种软件测试用例生成方法及系统 | |
CN108984416A (zh) | 一种评估Maven环境中依赖冲突危险级别的方法 | |
CN116305158A (zh) | 一种基于切片代码依赖图语义学习的漏洞识别方法 | |
Naeem et al. | Scalable mutation testing using predictive analysis of deep learning model | |
CN117113347A (zh) | 一种大规模代码数据特征提取方法及系统 | |
CN112019403B (zh) | 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统 | |
US11436514B2 (en) | Designing plans using requirements knowledge graph | |
CN117235745A (zh) | 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质 | |
CN115658549B (zh) | 一种对源代码形式化验证方法 | |
CN117113080A (zh) | 数据处理和代码处理方法、装置、一体机和存储介质 | |
CN115859307A (zh) | 基于树型注意力和加权图匹配的相似漏洞检测方法 | |
CN114153447B (zh) | 一种自动化生成ai训练代码的方法 | |
CN108804308A (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 |