CN116595534A - 一种solidity智能合约的缺陷检测方法 - Google Patents
一种solidity智能合约的缺陷检测方法 Download PDFInfo
- Publication number
- CN116595534A CN116595534A CN202310374902.0A CN202310374902A CN116595534A CN 116595534 A CN116595534 A CN 116595534A CN 202310374902 A CN202310374902 A CN 202310374902A CN 116595534 A CN116595534 A CN 116595534A
- Authority
- CN
- China
- Prior art keywords
- defect detection
- data set
- detection data
- codes
- intelligent contract
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 93
- 238000001514 detection method Methods 0.000 title claims abstract description 86
- 239000013598 vector Substances 0.000 claims abstract description 79
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000000007 visual effect Effects 0.000 claims abstract description 22
- 238000000605 extraction Methods 0.000 claims description 25
- 239000011159 matrix material Substances 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 16
- 238000013527 convolutional neural network Methods 0.000 claims description 11
- 230000011218 segmentation Effects 0.000 claims description 7
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 239000003086 colorant Substances 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 238000013136 deep learning model Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000012216 screening Methods 0.000 description 4
- 238000013145 classification model Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013068 supply chain management Methods 0.000 description 1
- 238000012360 testing method 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/253—Fusion techniques of extracted features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/254—Fusion techniques of classification results, e.g. of results related to same input data
- G06F18/256—Fusion techniques of classification results, e.g. of results related to same input data of results relating to different input data, e.g. multimodal recognition
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- 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
- G06N3/0455—Auto-encoder networks; Encoder-decoder 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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
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)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Biomedical Technology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种solidity智能合约的缺陷检测方法,属于智能合约缺陷检测技术领域,包括:获取solidity智能合约代码的缺陷检测数据集;对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量;对缺陷检测数据集进行语义信息特征提取,得到语义特征向量;对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量;对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量;将所有特征向量连接在一起,生成一个新的特征向量,将新的特征向量输入分类器中对分类器进行训练,得到训练好的分类器;将待检测的solidity智能合约的代码输入到训练好的分类器中进行漏洞检测。该方法可以对智能合约缺陷进行检测。
Description
技术领域
本发明属于智能合约缺陷检测技术领域,具体涉及一种solidity智能合约的缺陷检测方法。
背景技术
区块链技术当前作为最具有探索价值的前沿科技在各个领域受到了广泛的关注,其去中心化、防篡改和不可逆的特点,使得它在金融、物联网、医疗保健、版权保护等领域取得了诸多突破性的进展。
智能合约作为区块链技术最成功的应用之一正在席卷全球,应用领域非常广泛,包括数字资产交易、供应链管理、物联网等领域。其安全问题引起了研究者的广泛关注。
智能合约的缺陷检测一直是一个具有挑战性的问题。传统的方法包括符号执行方法和模糊测试方法,这些方法已被证明对于检测智能合约缺陷是有效的,但同时也存在一些缺点。
其中,符号执行方法虽然精度高,然而其计算成本高昂,尤其是在处理复杂的智能合约时;此外符号执行还需要对程序进行手动注释,以指示程序的行为,这增加了使用符号执行的困难度。
其中,模糊测试方法成本低,但是其覆盖范围和准确性有限,需要大量的时间和计算资源进行测试,而且无法保证完全覆盖所有可能的执行路径。
总之,现有技术存在无法在低成本的情况下准确的对智能合约的缺陷进行检测的问题。
发明内容
为了克服上述现有技术存在的不足,本发明提供了一种solidity智能合约的缺陷检测方法。
为了实现上述目的,本发明提供如下技术方案:
一种solidity智能合约的缺陷检测方法,包括:
获取solidity智能合约代码的缺陷检测数据集;
对缺陷检测数据集的代码进行颜色标识后,对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量;
对缺陷检测数据集的代码进行词分割与词向量嵌入后,对缺陷检测数据集进行语义信息特征提取,得到语义特征向量;
将缺陷检测数据集的代码转换为ASCII码后,对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量;
对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量;
将视觉特征向量、语义特征向量、字符语义特征向量、继承特征向量连接在一起,生成一个新的特征向量,将新的特征向量输入分类器中对分类器进行训练,得到训练好的分类器;
将待检测的solidity智能合约的代码输入到训练好的分类器中进行漏洞检测,由分类器给出代码是否存在缺陷的判断。
进一步,所述对缺陷检测数据集的代码进行颜色标识后,对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量,包括:
将缺陷检测数据集中的合约代码分为括号、关键字、计算符、标识符、货币单位、注释以及其他代码;
按照元素类型,将相同类型的合约代码标记相同的颜色;全部元素标记完成后,得到代码对应的彩色图像;
将彩色图像按照RGB颜色转换成数字表示的矩阵,将矩阵统一成相同大小,输入到CNN神经网络中,得到视觉特征向量。
进一步,所述对缺陷检测数据集的代码进行词分割与词向量嵌入后,对缺陷检测数据集进行语义信息特征提取,得到语义特征向量,包括:
将缺陷检测数据集中的合约代码按照命名约定将其中的每个标识符拆分为单词,生成顺序代码序列;
将顺序代码序列进行拼接,使用tokenizer将顺序代码序列转换为对应的TokenID序列和SegmentID序列,同时生成PositionID序列,将TokenID序列、SegmentID序列、PositionID序列传入BERT模型的嵌入层中;
从嵌入层中提取Token嵌入、segment嵌入和Position嵌入,
将Token嵌入、Segment嵌入和Position嵌入按照元素值相加后输入到BERT模型的编码层中,由BERT模型的编码层输出词向量;
利用BiLSTM网络提取词向量的语义特征,得到语义特征向量。
进一步,还包括:
在利用BiLSTM网络提取词向量的语义特征之前,利用CNN网络提取出词向量中包含关键特征的局部特征;
通过BiLSTM网络提取局部特征的长距离特征,得到语义特征。
进一步,所述将缺陷检测数据集的代码转换为ASCII码后,对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量,包括:
将缺陷检测数据集中的代码片段二维字符矩阵中,每一个字符、数字和符号转换为相应的ASCII值,同时保留所有的空格、水平制表符、行结束符;
将转化后的字符矩阵统一大小,不足的部分用-1填充。
将统一大小后的字符矩阵输入到与视觉信息提取相同的CNN神经网络中,提取出缺陷检测数据集的代码字符语义信息特征,得到字符语义特征向量。
进一步,所述对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量,包括:
提取缺陷检测数据集中代码的继承关系;
由继承合约指向被继承合约,生成合约对应的邻接矩阵;
将生成的邻接矩阵放入node2vec模型之中,提取出缺陷检测数据集的继承结构信息特征。
进一步,获取solidity智能合约代码的缺陷检测数据集包括:
将solidity智能合约按照是否存在缺陷进行分类;
分类完成后,统计每个solidity智能合约中出现的函数名与库名,将经常出现的函数和库中代码从solidity智能合约代码数据中删除;
按照solidity智能合约的执行功能,将具有相同功能的代码去重,处理完成后得到缺陷数据集。
进一步,所述将新的特征向量输入分类器中对分类器进行训练,包括:
利用全连接层将新的特征向量降维后放入由全连接层及dropout层组成的分类器中。
本发明提供的一种solidity智能合约的缺陷检测方法具有以下有益效果:
本发明通过对收集智能合约代码数据进行筛选和标记,生成需要的智能合约源代码,采用四种不同的处理方式提取智能合约源码视觉,语义,字符语义,继承四种特征,将特征相互组合后通过文本分类模型进行漏洞检测,输出最终的漏洞检测结果。解决了现有技术中,无法在低成本的情况下准确的对智能合约的缺陷进行检测的问题。
附图说明
为了更清楚地说明本发明实施例及其设计方案,下面将对本实施例所需的附图作简单地介绍。下面描述中的附图仅仅是本发明的部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种基于多特征的solidity智能合约缺陷检测方法流程图;
图2为本发明实施例的S10-S13流程图;
图3为本发明实施例的S13的漏洞检测整体流程图;
图4为本发明实施例的S20-S23流程图;
图5为本发明实施例的S23示意图;
图6为本发明实施例的S30-S34流程图;
图7为本发明实施例的S34示意图;
图8为本发明实施例的S40-S42流程图;
图9为本发明实施例的S50-S53流程图;
图10为本发明实施例的S60-S63流程图;
图11为本发明实施例的S62-S63流程图。
具体实施方式
为了使本领域技术人员更好的理解本发明的技术方案并能予以实施,下面结合附图和具体实施例对本发明进行详细说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例:
本发明提供了一种solidity智能合约的缺陷检测方法,具体如图1所示,包括:获取solidity智能合约代码的缺陷检测数据集;对缺陷检测数据集的代码进行颜色标识后,对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量;对缺陷检测数据集的代码进行词分割与词向量嵌入后,对缺陷检测数据集进行语义信息特征提取,得到语义特征向量;将缺陷检测数据集的代码转换为ASCII码后,对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量;对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量;将视觉特征向量、语义特征向量、字符语义特征向量、继承特征向量连接在一起,生成一个新的特征向量,将新的特征向量输入分类器中对分类器进行训练,得到训练好的分类器;将待检测的solidity智能合约的代码输入到训练好的分类器中进行漏洞检测,由分类器给出代码是否存在缺陷的判断。
以下为本发明实施细节:
S10:收集Solidity智能合约代码数据,对智能合约代码数据进行筛选并标记标签,获得相应的智能合约源代码。
对于S10,通过一些渠道收集到足量的智能合约代码数据。按照预设的规则对合约进行清洗和标记,构成缺陷数据集。
S11:为了完成S10,通过区块链智能合约安全检测平台BSCSCS上公开的信息,下载相关的智能合约,根据不同版本的编译器对智能合约代码数据进行编译,清除编译失败的代码数据,得到可以成功编译的智能合约。
S12:由于智能合约的交易功能类代码重复性较高,较多相关合约代码类似,我们需要对代码进行去重。比较智能合约代码数据集,将相似度高于阈值的源代码文件清除,同时记录智能合约中频繁出现的函数或库,筛选出清洗后的源代码。
S13:使用智能合约缺陷漏洞检测软件对清洗后的源代码进行漏洞检测,根据检测结果对源代码标记标签并分类,获得带有标签的智能合约源代码,漏洞类型包括数值溢出漏洞、重入漏洞、冻结账户漏洞、条件竞争漏洞、逻辑设计缺陷漏洞、随机数生成漏洞、Call安全漏洞、权限控制漏洞、事物顺序依赖漏洞以及无漏洞。
S20:对智能合约源代码进行颜色标记,根据颜色生成对应的RGB矩阵,并基于预设深度学习模型进行特征提取,获得对应的视觉特征。
对于S20,需要将清洗完成后代码按照代码元素进行标记,转化为RGB矩阵。为了避免代码部分重复影响最终结果。把步骤S12中记录的函数和库从合约代码中删除,进一步降低代码的相似度,之后在输入到预设深度学习模型进行特征提取。
S21:将代码元素划分成多个部分。这里直接利用编译器中的代码不同元素颜色标记不同的特性,将元素用对应的高亮颜色填充。
S22:由于我们只用捕捉整体的视觉框架,不需要对代码本身进行调整。在获得预处理的代码数据截图,将它们转换为统一大小为(128,128,3)的RGB矩阵。
S23:在进行图像信息提取时,采用CNN神经网络能够将复杂问题简化,即把图像的大量参数降维成少量参数,再做处理。该网络由输入层,三对的二维卷积层和池化层,还有展平层组成。输入层即为上一节中大小为(128,128,3)的RGB矩阵,卷积层拥有64个大小为3的过滤器,且池化层的最大池化设定为3,展平层则将多维的特征输入映射为二维的特征输出。这样就能自动提取到我们所需要的视觉特征。
S30:对智能合约源代码进行词汇分割,生成顺序代码序列进而映射到词向量,并基于预设深度学习模型进行特征提取,获得对应的语义特征。
对于S30,首先将智能合约源代码进行词汇分割。由于大部分标识符由通过命名约定连接的许多单词组成,其中每个单词都显著影响代码的可读性。需要将使用下划线大小写和驼峰大小写的标识符按词拆开。例如“has_next_int”,“hasNextInt”这种,需要拆分为“hasnextint”。之后将顺序代码序列映射到词向量,再输入到预设深度学习模型进行特征提取。
S31:为了完成以上实例,将智能合约源代码进行词汇分割,将以驼峰命名的变量及函数名分割开,生成顺序代码序列。
S32:将顺序代码序列进行拼接,使用tokenizer将代码转换为对应的Token ID序列和SegmentID序列,同时生成PositionID序列。将TokenID序列、SegmentID序列、PositionID序列传入BERT模型的嵌入层中,经过多个transform编码器层再输出。获取BERT模型除嵌入层以外的所有编码器层的输出。从输出中提取Token嵌入、Segment嵌入和Position嵌入。
S33:将三种嵌入按照元素值相加,表示为BERT编码层的输入,放入BERT模型得到词向量输出。
S34:利用CNN将上一步中经过BERT词嵌入的语义信息进行识别和提取,得到关键特征的短序列,再放入BiLSTM模型中获得我们所需要的语义特征输出。从而解决单CNN模型导致的文本上下文依赖以及单BiLSTM模型导致的梯度消失或弥散问题。此处选用的CNN由Relu作为激活函数的两层卷积层和一层池化层组成。
S40:将智能合约源代码的每个字符转换为其对应的ASCII码,生成字符矩阵,并基于预设深度学习模型进行特征提取,获得对应的字符语义特征。
对于步骤S40,需要将代码转变为对应ASCII码的字符矩阵。这里采用与步骤S20相同的方法,删除记录的函数和库,降低代码的相似度。再输入到预设模型中提取特征。
S41:将合约的每个字符转换为便于识别的ASCII码,空白部分以-1替代,获得对应的字符矩阵。由于字符矩阵的大小由源代码长短所决定,在对于大多数合约进行筛选以后,我们将字符矩阵固定大小,以满足统一的实际使用需求,以防超出预定长度而被丢弃。
S42:将字符矩阵放入卷积神经网络进行特征提取,该神经网络同样由三对卷积层和池化层以及一个展平层组成,获得对应的字符语义特征。
S50:提取智能合约源代码中合约之间的继承关系,获得边与节点信息,并利用node2vec算法进行特征提取,获得对应的结构特征。
对于S50,需要提取合约之间的继承关系。继承关系可以通过关键词进行提取,也可以使用现成的智能合约分析工具提取。提取继承关系之后将其转化为邻接矩阵,输入到预设的算法中进行特征提取。
S51:根据智能合约源代码中的inherit、extends、is等关键字,获得合约之间的继承关系,其中一个合约可能继承于多个合约。
S52:将继承关系中的合约提取为节点与边,节点拥有独立的编号,边的存在以编号描述,两者共同组成图结构,生成对应的邻接矩阵。
S53:放入node2vec模型之中进行特征向量提取。Node2vec的同质性能让具有直接链接关系的两个节点,即距离近的节点应该有相似的embedding,这样能够让合约之间的继承关系有着更紧密的联系,从而获得对应的结构特征。
S60:组合四种特征,通过基于FC的分类器模型进行漏洞检测,并输出漏洞检测结果。
对于步骤S60,需要将提取的四种特征进行拼接,再输入到文本分类模型中,得到最后的漏洞检测结果,图11用于展示具体流程。针对不同的应用场景,研究者可以将特征之间任意组合拼接。并不局限于本发明提到的方法。
S61:将提取的视觉,语义,字符语义,继承结构四种特征进行向量拼接,使每个合约对应一个新的向量。
S62:将拼接后的新向量输入到基于FC的分类器中。首先经过第一个全连接层把整体维度降到32,再放入由全连接层及dropout层组成的分类器中,激活函数选用Relu。
S63:经过分类器之后,输出漏洞检测结果。本发明在智能合约缺陷检测领域有较强的适用性,对合约漏洞有较好的检测效果。
本实施方法特点在于通过对合约代码数据清洗标记,生成需要的智能合约源代码。将源代码通过分割,词向量嵌入,颜色标识,ASCII码转换,结构信息提取多种方式提取出多维度的特征,将多种特征相互组合,使用文本分类模型进行二分类漏洞检测,输出最后的检测结果,用于提高智能合约缺陷检测的精确度。
以上所述实施例仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换,均属于本发明的保护范围。
Claims (8)
1.一种solidity智能合约的缺陷检测方法,其特征在于,包括:
获取solidity智能合约代码的缺陷检测数据集;
对缺陷检测数据集的代码进行颜色标识后,对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量;
对缺陷检测数据集的代码进行词分割与词向量嵌入后,对缺陷检测数据集进行语义信息特征提取,得到语义特征向量;
将缺陷检测数据集的代码转换为ASCII码后,对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量;
对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量;
将视觉特征向量、语义特征向量、字符语义特征向量、继承特征向量连接在一起,生成一个新的特征向量,将新的特征向量输入分类器中对分类器进行训练,得到训练好的分类器;
将待检测的solidity智能合约的代码输入到训练好的分类器中进行漏洞检测,由分类器给出代码是否存在缺陷的判断。
2.根据权利要求1所述的一种solidity智能合约的缺陷检测方法,其特征在于,所述对缺陷检测数据集的代码进行颜色标识后,对缺陷检测数据集进行视觉信息特征提取,得到视觉特征向量,包括:
将缺陷检测数据集中的合约代码分为括号、关键字、计算符、标识符、货币单位、注释以及其他代码;
按照元素类型,将相同类型的合约代码标记相同的颜色;全部元素标记完成后,得到代码对应的彩色图像;
将彩色图像按照RGB颜色转换成数字表示的矩阵,将矩阵统一成相同大小,输入到CNN神经网络中,得到视觉特征向量。
3.根据权利要求1所述的一种solidity智能合约的缺陷检测方法,其特征在于,所述对缺陷检测数据集的代码进行词分割与词向量嵌入后,对缺陷检测数据集进行语义信息特征提取,得到语义特征向量,包括:
将缺陷检测数据集中的合约代码按照命名约定将其中的每个标识符拆分为单词,生成顺序代码序列;
将顺序代码序列进行拼接,使用tokenizer将顺序代码序列转换为对应的TokenID序列和SegmentID序列,同时生成PositionID序列,将TokenID序列、SegmentID序列、PositionID序列传入BERT模型的嵌入层中;
从嵌入层中提取Token嵌入、segment嵌入和Position嵌入,
将Token嵌入、Segment嵌入和Position嵌入按照元素值相加后输入到BERT模型的编码层中,由BERT模型的编码层输出词向量;
利用BiLSTM网络提取词向量的语义特征,得到语义特征向量。
4.根据权利要求3所述的一种solidity智能合约的缺陷检测方法,其特征在于,还包括:
在利用BiLSTM网络提取词向量的语义特征之前,利用CNN网络提取出词向量中包含关键特征的局部特征;
通过BiLSTM网络提取局部特征的长距离特征,得到语义特征。
5.根据权利要求2所述的一种solidity智能合约的缺陷检测方法,其特征在于,所述将缺陷检测数据集的代码转换为ASCII码后,对缺陷检测数据集的字符语义信息进行特征提取,得到字符语义特征向量,包括:
将缺陷检测数据集中的代码片段二维字符矩阵中,每一个字符、数字和符号转换为相应的ASCII值,同时保留所有的空格、水平制表符、行结束符;
将转化后的字符矩阵统一大小,不足的部分用-1填充。
将统一大小后的字符矩阵输入到与视觉信息提取相同的CNN神经网络中,提取出缺陷检测数据集的代码字符语义信息特征,得到字符语义特征向量。
6.根据权利要求1所述的一种solidity智能合约的缺陷检测方法,其特征在于,所述对缺陷检测数据集的继承结构信息进行特征提取,得到继承特征向量,包括:
提取缺陷检测数据集中代码的继承关系;
由继承合约指向被继承合约,生成合约对应的邻接矩阵;
将生成的邻接矩阵放入node2vec模型之中,提取出缺陷检测数据集的继承结构信息特征。
7.根据权利要求1所述的一种solidity智能合约的缺陷检测方法,其特征在于,获取solidity智能合约代码的缺陷检测数据集包括:
将solidity智能合约按照是否存在缺陷进行分类;
分类完成后,统计每个solidity智能合约中出现的函数名与库名,将经常出现的函数和库中代码从solidity智能合约代码数据中删除;
按照solidity智能合约的执行功能,将具有相同功能的代码去重,处理完成后得到缺陷数据集。
8.根据权利要求1所述的一种solidity智能合约的缺陷检测方法,其特征在于,所述将新的特征向量输入分类器中对分类器进行训练,包括:
利用全连接层将新的特征向量降维后放入由全连接层及dropout层组成的分类器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310374902.0A CN116595534A (zh) | 2023-04-10 | 2023-04-10 | 一种solidity智能合约的缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310374902.0A CN116595534A (zh) | 2023-04-10 | 2023-04-10 | 一种solidity智能合约的缺陷检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116595534A true CN116595534A (zh) | 2023-08-15 |
Family
ID=87610612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310374902.0A Pending CN116595534A (zh) | 2023-04-10 | 2023-04-10 | 一种solidity智能合约的缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116595534A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473170A (zh) * | 2023-12-27 | 2024-01-30 | 布比(北京)网络技术有限公司 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
-
2023
- 2023-04-10 CN CN202310374902.0A patent/CN116595534A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473170A (zh) * | 2023-12-27 | 2024-01-30 | 布比(北京)网络技术有限公司 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
CN117473170B (zh) * | 2023-12-27 | 2024-04-09 | 布比(北京)网络技术有限公司 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN111783100B (zh) | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 | |
US10956673B1 (en) | Method and system for identifying citations within regulatory content | |
US20210056300A1 (en) | Text extraction, in particular table extraction from electronic documents | |
CN111753290B (zh) | 软件类型的检测方法及相关设备 | |
CN112733156B (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN107862327B (zh) | 一种基于多特征的安全缺陷识别系统和方法 | |
KR102103511B1 (ko) | 코드 생성 장치 및 방법 | |
CN114341880A (zh) | 用于使神经网络的操作可视化的技术 | |
KR102439429B1 (ko) | 객체 추출이 용이한 어노테이션 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램 | |
CN115100739B (zh) | 人机行为检测方法、系统、终端设备及存储介质 | |
CN115344504B (zh) | 基于需求规格说明书的软件测试用例自动生成方法及工具 | |
CN116595534A (zh) | 一种solidity智能合约的缺陷检测方法 | |
CN114258550A (zh) | 用于修改神经网络的操作的技术 | |
CN113742205A (zh) | 一种基于人机协同的代码漏洞智能检测方法 | |
CN117454387A (zh) | 基于多维度的特征提取的漏洞代码检测方法 | |
CN116596860A (zh) | 循环肿瘤细胞图像的癌细胞分割方法、装置、设备及介质 | |
CN118468286A (zh) | 一种基于Solidity编写智能合约的缺陷筛查方法 | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
CN116361816B (zh) | 一种智能合约漏洞检测方法、系统、存储介质及设备 | |
CN118210937B (zh) | 一种基于图像分割与检索增强生成技术的图像审核方法及系统 | |
CN114595454B (zh) | 基于混合分析和特征融合的恶意js脚本检测方法 | |
CN118036008B (zh) | 恶意文件伪装检测方法 | |
KR102430398B1 (ko) | 지점 지정을 통한 어노테이션 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램 | |
CN110427615B (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 |