CN111310191B - 一种基于深度学习的区块链智能合约漏洞检测方法 - Google Patents
一种基于深度学习的区块链智能合约漏洞检测方法 Download PDFInfo
- Publication number
- CN111310191B CN111310191B CN202010088596.0A CN202010088596A CN111310191B CN 111310191 B CN111310191 B CN 111310191B CN 202010088596 A CN202010088596 A CN 202010088596A CN 111310191 B CN111310191 B CN 111310191B
- Authority
- CN
- China
- Prior art keywords
- slice
- codes
- operation code
- intelligent contract
- matrix
- 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
Images
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- 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/045—Combinations of networks
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及以太坊智能合约安全技术领域,为基于深度学习的区块链智能合约漏洞检测方法,包括步骤:将训练集中的字节码反编译为操作码,对操作码切割后,形成切片矩阵;将切片矩阵与其对应标签输入到卷积神经网络进行训练,最终得到漏洞检测模型;对待检测的智能合约,提取其字节码,然后同样通过反编译、切割,提取字节码的切片特征形成切片矩阵,以切片矩阵作为漏洞检测模型的输入,检测智能合约是否存在漏洞。本发明检测方法灵活,准确度较高。
Description
技术领域
本发明涉及以太坊智能合约安全技术领域,特别地涉及一种基于深度学习的区块链智能合约漏洞检测方法。
背景技术
智能合约是一种计算机协议,当确认满足某些触发条件时,无需第三方或任何中央机构的干预,即可代表各方在区块链上自动激活。区块链的去中心化,不可篡改等特征契合了智能合约对于安全可靠等方面的需求。区块链(如以太坊)智能合约的引入创新,使得区块链得到里程碑式的发展,在区块链上发布的智能合约日益增多。
智能合约的编写与传统的编程存在一定程度的不同,这极易造成一些潜在的漏洞,如has_short_address漏洞、has_flows漏洞等。并且由于智能合约常常带有金融属性,携带着价值巨大的币,这导致某些恶意人员极易利用智能合约的漏洞来攻击并从中牟利。因此,检测智能合约漏洞成了一个很重要的研究方向。
目前对于智能合约的漏洞检测,已经有学者或者企业提出一些检测方法,并且开发出相应的工具了。近来有人提出一种框架,可以将solidity源码和合约字节码转换成F*编写的代码,基于F*来检测合约;但它具有一定的局限性,不支持solidity的许多语法特征,测试过程中只能评估部分智能合约数据(例如只能评估396份合同中的46份)。
发明内容
为了解决现有技术存在的问题,本发明提出一种基于深度学习的区块链智能合约漏洞检测方法,利用智能合约的字节码生成合约特征进行检测,因此针对已经部署到区块链上或者未部署到区块链上的智能合约,均可进行特定漏洞的检测,应用范围广泛。
根据本发明的基于深度学习的区块链智能合约漏洞检测方法,包括以下步骤:
S1、将训练集中的字节码反编译为操作码,对操作码切割后,形成切片矩阵;
S2、将切片矩阵与其对应标签输入到卷积神经网络进行训练,最终得到漏洞检测模型;
S3、对待检测的智能合约,提取其字节码,然后同样通过反编译、切割,提取字节码的切片特征形成切片矩阵,以切片矩阵作为漏洞检测模型的输入,检测智能合约是否存在漏洞。
与现有技术相比,本发明取得了如下有益效果:
1、利用智能合约的字节码生成合约特征进行检测,因此针对已经部署到区块链上或者未部署到区块链上的智能合约,均可进行特定漏洞的检测,应用范围广泛。
2、使用切片矩阵作为合约特征,输入到卷积神经网络对检测模型进行训练,大大提高了检测模型的准确率。首先将智能合约的操作码进行反编译,得到合约操作码;将合约操作码进行切片工作并且对分片中每种操作码的数量进行统计,从而得到一份合约的切片矩阵;将切片矩阵作为卷积神经网络的输入特征并对检测模型进行训练;将训练出来的检测模型用k折交叉验证法检测模型的性能并修改模型参数,从而训练出性能最优的检测模型。
附图说明
图1是本发明漏洞检测的原理流程图;
图2是本发明切片矩阵的生成流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所示,在本实施例中,基于深度学习的区块链智能合约漏洞检测方法,具体步骤包括:
S1、将训练集中的字节码反编译为操作码,对操作码切割后,提取字节码的切片特征形成切片矩阵;
智能合约漏洞往往只出现在一个或几个函数中,而智能合约的其他部分不存在漏洞。“RETURN”在操作码中往往代表着相邻两个函数的分割,所以本发明将智能合约的字节码以“RETURN”作为分割点分割成多个切片,以此将不同函数的操作码特征分离。参见图2,具体生成步骤如下:
S11、使用诸如solidity官方的evm工具对字节码进行反编译,16进制的字节码会反编译为操作码与操作数,例如“60606080”可以反编译为“push 0x60 push 0x80”,其中“push”为操作码,“0x60,0x80”为操作数;
S12、去除操作数,只保留操作码;
S13、操作码,以某个特定的操作码为直接的分界点,例如“return”,“jump”等操作码,将剩下的操作码分割成多块,每块分割出来的操作码集合称为操作码切片;
本实施例选择“RETURN”操作码为相邻两个函数直接的分界线。
S14、对单个操作码切片进行操作码出现数量的统计,没有出现的操作码记为0,并按操作码首字母进行排列,形成单个操作码切片的特征。
假如智能合约代码只有4种操作码,其中某个切片“add”出现了6次,“and”出现了3次,“add”和“and”按照首字母排列分别排第1、2位,那么这个切片的特征就可以表示为“6,3,0,0”(长度为4,其他操作码未出现为0),在本实施例中,统计有75个操作码,形成长度为75的向量。
S15、将所有操作码切片的特征按顺序排列,每一行为单个操作码切片的特征,形成切片矩阵。为保证输入的值的规模相同,可使用“0”进行填充。本实施例中,数据集的单个智能合约的最大切片数为82,因此矩阵规模为82X75,即82个函数,单个函数有75种操作码。
由于操作码分割时,是以相邻两个函数直接的分界线进行分割,所以最终形成的切片矩阵中,一行代表一个函数的特性。
S2、将切片矩阵与其对应标签输入到卷积神经网络进行训练,最终得到漏洞检测模型;
卷积神经网络是一种包含卷积运算且结构复杂的前向神经网络。它是深度学习的代表性算法之一。它是一种专门用来处理具有相似网格结构数据的神经网络。其网络结构可能含有多层的卷积层、池化层和全连接层。卷积层的功能是对输入数据进行特征提取,其内部包含多个卷积核。在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。卷积层、池化层和全连接层的参数通过反向传播算法进行更新。经过多轮更新,模型达到本地最优。
本实施例中,卷积神经网络有一个输入层、一个卷积层、若干全连接层和一个输出层,与常规的卷积神经网络不同之处在于该网络不包括池化层,并且卷积核为1X75,这样可以不破坏切片矩阵一行代表一个函数的特性。在本专利中,切片矩阵中每一行代表着一个函数的特征,卷积核为1X75意味着只对单行进行卷积,也就对单个函数的特征进行卷积,池化是对特征的降采样,但是在切片矩阵中单行特征都是独立的,且有效的,对2行以上特征的池化便会破坏这种独立性和有效性,因此尽量不使用池化。
S3、对待检测的智能合约提取其字节码,然后同样通过反编译、切割,提取字节码的切片特征形成切片矩阵,以切片矩阵作为漏洞检测模型的输入,检测智能合约是否存在漏洞。
提取字节码的切片特征,具体步骤为:对字节码进行反编译,反编译结果包括操作码与操作数;去除操作数,只保留操作码;根据相邻两个函数直接的分界线(本实施例选取“RETURN”操作码为相邻两个函数直接的分界线),将操作码分割为多个操作码切片;对单个操作码切片进行操作码出现数量的统计,没有出现的操作码记为0,并按操作码首字母进行排列,形成单个操作码切片的特征;将所有操作码切片的特征按切片前的顺序排列,每一行为单个操作码切片的特征,形成切片矩阵。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (3)
1.一种基于深度学习的区块链智能合约漏洞检测方法,其特征在于,包括以下步骤:
S1、将训练集中的字节码反编译为操作码,对操作码切割后,形成切片矩阵;
S2、将切片矩阵与其对应标签输入到卷积神经网络进行训练,最终得到漏洞检测模型;
S3、对待检测的智能合约,提取其字节码,然后同样通过反编译、切割,提取字节码的切片特征形成切片矩阵,以切片矩阵作为漏洞检测模型的输入,检测智能合约是否存在漏洞;
步骤S1包括:
S11、对字节码进行反编译,反编译的结果包括操作码与操作数;
S12、去除操作数,只保留操作码;
S13、根据相邻两个函数直接的分界线,将操作码分割为多个操作码切片;
S14、对单个操作码切片进行操作码出现数量的统计,没有出现的操作码记为0,并按操作码首字母进行排列,形成单个操作码切片的特征;
S15、将所有操作码切片的特征按切片前的顺序排列,每一行为单个操作码切片的特征,形成切片矩阵。
2.根据权利要求1所述的区块链智能合约漏洞检测方法,其特征在于,步骤S13中,选择“RETURN”操作码为相邻两个函数直接的分界线。
3.根据权利要求1所述的区块链智能合约漏洞检测方法,其特征在于,步骤S3中,提取字节码的切片特征,包括步骤:
对字节码进行反编译,反编译的结果包括操作码与操作数;去除操作数,只保留操作码;根据相邻两个函数直接的分界线,将操作码分割为多个操作码切片;对单个操作码切片进行操作码出现数量的统计,没有出现的操作码记为0,并按操作码首字母进行排列,形成单个操作码切片的特征;将所有操作码切片的特征按切片前的顺序排列,每一行为单个操作码切片的特征,形成切片矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010088596.0A CN111310191B (zh) | 2020-02-12 | 2020-02-12 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010088596.0A CN111310191B (zh) | 2020-02-12 | 2020-02-12 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111310191A CN111310191A (zh) | 2020-06-19 |
CN111310191B true CN111310191B (zh) | 2022-12-23 |
Family
ID=71154572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010088596.0A Active CN111310191B (zh) | 2020-02-12 | 2020-02-12 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111310191B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898134B (zh) * | 2020-08-03 | 2022-11-11 | 北京理工大学 | 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置 |
CN112115326B (zh) * | 2020-08-19 | 2022-07-29 | 北京交通大学 | 一种以太坊智能合约的多标签分类和漏洞检测方法 |
CN112257076B (zh) * | 2020-11-11 | 2023-12-15 | 厦门美域中央信息科技有限公司 | 一种基于随机探测算法和信息聚合的漏洞检测方法 |
CN113190850B (zh) * | 2021-05-24 | 2022-10-11 | 电子科技大学 | 一种智能合约短地址攻击检测工具的实现方法 |
CN114139165B (zh) * | 2021-12-07 | 2022-12-20 | 扬州大学 | 基于机器学习中的多目标识别的智能合约漏洞检测方法 |
CN114462045B (zh) * | 2021-12-31 | 2022-09-09 | 国网浙江省电力有限公司物资分公司 | 一种智能合约漏洞检测方法 |
CN117574214B (zh) * | 2024-01-15 | 2024-04-12 | 中科链安(北京)科技有限公司 | 智能合约分类模型训练方法、智能合约分类方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929996A (zh) * | 2012-10-24 | 2013-02-13 | 华南理工大学 | XPath查询优化方法及系统 |
CN106503496A (zh) * | 2016-12-08 | 2017-03-15 | 合肥康捷信息科技有限公司 | 基于操作码替换与合并的Python脚本程序防逆转方法 |
CN109933991A (zh) * | 2019-03-20 | 2019-06-25 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、装置 |
CN110399730A (zh) * | 2019-07-24 | 2019-11-01 | 上海交通大学 | 智能合约漏洞的检查方法、系统及介质 |
CN110474870A (zh) * | 2019-07-04 | 2019-11-19 | 南京纯白矩阵科技有限公司 | 基于区块链的网络主动防御方法、系统及计算机可读存储介质 |
CN110489973A (zh) * | 2019-08-06 | 2019-11-22 | 广州大学 | 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质 |
CN110543419A (zh) * | 2019-08-28 | 2019-12-06 | 杭州趣链科技有限公司 | 一种基于深度学习技术的智能合约代码漏洞检测方法 |
CN110737899A (zh) * | 2019-09-24 | 2020-01-31 | 暨南大学 | 一种基于机器学习的智能合约安全漏洞检测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2948499C (en) * | 2016-11-16 | 2020-04-21 | The Governing Council Of The University Of Toronto | System and method for classifying and segmenting microscopy images with deep multiple instance learning |
US10320569B1 (en) * | 2018-04-05 | 2019-06-11 | HOTYB, Inc. | Systems and methods for authenticating a digitally signed assertion using verified evaluators |
EP3815040A4 (en) * | 2018-05-21 | 2022-03-02 | Corista LLC | MULTIPLE SAMPLE BULK SLIDE IMAGE PROCESSING USING MULTIPLE RESOLUTION REGISTRATION |
CN110175454B (zh) * | 2019-04-19 | 2021-03-26 | 佛山市微风科技有限公司 | 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 |
CN110633567B (zh) * | 2019-05-31 | 2023-01-13 | 天津理工大学 | 一种基于rasp的智能合约虚拟机漏洞检测系统及方法 |
-
2020
- 2020-02-12 CN CN202010088596.0A patent/CN111310191B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929996A (zh) * | 2012-10-24 | 2013-02-13 | 华南理工大学 | XPath查询优化方法及系统 |
CN106503496A (zh) * | 2016-12-08 | 2017-03-15 | 合肥康捷信息科技有限公司 | 基于操作码替换与合并的Python脚本程序防逆转方法 |
CN109933991A (zh) * | 2019-03-20 | 2019-06-25 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、装置 |
CN110474870A (zh) * | 2019-07-04 | 2019-11-19 | 南京纯白矩阵科技有限公司 | 基于区块链的网络主动防御方法、系统及计算机可读存储介质 |
CN110399730A (zh) * | 2019-07-24 | 2019-11-01 | 上海交通大学 | 智能合约漏洞的检查方法、系统及介质 |
CN110489973A (zh) * | 2019-08-06 | 2019-11-22 | 广州大学 | 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质 |
CN110543419A (zh) * | 2019-08-28 | 2019-12-06 | 杭州趣链科技有限公司 | 一种基于深度学习技术的智能合约代码漏洞检测方法 |
CN110737899A (zh) * | 2019-09-24 | 2020-01-31 | 暨南大学 | 一种基于机器学习的智能合约安全漏洞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111310191A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310191B (zh) | 一种基于深度学习的区块链智能合约漏洞检测方法 | |
CN109450845B (zh) | 一种基于深度神经网络的算法生成恶意域名检测方法 | |
Liu et al. | Security analysis and enhancement of model compressed deep learning systems under adversarial attacks | |
CN106997474A (zh) | 一种基于深度学习的图节点多标签分类方法 | |
CN106778241A (zh) | 恶意文件的识别方法及装置 | |
CN112035841B (zh) | 一种基于专家规则与序列化建模的智能合约漏洞检测方法 | |
US11222179B2 (en) | Named entity recognition and extraction using genetic programming | |
CN106997367A (zh) | 程序文件的分类方法、分类装置和分类系统 | |
CN111866004B (zh) | 安全评估方法、装置、计算机系统和介质 | |
CN112528284A (zh) | 恶意程序的检测方法及装置、存储介质、电子设备 | |
CN111428504A (zh) | 一种事件抽取方法和装置 | |
CN111753290A (zh) | 软件类型的检测方法及相关设备 | |
CN111444513A (zh) | 一种电网嵌入式终端的固件编译优化选项识别方法及装置 | |
CN113435585A (zh) | 一种业务处理方法、装置及设备 | |
CN111045670B (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
CN116305158A (zh) | 一种基于切片代码依赖图语义学习的漏洞识别方法 | |
Yoo et al. | The image game: exploit kit detection based on recursive convolutional neural networks | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
Ulfath et al. | Hybrid CNN-GRU framework with integrated pre-trained language transformer for SMS phishing detection | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN114707151B (zh) | 一种基于api调用和网络行为的僵尸软件检测方法 | |
CN110263540A (zh) | 一种代码标识方法及装置 | |
US20220253691A1 (en) | Execution behavior analysis text-based ensemble malware detector | |
CN115567305A (zh) | 基于深度学习的顺序网络攻击预测分析方法 | |
US20210209480A1 (en) | Named entity recognition and extraction using genetic programming |
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 |