CN116578989A - 基于深度预训练神经网络的智能合约漏洞检测系统及方法 - Google Patents
基于深度预训练神经网络的智能合约漏洞检测系统及方法 Download PDFInfo
- Publication number
- CN116578989A CN116578989A CN202310584984.1A CN202310584984A CN116578989A CN 116578989 A CN116578989 A CN 116578989A CN 202310584984 A CN202310584984 A CN 202310584984A CN 116578989 A CN116578989 A CN 116578989A
- Authority
- CN
- China
- Prior art keywords
- model
- data set
- intelligent contract
- vulnerability detection
- 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.)
- Granted
Links
- 238000012549 training Methods 0.000 title claims abstract description 80
- 238000001514 detection method Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 18
- 238000007781 pre-processing Methods 0.000 claims abstract description 33
- 238000013138 pruning Methods 0.000 claims abstract description 15
- 238000004458 analytical method Methods 0.000 claims abstract description 11
- 238000010276 construction Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 24
- 239000012634 fragment Substances 0.000 claims description 15
- 238000012952 Resampling Methods 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000007613 environmental effect Effects 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000009966 trimming 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
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于深度预训练神经网络的智能合约漏洞检测系统及方法,系统包括:数据采集模块,用于通过多种传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;预处理模块,用于对智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;置信学习模块,与预处理模块连接,用于对预处理数据集进行结果共识与修剪,得到模型训练数据集;漏洞检测模型构建模块,与置信学习模块连接,用于基于模型训练数据集对CodeT5模型进行训练,得到漏洞检测模型;漏洞检测模块,与漏洞检测模型构建模块连接,用于通过漏洞检测模型判断智能合约是否存在漏洞。本系统提高了漏洞检测的准确性和效率,有助于区块链链上合约的环境安全。
Description
技术领域
本发明属于信息安全技术领域,尤其涉及一种基于深度预训练神经网络的智能合约漏洞检测系统及方法。
背景技术
以太坊是一种基于区块链技术的开放式智能合约平台,可以为各种业务提供去中心化的服务。智能合约是以太坊平台的核心功能,其代码是通过Solidity等高级编程语言编写的。然而,由于智能合约中的代码可能存在漏洞,如拒绝服务、重入漏洞、提前交易、整数溢出、时间戳控制、未经检查的低级调用与不正确的访问控制漏洞等,可能会导致资产损失、系统崩溃等风险,从而影响区块链平台的可信度、安全性和可靠性。因此,如何检测和修复智能合约中的漏洞是一项重要的研究任务。
现有的智能合约漏洞检测方法主要基于传统的静态分析、符号执行、模糊测试与新兴的人工智能检测等技术。然而,这些方法面临着一些挑战,如传统方法处理速度慢、误报率高、覆盖率低,而现有的基于使用多种准确率不一的传统工具标注的不平衡智能合约漏洞数据集进行训练的人工智能方法存在难以学习到漏洞的真实特征,难以处理复杂代码结构语义等问题。因此,开发一种高效、准确、自动化的智能合约漏洞检测框架具有重要的研究意义和应用价值。
发明内容
为解决上述技术问题,本发明提出了一种基于深度预训练神经网络的智能合约漏洞检测系统及方法,以解决传统方法处理速度慢、误报率高、覆盖率低,人工智能方法难以从不平衡且存在错误的不可信标签数据集中学习到代码结构复杂的漏洞真实特征的问题。
为实现上述目的,本发明提供了一种基于深度预训练神经网络的智能合约漏洞检测系统,所述系统包括:
数据采集模块,用于通过多种传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;
预处理模块,与所述数据采集模块连接,用于对所述智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;
置信学习模块,与所述预处理模块连接,用于对所述预处理数据集进行结果共识与修剪,得到质量更高的模型训练数据集;
漏洞检测模型构建模块,与所述置信学习模块连接,用于基于所述模型训练数据集通过AdamW优化器对CodeT5模型进行训练,得到漏洞检测模型;
漏洞检测模块,与所述漏洞检测模型构建模块连接,用于通过漏洞检测模型判断智能合约是否存在漏洞。
优选地,所述预处理模块包括函数片段生成单元、序列编码单元和重采样单元;
所述函数片段生成单元用于将智能合约代码编译为抽象语法树后遍历节点,提取函数级代码片段;
所述序列编码单元用于应用简化规则简化代码片段,生成序列标记;
所述重采样单元用于对生成序列标记的代码片段进行重采样分配权重,获得带有权重的预处理数据集。
优选地,所述置信学习模块包括噪声近似学习单元和置信评估单元;
所述噪声近似学习单元用于在预处理数据集上对CodeT5模型进行微调,获取模型预测标签和噪声标签之间的联合分布;
所述置信评估单元用于根据联合分布和置信度阈值对预处理数据集进行过滤处理,获得剪枝后的模型训练数据集。
优选地,所述漏洞检测模型构建模块包括分段单元和模型训练单元;
所述分段单元用于通过滑动窗口技术将模型训练数据集分段输入到CodeT5模型中;
所述模型训练单元用于根据输入到微调后的CodeT5模型中的模型训练数据集对微调后的CodeT5模型进行训练,获得漏洞检测模型。
本发明还提供了一种基于深度预训练神经网络的智能合约漏洞检测方法,包括以下步骤:
通过多种传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;
对所述智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;
对所述预处理数据集进行修剪,得到模型训练数据集;
基于所述模型训练数据集对CodeT5模型进行训练,得到漏洞检测模型;
通过漏洞检测模型判断智能合约是否存在漏洞。
优选地,对所述智能合约漏洞数据集进行预处理的方法包括:
将智能合约代码编译为抽象语法树后遍历节点,提取函数级代码片段;
应用简化规则简化代码片段,生成序列标记;
对生成序列标记的代码片段进行重采样分配权重。
优选地,所述得到模型训练数据集的方法包括:
在预处理数据集上对CodeT5模型进行微调,获取模型预测标签和噪声标签之间的联合分布;
根据联合分布和置信度阈值对预处理数据集进行过滤处理,获得剪枝后的模型训练数据集。
优选地,所述得到漏洞检测模型的方法包括:
通过滑动窗口技术将模型训练数据集分段输入到微调后的CodeT5模型中;
基于模型训练数据集通过AdamW优化器对微调后的CodeT5模型进行训练,获得漏洞检测模型。
与现有技术相比,本发明具有如下优点和技术效果:
本发明可以利用预训练的CodeT5模型和置信学习来检测和分析以太坊智能合约中的七种漏洞,不需要人工定义的规则且能够感知智能合约代码语义与标识符,可用于检测代码中未知的潜在漏洞并指出疑似存在漏洞的函数位置,提高了漏洞检测的准确性和效率,有助于区块链链上合约的环境安全。
本发明可以利用置信学习的方法,改善由多种准确率不一的传统工具标注数据集中存在错误、噪音标签的问题,有助于模型在后续的训练过程中学习到真实的漏洞特征,提高了模型的泛化能力和性能;
本发明可以利用滑动窗口技术来提取代码片段并定位漏洞位置,能够指出相关函数存在的漏洞以及漏洞的类型,而不仅仅指出是否存在漏洞,提高了漏洞检测的可解释性和细粒度。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明实施例的智能合约漏洞检测系统结构图;
图2为本发明实施例的智能合约漏洞检测方法流程图;
图3为本发明实施例的滑动窗口示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
如图1所示,本发明提出了一种基于深度预训练神经网络的智能合约漏洞检测系统,包括:
数据采集模块,用于通过多种准确率不一的传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;
预处理模块,与所述数据采集模块连接,用于对所述智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;
置信学习模块,与所述预处理模块连接,用于对所述预处理数据集进行结果共识与修剪,得到质量更高的模型训练数据集;
漏洞检测模型构建模块,与所述置信学习模块连接,用于基于所述模型训练数据集通过AdamW优化器对CodeT5模型进行训练,得到漏洞检测模型;
漏洞检测模块,与所述漏洞检测模型构建模块连接,用于通过漏洞检测模型判断智能合约是否存在漏洞。
数据预处理模块包括:代码片段生成单元,片段编码单元,重采样单元;代码片段生成单元对待检测智能合约源代码进行编译后进行抽象语法树分析,提取其中的函数级代码片段,从而在最小粒度上保留可能存在的漏洞信息;片段编码单元利用基于BPE(BytePair Encoding,字节对编码)算法的文本编码器,基于智能合约代码词汇表对函数级代码片段进行编码、分词、映射转化为语义丰富的子词Token序列;重采样单元使用IDS(Imbalanced-Dataset-Sampler,不平衡数据集采样器)对数据集进行重采样,根据每个类别的出现概率为每个数据样本分配一个权重,使得少数类的样本权重更高,多数类的样本权重更低,以平衡训练阶段使用的数据集,最终获得带有权重的预处理数据集。
其中,置信学习模块包括噪声近似学习单元和置信评估单元;
噪声近似学习单元用于在预处理后的原始数据集上对CodeT5模型进行微调,获取模型预测标签和噪声标签之间的联合分布;
置信评估单元用于根据联合分布和置信度阈值对预处理数据集进行过滤处理,获得剪枝后的高质量模型训练数据集。
漏洞检测模型构建模块包括分段单元和模型训练单元;
分段单元用于通过滑动窗口技术将模型训练数据集分段输入到CodeT5模型中;
模型训练单元用于根据输入到CodeT5模型中的模型训练数据集对CodeT5模型进行训练,获得漏洞检测模型。
实施例二
如图2所示,本发明提出了一种基于深度预训练神经网络的智能合约漏洞检测方法,包括以下步骤:
步骤101:采用了由9种传统工具标注的开源项目SmartBugs智能合约漏洞数据集,使用Solidity编译器将数据集中的代码编译为抽象语法树(AST)形式的表示。然后,使用基于静态分析方法对智能合约源代码进行遍历扫描,得到每个智能合约对应的函数级代码片段,根据简化规则对代码片段进行简化以减少其不必要词码数量以便模型学习到最相关的漏洞信息。最后,将收集到的智能合约源代码和标签组成一个原始数据集。
步骤102:使用重采样模块中的IDS(Imbalanced-Dataset-Sampler,不平衡数据集采样器)根据每个类别的出现概率为每个数据样本分配一个权重,按照逆类频率权重对训练数据进行采样。
步骤103:使用置信学习方法对重采样后的数据集进行修剪和优化。由于是采用多种准确率不一的传统分析工具对数据集进行标注,单个工具的准确性较低,存在误报、漏报的情况,且多种工具之间如何进行共识也存在困难,这些均会导致原始数据集中存在较多的噪声标签,影响使用此训练集进行训练模型的学习效果。因此,本步骤使用置信学习来识别和纠正噪声标签,从而提高数据集的质量,确保模型在后续训练中学习到真实的漏洞特征具体地说,本步骤包括以下子步骤:
子步骤1031:对代码片段进行编码后使用CodeT5模型作为我们的近似学习模型,应用基于等级的MLC损失函数ZLPR对基于重采样数据的近似学习模型进行微调,来估计噪声标签和预测标签之间的联合分布。
子步骤1032:根据此分布与指定的置信度阈值,由专家检查分数较低的数据标签并对其进行过滤,即可去除带有错误标签的样本,并保留用于下游任务的高置信度数据作为训练集。
经过上述子步骤,可以得到一个经过置信学习修剪和优化的数据集,该数据集具有更高的准确性和真实性。
步骤104:使用预训练的CodeT5模型在经过置信学习修剪和优化的数据集上进行微调训练。首先,加载预训练的CodeT5模型,该模型是基于Transformer架构的大规模预训练模型,可以对源代码进行自然语言处理,从而实现代码分类等任务。然后,将经过置信学习修剪和优化的数据集利用滑动窗口技术将已编码代码片段分段输入,对CodeT5模型进行微调训练,使其能够对以太坊智能合约中的七种漏洞类型进行识别和分类。最后,保存微调后的CodeT5模型,作为漏洞检测模型。
在上述基础上,进一步提供了驱动实施方式一中的模型进行以太坊智能合约漏洞检测的方法,包括以下步骤:
步骤201:读取待检测的Solidity源代码文件,通过数据预处理模块对文件进行编译、AST分析、简化、编码。
步骤202:应用滑动窗口技术对每个代码片段进行切分,得到若干个子代码编码片段Tokens。
步骤203:将子代码片段依次输入基于语义与感知符的漏洞检测模块,从而利用模块中包含的步骤104中的模型对函数级代码片段进行漏洞分类,得到一个七维二进制标签,从而确定每个函数是否存在任意七种漏洞,并根据子代码片段在代码片段与原始源代码中的位置定位存在漏洞的函数。
通过上述步骤,可以实现一种基于预训练深度神经网络与置信学习的以太坊智能合约漏洞检测框架,该框架可以有效地检测和分析以太坊智能合约中的七种漏洞类型(即访问控制、算术溢出、拒绝服务、提前交易、重入漏洞、时间操纵、未检查的低级调用),提高了漏洞检测的准确性、效率、可解释性和细粒度。
本发明的模型最大序列长度可以超越传统Transformer结构的512的长度限制,从而处理长序列文本任务。
同时,考虑到实际设备的性能,在步骤202中提供了一种基于片段整合的替代预测方法,将超长序列分割成多个长度固定的块,通过图3所示的滑动窗口技术预测每个部分,并综合预测结果,从而实现漏洞定位。
为了确保模型快速、稳定、准确,我们使用AdamW作为优化器,学习率为5e-5,adamepsilon为1e-8,warmupsteps为100,批量大小为8,模型训练的最大epoch为100。在我们的方法中,训练集、验证集和测试集按6:2:2划分。我们在下游分类器中添加了一个dropout层,dropout概率为0.5,以进一步避免模型过拟合。我们还使用了一个耐心值为5的早停策略。
此外,为了纠正我们的训练数据集中存在的类别不平衡问题,我们在步骤102结合不平衡数据集采样器的同时在步骤103的模型中实现了零界对数和指数与成对排序损失函数(zero-bounded log-sum-exp&pairwise rank-based,ZLPR)损失函数,以恢复类别分布的平衡。
其中wi是第i个类别的采样权重,N是总的样本数量,K是总的类别的数量,ni是第i个类别的样本数量,该公式保证每个类别的采样权重与其样本数量成反比,从而使得每个类别最终被采样到相同或者相近的次数。
ZLPR损失函数由三部分组成:第一部分是零界对数和指数(zero-bounded log-sum-exp)项,它可以使正确的标签得分高于错误的标签,并且当所有正确的标签得分都为正时,该项为零;第二部分是成对排序(pairwise rank-based)项,它可以使正确的标签之间和错误的标签之间的得分差异尽可能大,并且当所有正确的标签得分都高于错误的标签得分加上边界值时,该项为零;第三部分是一个平衡系数λ,它可以调节前两部分项之间的权重。
该损失函数借助于logsumexp的良好性质,对于多标签分类问题自动平衡了每一项的权重。
另外,我们还引入了dropout层,在每次训练迭代中,以一定的概率让某些神经元的输出为零,从而减少神经元之间的相互依赖,防止模型过度依赖某些特征或者形成共适应。我们还采用了早停技术,在训练过程中监控验证集上的性能,并在验证集上的性能不再提升时即停止训练,本发明采用这些方法以有效地提高模型的泛化能力和鲁棒性,来缓解了机器学习模型可能存在的过拟合问题。
步骤103中使用了开源项目Cleanlab结合人工评估方法来去噪数据,具体原理如下:
计数:估计标签的联合分布,即给定的标签(noisy label)和真实的标签(truelabel)之间的关系。这一步使用了一个统计数据结构,称为置信分布,它根据每个样本属于给定标签的预测概率和每个类别的平均置信度(self-confidence),将样本分配到不同的区域,并计算每个区域的样本数。公式如下:
其中,tj是类别j的平均自信度,即属于该类别的样本预测概率的均值:
排序:根据联合分布中的计数,对样本进行排序,找出最有可能是标签错误或噪声的样本。本发明结合按类别剪枝(prune by class)、按噪声率剪枝(prune by noise rate)的方法,移除那些在置信分布中位于非对角线区域(即给定标签和真实标签不一致)且预测概率较低或边缘较大(即与给定标签相差较远)的样本。
剪枝:根据排序结果,由专家人工检查,移除那些被判定为标签错误或噪声的样本,得到清洗后的数据集。这一步结合重采样模块,根据每个类别中剩余样本的比例,对损失函数进行加权,以弥补移除样本带来的数据不平衡问题。
置信学习技术可以用于任何分类器和任何数据集,不需要修改模型或损失函数,只需要使用模型输出的预测概率和给定的标签。它可以有效地识别和移除标签错误或噪声,提高数据质量和模型性能。
为了体现本发明的优势,我们将应用了置信学习技术(CL)的标识符感知CodeT5模型与其他使用各种架构和技术来检测以太坊智能合约中漏洞的模型进行了比较。我们的基准模型包括BERT、T5和CodeT5,这些模型分别使用和不使用置信学习方法来修剪数据集。
我们使用F1分数作为主要指标,评估每个模型在每种漏洞类型上的性能。
结果如下表所示。
可以看到,我们的CodeT5与置信学习模型在所有漏洞类型上都优于其他基准模型,并获得了最高的Micro-F1分数95.91%和Macro-F1分数92.93%。这表明,我们的模型通过集合标识符感知CodeT5模型与置信学习技术,可以有效地并精确地检测以太坊智能合约中的七种漏洞。
综上可见,本发明与现有技术相比的显著优势概括如下:
本发明所使用的模型是基于置信学习剪枝后的数据集训练而来,有效地改良了使用传统工具标注的智能合约漏洞数据集的标注一致性差和存在错误、噪音标签的问题,有助于模型学习到真实的漏洞特征,具有更好的泛化能力和性能。而基于该深度预训练神经网络模型的智能合约漏洞检测框架,具有感知代码的语义与感知符的能力而不需要专家定义的规则,因此具备发掘代码中未知漏洞的能力,该框架还借助滑动窗口技术将编码后的函数级代码片段分批输入模型,输出每个函数可能存在的漏洞,能够提高深度学习方法的可解释性,有助于提高区块链智能合约的安全性与可靠性,并为进一步研究合约代码生成与解释任务提供了新见解。
以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (8)
1.基于深度预训练神经网络的智能合约漏洞检测系统,其特征在于,所述系统包括:
数据采集模块,用于通过多种传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;
预处理模块,与所述数据采集模块连接,用于对所述智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;
置信学习模块,与所述预处理模块连接,用于对所述预处理数据集进行结果共识和修剪,得到模型训练数据集;
漏洞检测模型构建模块,与所述置信学习模块连接,用于基于所述模型训练数据集通过AdamW优化器对CodeT5模型进行训练,得到漏洞检测模型;
漏洞检测模块,与所述漏洞检测模型构建模块连接,用于通过漏洞检测模型判断智能合约是否存在漏洞。
2.根据权利要求1所述的基于深度预训练神经网络的智能合约漏洞检测系统,其特征在于,
所述预处理模块包括函数片段生成单元、序列编码单元和重采样单元;
所述函数片段生成单元用于将智能合约代码编译为抽象语法树后遍历节点,提取函数级代码片段;
所述序列编码单元用于应用简化规则简化代码片段,生成序列标记;
所述重采样单元用于对生成序列标记的代码片段进行重采样分配权重,获得带有权重的预处理数据集。
3.根据权利要求1所述的基于深度预训练神经网络的智能合约漏洞检测系统,其特征在于,
所述置信学习模块包括噪声近似学习单元和置信评估单元;
所述噪声近似学习单元用于在预处理数据集上对CodeT5模型进行微调,并获取模型预测标签和噪声标签之间的联合分布;
所述置信评估单元用于根据联合分布和置信度阈值对预处理数据集进行过滤处理,获得剪枝后的模型训练数据集。
4.根据权利要求1所述的基于深度预训练神经网络的智能合约漏洞检测系统,其特征在于,
所述漏洞检测模型构建模块包括分段单元和模型训练单元;
所述分段单元用于通过滑动窗口技术将模型训练数据集分段输入到CodeT5模型中;
所述模型训练单元用于根据输入到微调后的CodeT5模型中的模型训练数据集对微调后的CodeT5模型进行训练,获得漏洞检测模型。
5.基于深度预训练神经网络的智能合约漏洞检测方法,其特征在于,包括以下步骤:
通过多种准确率不一的传统分析工具对智能合约进行标注,获得智能合约漏洞数据集;
对所述智能合约漏洞数据集进行预处理,获得带有权重的预处理数据集;
对所述预处理数据集进行结果共识与修剪,得到模型训练数据集;
基于所述模型训练数据集对CodeT5模型进行训练,得到漏洞检测模型;
通过漏洞检测模型判断智能合约是否存在漏洞。
6.根据权利要求5所述的基于深度预训练神经网络的智能合约漏洞检测方法,其特征在于,
对所述智能合约漏洞数据集进行预处理的方法包括:
将智能合约代码编译为抽象语法树后遍历节点,提取函数级代码片段;
应用简化规则简化代码片段,生成序列标记;
对生成序列标记的代码片段进行重采样分配权重。
7.根据权利要求5所述的基于深度预训练神经网络的智能合约漏洞检测方法,其特征在于,
所述得到模型训练数据集的方法包括:
在预处理数据集上对CodeT5模型进行微调,并获取模型预测标签和噪声标签之间的联合分布;
根据联合分布和置信度阈值对预处理数据集进行过滤处理,获得剪枝后的模型训练数据集。
8.根据权利要求5所述的基于深度预训练神经网络的智能合约漏洞检测方法,其特征在于,
所述得到漏洞检测模型的方法包括:
通过滑动窗口技术将模型训练数据集分段输入到微调后的CodeT5模型中;
基于模型训练数据集通过AdamW优化器对微调后的CodeT5模型进行训练,获得漏洞检测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310584984.1A CN116578989B (zh) | 2023-05-23 | 2023-05-23 | 基于深度预训练神经网络的智能合约漏洞检测系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310584984.1A CN116578989B (zh) | 2023-05-23 | 2023-05-23 | 基于深度预训练神经网络的智能合约漏洞检测系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116578989A true CN116578989A (zh) | 2023-08-11 |
CN116578989B CN116578989B (zh) | 2024-03-22 |
Family
ID=87541028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310584984.1A Active CN116578989B (zh) | 2023-05-23 | 2023-05-23 | 基于深度预训练神经网络的智能合约漏洞检测系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578989B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN113221125A (zh) * | 2021-05-31 | 2021-08-06 | 河海大学 | 基于TreeGAN的生成带有漏洞智能合约的方法及系统 |
CN113378178A (zh) * | 2021-06-21 | 2021-09-10 | 大连海事大学 | 一种基于深度学习的图自信学习软件漏洞检测方法 |
CN114048464A (zh) * | 2022-01-12 | 2022-02-15 | 北京大学 | 基于深度学习的以太坊智能合约安全漏洞检测方法及系统 |
CN114218580A (zh) * | 2021-12-07 | 2022-03-22 | 北京工业大学 | 一种基于多任务学习的智能合约漏洞检测方法 |
US20220382527A1 (en) * | 2021-05-18 | 2022-12-01 | Salesforce.Com, Inc. | Systems and methods for code understanding and generation |
-
2023
- 2023-05-23 CN CN202310584984.1A patent/CN116578989B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
US20220382527A1 (en) * | 2021-05-18 | 2022-12-01 | Salesforce.Com, Inc. | Systems and methods for code understanding and generation |
CN113221125A (zh) * | 2021-05-31 | 2021-08-06 | 河海大学 | 基于TreeGAN的生成带有漏洞智能合约的方法及系统 |
CN113378178A (zh) * | 2021-06-21 | 2021-09-10 | 大连海事大学 | 一种基于深度学习的图自信学习软件漏洞检测方法 |
CN114218580A (zh) * | 2021-12-07 | 2022-03-22 | 北京工业大学 | 一种基于多任务学习的智能合约漏洞检测方法 |
CN114048464A (zh) * | 2022-01-12 | 2022-02-15 | 北京大学 | 基于深度学习的以太坊智能合约安全漏洞检测方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116578989B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111259394B (zh) | 一种基于图神经网络的细粒度源代码漏洞检测方法 | |
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN109885479B (zh) | 基于路径记录截断的软件模糊测试方法及装置 | |
CN111783100A (zh) | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 | |
CN108763931A (zh) | 基于Bi-LSTM和文本相似性的漏洞检测方法 | |
CN116049831A (zh) | 一种基于静态分析和动态分析的软件漏洞检测方法 | |
CN111191275A (zh) | 敏感数据识别方法、系统及其装置 | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
CN113127339B (zh) | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 | |
CN113672931B (zh) | 一种基于预训练的软件漏洞自动检测方法及装置 | |
CN113138920B (zh) | 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置 | |
CN115357719B (zh) | 基于改进bert模型的电力审计文本分类方法及装置 | |
CN112215013A (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
CN116578989B (zh) | 基于深度预训练神经网络的智能合约漏洞检测系统及方法 | |
CN114547611A (zh) | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 | |
CN116702160B (zh) | 一种基于数据依赖增强程序切片的源代码漏洞检测方法 | |
Meng et al. | [Retracted] A Deep Learning Approach for a Source Code Detection Model Using Self‐Attention | |
CN117454387A (zh) | 基于多维度的特征提取的漏洞代码检测方法 | |
CN114817932A (zh) | 基于预训练模型的以太坊智能合约漏洞检测方法及系统 | |
CN113268732A (zh) | Solidity智能合约相似性检测方法及系统 | |
CN115146062A (zh) | 融合专家推荐与文本聚类的智能事件分析方法和系统 | |
CN116483437A (zh) | 一种基于表示学习的跨语言或跨库应用程序接口映射方法 | |
CN115952076A (zh) | 一种基于代码语义和度量的代码异味识别方法 | |
CN114996705A (zh) | 基于脆弱性类型和Bi-LSTM的跨软件脆弱性检测方法及系统 |
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 |