CN116595537A - 一种基于多模态特征的生成式智能合约的漏洞检测方法 - Google Patents
一种基于多模态特征的生成式智能合约的漏洞检测方法 Download PDFInfo
- Publication number
- CN116595537A CN116595537A CN202310569948.8A CN202310569948A CN116595537A CN 116595537 A CN116595537 A CN 116595537A CN 202310569948 A CN202310569948 A CN 202310569948A CN 116595537 A CN116595537 A CN 116595537A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- vulnerability
- intelligent
- contract
- model
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 117
- 239000013598 vector Substances 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012549 training Methods 0.000 claims abstract description 29
- 238000003062 neural network model Methods 0.000 claims abstract description 14
- 230000011218 segmentation Effects 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 238000004140 cleaning Methods 0.000 claims description 3
- 238000005065 mining Methods 0.000 claims description 3
- 238000002372 labelling Methods 0.000 claims description 2
- 230000015654 memory Effects 0.000 claims description 2
- 230000004927 fusion Effects 0.000 abstract description 5
- 230000001419 dependent effect Effects 0.000 description 12
- 239000000284 extract Substances 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 238000013256 Gubra-Amylin NASH model Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction 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/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- 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
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- 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
-
- 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/0475—Generative 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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/094—Adversarial learning
-
- 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)
- 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)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于多模态特征的生成式智能合约的漏洞检测方法。该方法包括:获取进行了标签分类的智能合约数据集;提取智能合约的多模态特征,得到智能合约的多模态特征向量;利用智能合约的多模态特征向量和VAE‑GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的综合数据集;使用神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练智能合约漏洞检测模型,利用训练好的智能合约漏洞检测模型对待检测的智能合约进行漏洞检测。本发明方法通过特征融合使智能合约语义信息更加丰富,通过大量智能合约样本训练神经网络模型自动挖掘源码及操作码中的多模态特征,避免了人工定义的主观性。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于多模态特征的生成式智能合约的漏洞检测方法。
背景技术
随着区块链技术的发展,以智能合约为代表的区块链技术2.0时代已经到来,智能合约安全问题备受关注。由于区块链的不可篡改性,智能合约一旦上链,就不能进行修改。且在代码设计的过程中,不可避免地会出现编码漏洞、设计缺陷等问题。有缺陷的代码在上链之后易被恶意用户攻击,并且程序员难以对缺陷进行修改,从而造成一定的经济损失。频繁出现的智能合约漏洞一方面给用户造成了巨大损失,另一方面严重威胁着智能合约的生态环境,带来信任危机。因此,对智能合约高效漏洞检测的需求与日俱增,如何高效快速地实现智能合约漏洞检测成为亟待解决的问题。
目前,现有技术中针对智能合约漏洞检测的方法主要集中在两个方面:基于规则的检测模型和基于深度学习的检测方法。现有方法普遍关注智能合约的单一模态,从智能合约源码、操作码或者字节码中提取一种形式的特征,存在特征提取不完全和语义信息丢失的风险。且都是在目前已经给出明确定义的漏洞类型中提取特征,是在了解具体某一漏洞特征的基础上探索的方法,很少有涉及对未知漏洞的检测。然而智能合约的功能多样,实际在执行过程中出现的异常类型也是复杂的,因此,不应该局限于现有漏洞的检测,还应该探索对未知漏洞检测的方法。
现有技术中的一种智能合约漏洞检测模型通过将字节码解析成操作码,然后从智能合约的简化操作码中提取二进制特征作为检测模型的输入。
现有技术中的一种智能合约漏洞检测方案构建了符号执行工具Oyente来检测预定义的四种智能合约安全漏洞,将程序变量的值表示为输入符号值的符号表达式。每个符号路径都有一个路径条件,即符号输入的公式,这些输入必须满足这些约束才能执行该路径,否则路径不可执行。
现有技术中的一种智能合约漏洞检测方案利用图神经网络和专家知识实现智能合约漏洞检测,将源代码的丰富控制流和数据流语义转换为智能合约图,并且设计了节点消除阶段进行图归一化。构造时间信息传播网络从归一化图中提取图特征并与设计的专家模式相结合,得到最终的检测系统。
上述现有技术中的智能合约漏洞检测方案的缺点包括:这些方案只从单一角度提取智能合约特征,存在信息丢失风险。可能不会覆盖所有的执行路径,从而导致误报,不涉及对未知漏洞的检测。
现有方案大多集中于已知的固定漏洞类型中,检测类型单一,并不涉及未知漏洞的检测方法。
发明内容
本发明的实施例提供了一种基于多模态特征的生成式智能合约的漏洞检测方法,以实现有效地对智能合约进行漏洞检测。
为了实现上述目的,本发明采取了如下技术方案。
一种基于多模态特征的生成式智能合约的漏洞检测方法,包括:
获取进行了标签分类的智能合约数据集;
提取智能合约的多模态特征,将各种多模态特征进行拼接,得到智能合约的多模态特征向量;
利用智能合约的多模态特征向量和VAE-GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集;
使用神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,得到训练好的智能合约漏洞检测模型;
利用训练好的智能合约漏洞检测模型对待检测的智能合约进行漏洞检测。
优选地,所述的获取进行了标签分类的智能合约数据集,包括:
选取包含了源代码信息的智能合约数据集,使用各种漏洞检测工具对所述智能合约数据集进行漏洞检测,根据检测出的漏洞类型对智能合约数据集中的智能合约进行分类标签,将不同漏洞检测工具的检测结果分别写入csv文件,得到各种漏洞检测工具的检测结果的公共智能合约列表,对公共智能合约列表的检测结果进行分析,对多种检测工具的检测结果相同的智能合约进行确认,将错误的分类标签进行修正,得到进行了标签分类的智能合约数据集。
优选地,所述的提取智能合约的多模态特征,将各种多模态特征进行拼接,得到智能合约的多模态特征向量,包括:
对智能合约进行数据清洗,以行为单位,删除智能合约中的注释行与行后所带注释,在遍历行的同时对单词进行切分,将分词结果存储在数组中,利用分词器根据词典将所述分词结果转换为数字序列,统计每个智能合约中数字序列出现的次数,该次数即为分词出现的个数,将分词出现的次数作为智能合约的源码token特征;
采用本地编译器对智能合约进行批量处理,将智能合约的源代码编译为字节码;通过pyevmasm库中的assemble_hex函数将所述字节码解析为操作码,根据简化规则对所述操作码进行简化,所述简化规则包括:去除操作数和将功能相似的操作码归为一类,通过2-gram分词器获取操作码中上下文语义关系,在每个智能合约中统计每个2-gram分词出现的次数,将该次数作为智能合约的操作码特征;
将所述智能合约的源码token特征和操作码特征操作码特征进行拼接,得到智能合约的多模态特征向量,第i个智能合约的多模态特征向量用fi表示,其中fi=[bi, 1...bi,NF],NF为每个智能合约的特征总数,bi,j表示第i个智能合约中第j个特征的出现次数,所述第j个特征为操作码特征或源码特征;
bi,j=ci,j/ci,all
ci,j为第i个智能合约中第j个特征的出现次数,ci,all为第i个智能合约中所有特征的总出现次数。
优选地,所述的利用智能合约的多模态特征向量和VAE-GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集,包括:
构建VAE-GAN生成模型,所述VAE-GAN生成模型由编码器,生成器和判别器组成,将包含重入漏洞、时间戳依赖漏洞和/或交易顺序依赖漏洞的智能合约的多模态特征向量F=[f1,f2,...,fn]输入VAE-GAN生成模型的编码器,通过z~Enc(f)=q(z|f)编码得到低维特征向量Z=[z1,z2,...,zn],生成器通过将所述低维特征向量Z=[z1,z2,...,zn]映射到数据空间,
z代表单个合约的特征向量f经过编码器得到的低维向量特征,Gen代表生成网络,代表低维向量特征z经过生成器映射得到的数据空间;
判别器的输入包括生成的数据空间以及真实特征向量f,输出对于真假数据的判断结果;
所述生成器和所述判别器采用神经网络进行对抗训练,原始VAE-GAN生成模型在经过生成器与判别器的对抗训练后达到最佳状态,即判别器无法确定数据来自真实数据集还是生成器,使用训练好的VAE-GAN生成模型利用智能合约的多模态特征向量生成未知漏洞特征数据,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集。
优选地,所述的使用神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,得到训练好的智能合约漏洞检测模型,包括:
使用长短期记忆网络LSTM神经网络模型建立智能合约漏洞检测模型,设置智能合约漏洞检测模型的激活函数为sigmoid,使用随机梯度下降优化算法和二元交叉熵损失函数编译定义智能合约漏洞检测模型,使网络适合1,000个epoch;
利用所述含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,自动学习和挖掘智能合约的多模态特征,得到训练好的智能合约漏洞检测模型。
由上述本发明的实施例提供的技术方案可以看出,本发明基于VAE-GAN生成模型设计一种含未知漏洞在内的智能合约漏洞检测方法,分别从源码及操作码中提取token和2-gram分词作为特征向量,通过特征融合使智能合约语义信息更加丰富;通过大量智能合约样本训练神经网络模型自动挖掘源码及操作码中的多模态特征,避免了人工定义的主观性;使用VAE-GAN模型的生成网络和判别网络对抗训练未知漏洞特征,由现有漏洞特征生成新的未知特征并构建含有未知漏洞的综合数据集。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于多模态特征的生成式智能合约的漏洞检测方法的实现原理图;
图2为本发明实施例提供的一种基于多模态特征的生成式智能合约的漏洞检测方法的处理流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
本发明实施例提取智能合约的源码方面和操作码方面的多模态特征,通过从智能合约的源码中提取token特征以及简化操作码中提取2-gram分词,充分获取智能合约中代码语义信息,保证了特征的多样性和充分性。
本发明通过一万条左右带标签的智能合约样本训练神经网络模型,利用神经网络模型自动挖掘源码及操作码中的多模态特征,避免了人工定义的主观性,使模型适用于更多的漏洞类型。
本发明利用生成模型将已知漏洞中提取的多模态特征训练生成未知漏洞特征,用生成特征描述在重入漏洞、时间戳依赖漏洞以及交易顺序依赖漏洞的基础上可能存在的其他智能合约异常,作为含有未知漏洞的智能合约添加到已有数据集中。除了用于一般漏洞的检测外,该模型根据生成模型训练得到的漏洞特征数据,可用于探索涉及重入漏洞、时间戳依赖漏洞以及交易顺序依赖漏洞的更复杂的交互漏洞类型。
本发明提供的一种基于多模态特征的生成式智能合约的漏洞检测方法的实现原理图如图1所示,具体处理流程如图2所示,包括如下的处理步骤:
步骤S1.获取进行了标签分类的智能合约数据集。
为了验证所提出的漏洞检测方法,需要一个可靠的进行了标签分类的智能合约数据集。
本发明标注了智能合约中的重入漏洞、时间戳依赖漏洞以及交易顺序依赖漏洞。为了确保标签的准确性,分别采用了Oyente和Slither漏洞检测工具对智能合约数据集中的各个智能合约进行检测,检测结果中包括智能合约中的漏洞类型或者没有包含漏洞,对智能合约数据集中的各个智能合约进行标签分类。
步骤S2.提取智能合约的多模态特征,将各种多模态特征进行拼接,得到智能合约的多模态特征向量。
本发明关注智能合约的多模态特征以提取丰富的语义信息,首先,从智能合约的简化操作码中提取2-gram特征,获取操作码中上下文信息,接着,根据预训练模型Codebert预先构建的词典将智能合约的分词转换为数字序列,从数字序列中提取token特征,将操作码中上下文信息和token特征融合,得到智能合约的多模态特征向量。
步骤S3.利用智能合约的多模态特征向量和VAE-GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的综合数据集。
将标记出的包含漏洞特征的智能合约的多模态特征向量输入VAE-GAN生成模型,其中VAE模型编码后的输出作为GAN生成器的输入,通过GAN的生成器和判别器的对抗训练,生成未知漏洞特征。将上述进行了标签分类的智能合约数据集与新生成的漏洞智能合约合并,输出含有未知漏洞特征的综合数据集。
步骤S4.使用LSTM(Long Short-Term Memory,长短期记忆网络)神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练上述智能合约漏洞检测模型,自动学习和挖掘智能合约的多模态特征,以达到自动化检测的效果。得到训练好的智能合约漏洞检测模型。
在大量带标签数据的基础上学习智能合约特征并训练神经网络,挖掘智能合约漏洞特征以达到自动化检测的效果。通过该训练,模型不仅可以检测已知漏洞,还能对未知漏洞类型起到预防的效果。
步骤S5.利用训练好的智能合约漏洞检测模型对待检测的智能合约进行漏洞检测。
具体的,上述步骤S1包括:
数据集选择,以Messi-Q在GitHub上发布的以太坊数据集作为研究对象,该数据集中包含了智能合约的源代码信息,用于评估所提出的漏洞检测方法。
分别使用漏洞检测工具Oyente和Slither为智能合约加标签,在漏洞检测工具的批量检测脚本中加入异常处理模块,将检测失败的智能合约及无版本号的智能合约去除,根据不同工具可检测智能合约的漏洞类型,根据漏洞类型对智能合约进行分类,将不同工具的检测结果分别写入csv文件。由于不同工具检测漏洞类型并不相同,我们对Slither和Oyente等各种漏洞检测工具的检测结果进行合并,合并规则如下:
1)首先得到各种漏洞检测工具的检测结果的公共智能合约列表;
2)对公共智能合约列表的检测结果进一步分析,在本发明中,我们仅考虑对于同一漏洞两工具检测结果保持一致的智能合约作为研究对象。
S13:对两种检测工具Slither和Oyente检测结果相同的智能合约进行人工检测,并将错误的标签人工修改,确保标签的准确性。
具体的,上述步骤S2包括:
提取智能合约的源码特征,首先对智能合约进行数据清洗,以行为单位,删除智能合约中的注释行与行后所带注释,在遍历行的同时对单词进行切分,将分词结果存储在数组中,移除数组中的空字符。接着加载由预训练模型Codebert产生的Tokenizer分词器,调用convert_tokens_to_ids并根据Codebert预训练构建的词典将分词结果转换为数字序列,统计每个智能合约中数字序列出现的次数,该次数即为分词出现的个数,将分词出现的次数作为源码token特征;没有出现的分词均标记为0;最后,根据特征名称一一对应将分词出现的个数写入文件中,生成源码特征CSV文件。
提取智能合约的操作码特征,对于以太坊智能合约来说,solidity源码、solc编译器生成的字节码、以及解析得到的操作码一一对应。首先,采用本地solc编译器对智能合约进行批量处理,将智能合约的源代码编译为字节码;通过pyevmasm库中的assemble_hex函数将本地编译器生成的智能合约的字节码解析为操作码。
接着根据以太坊黄皮书给出的指令含义简化操作码,简化规则如下:
1)去除操作数;
2)将功能相似的操作码归为一类。
具体简化过程如下表1所示。最后提取智能合约2-gram分词来获取操作码中上下文语义关系。在每个智能合约中统计其每个2-gram分词出现的次数,将该次数作为智能合约的操作码特征。
表1操作码简化规则
多模态特征融合,通过将智能合约的操作码和源代码中提取的特征数量进行拼接,得到一个多模态特征向量,实现智能合约的多模态特征融合。将上述特征向量作为深度学习模型的输入。在特征向量中,合同的特征维度等于列数。对于第i个智能合约,特征向量用fi表示,其中fi=[bi,1...bi,NF],其中NF为每个智能合约的特征总数;bi,j表示第i个智能合约中第j个特征的出现次数,可以是操作码特征或源码特征,由bi,j=ci,j/ci,all给出,ci,j为第i个智能合约中第j个特征的出现次数,ci,all为第i个智能合约中所有特征的总出现次数。
具体的,上述步骤S3包括:
构建VAE-GAN生成模型,所述VAE-GAN生成模型由编码器,生成器和判别器组成,编码器可以将数据映射到一个低维的空间分布z,而解码器可以将这个空间分布还原回原始数据。将VAE的解码器作为GAN的生成器实现两个模型的拼接,一方面避免了生成器的随机输入造成了训练困难,另一方面通过判别器来判断生成的数据是否真实,进而帮助VAE提高真实性。
在训练过程中,将提取到的包含重入漏洞、时间戳依赖漏洞和/或者交易顺序依赖漏洞的智能合约的多模态特征向量F=[f1,f2,...,fn]输入VAE-GAN生成模型的编码器,根据z~Enc(f)=q(z|f)编码得到低维特征向量Z=[z1,z2,...,zn],生成网络通过将向量z映射到数据空间。z代表单个合约的特征向量f经过编码器得到的低维向量特征,Gen代表生成网络,/>代表低维向量特征z经过生成器映射得到的数据空间。数据空间指的是该生成器学习到的映射函数所定义的数据空间,作为生成的虚拟特征数据。
判别网络的输入包括以及真实特征向量f,输出对于真假数据的判断结果。生成器与判别器采用神经网络进行对抗训练,原始GAN模型在经过生成器与判别器的对抗训练后达到最佳状态(即判别器无法确定数据来自真实数据集还是生成器),使用该VAE-GAN生成模型生成理想的未知漏洞特征,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集。在VAE-GAN生成模型的训练过程中,通过损失函数优化相邻两层每两个神经元之间连线上的权重参数Wji(神经元j和神经元i之间的权重),利用反向传播算法和最优化方法来实现参数的调整,不断提高生成网络和判别网络的性能。其中生成网络的损失函数:LG=H(1,D(G(z)),判别网络的损失函数:L_{D}=H(1,D(x))+H(0,D(G(z))),上述式子中,G代表生成网络,D代表判别网络,H代表交叉熵,z是输入随机数据,x是真实数据,D(G(z))是对生成数据的判断概率,1代表数据绝对真实,0代表数据绝对虚假。H(1,D(G(z)))代表生成数据与1的距离,H(0,D(G(z)))代表生成数据与0的距离。对于生成器来说,H(1,D(G(z)))越小生成网络取得的效果越好,即判别器将生成数据判别为真数据。判别网络取得良好的效果时L_{D}取得最小值,即真实数据与1的距离小,生成数据与0的距离小。
步骤S3中每一组新生成的未知漏洞特征数据代表一个含有未知漏洞特征的智能合约,给这些未知漏洞特征数据对应的智能合约加标签后,与步骤S1中进行了标签分类的智能合约数据集进行组合,生成含有未知漏洞特征的综合数据集。
具体的,上述步骤S4包括:
使用LSTM(Long Short-Term Memory,长短期记忆网络)神经网络模型建立智能合约漏洞检测模型,设置智能合约漏洞检测模型的激活函数为sigmoid,使用随机梯度下降(sgd)优化算法和二元交叉熵(binary_crossentropy)损失函数编译定义智能合约漏洞检测模型,使网络适合1,000个epoch。
利用含有未知漏洞特征的综合数据集训练上述智能合约漏洞检测模型,自动学习和挖掘智能合约的多模态特征,以达到自动化检测的效果。得到训练好的智能合约漏洞检测模型。
综上所述,本发明实施例基于VAE-GAN生成模型设计一种含未知漏洞在内的智能合约漏洞检测方法,使用VAE-GAN生成模型解决了传统智能合约漏洞检测中难以检测未知漏洞的问题,该方法构建智能合约的多模态特征,分别从源码及操作码中提取token和2-gram分词后进行特征融合,使用VAE-GAN模型将多种已知漏洞特征不断地生成和判别以对抗生成未知漏洞特征,将新生成的智能合约数据加入已有数据集中构建含有未知漏洞的综合数据集,进而通过模型训练实现含未知漏洞在内的异常检测。
本发明通过丰富的数据样本训练神经网络模型用于检测包含未知漏洞在内的智能合约异常,自动挖掘智能合约源码及操作码中包含的语义特征,避免了人工定义的主观性。除了用于一般漏洞的检测外,该模型根据生成模型训练得到的漏洞特征数据,可以用于探索现实应用中可能存在的与重入漏洞、时间戳依赖漏洞以及交易顺序依赖漏洞相关的未知漏洞类型,规避智能合约中的潜在风险。
本发明将智能合约的源码特征和操作码特征作为检测智能合约漏洞的依据,利用智能合约代码的相似性将源程序分词并从中提取其token特征,并且从简化后的操作码中提取2-gram分词获取其上下文语义关系,在保证智能合约信息充分的同时减少特征维数,避免了维数灾难。将两种模态下的特征融合使智能合约信息更完整和全面,有助于模型高效学习智能合约特征,更加准确地辨别漏洞。
本发明解决了智能合约未知漏洞检测难的问题,建立VAE-GAN生成模型,将提取到的重入漏洞、时间戳依赖漏洞以及交易顺序依赖漏洞的多模态特征向量作为输入,经过VAE模型的解码器与GAN模型的判别器不断地对抗训练达到理想状态时,此时将生成模型应用于未知漏洞特征数据的生成,输出的每一组数据作为含有未知漏洞的智能合约加入已有的数据集,用于漏洞检测模型的训练。
系统时间的开销取决于待检测智能合约特征的提取和漏洞检测两个阶段,本系统在训练完成之后进行封装,待检测的智能合约源码输入系统首先需要经过多模态特征提取,自动地从源码及操作码中提取token和2-gram分词特征,避免了人工定义的主观性。同时,量化特征的方法使得在保障智能合约信息充分性的同时降低了模型的复杂度。本系统的深度学习模型预先在丰富的数据中学习并训练,挖掘智能合约漏洞特征并达到了自动化检测的效果,待检测智能合约特征提取后通过该模型进行漏洞检测,无论在检测的速度还是准确率上都有明显的优势。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (5)
1.一种基于多模态特征的生成式智能合约的漏洞检测方法,其特征在于,包括:
获取进行了标签分类的智能合约数据集;
提取智能合约的多模态特征,将各种多模态特征进行拼接,得到智能合约的多模态特征向量;
利用智能合约的多模态特征向量和VAE-GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集;
使用神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,得到训练好的智能合约漏洞检测模型;
利用训练好的智能合约漏洞检测模型对待检测的智能合约进行漏洞检测。
2.根据权利要求1所述的方法,其特征在于,所述的获取进行了标签分类的智能合约数据集,包括:
选取包含了源代码信息的智能合约数据集,使用各种漏洞检测工具对所述智能合约数据集进行漏洞检测,根据检测出的漏洞类型对智能合约数据集中的智能合约进行分类标签,将不同漏洞检测工具的检测结果分别写入csv文件,得到各种漏洞检测工具的检测结果的公共智能合约列表,对公共智能合约列表的检测结果进行分析,对多种检测工具的检测结果相同的智能合约进行确认,将错误的分类标签进行修正,得到进行了标签分类的智能合约数据集。
3.根据权利要求1或者2所述的方法,其特征在于,所述的提取智能合约的多模态特征,将各种多模态特征进行拼接,得到智能合约的多模态特征向量,包括:
对智能合约进行数据清洗,以行为单位,删除智能合约中的注释行与行后所带注释,在遍历行的同时对单词进行切分,将分词结果存储在数组中,利用分词器根据词典将所述分词结果转换为数字序列,统计每个智能合约中数字序列出现的次数,该次数即为分词出现的个数,将分词出现的次数作为智能合约的源码token特征;
采用本地编译器对智能合约进行批量处理,将智能合约的源代码编译为字节码;通过pyevmasm库中的assemble_hex函数将所述字节码解析为操作码,根据简化规则对所述操作码进行简化,所述简化规则包括:去除操作数和将功能相似的操作码归为一类,通过2-gram分词器获取操作码中上下文语义关系,在每个智能合约中统计每个2-gram分词出现的次数,将该次数作为智能合约的操作码特征;
将所述智能合约的源码token特征和操作码特征操作码特征进行拼接,得到智能合约的多模态特征向量,第i个智能合约的多模态特征向量用fi表示,其中fi=[bi,1...bi,NF],NF为每个智能合约的特征总数,bi,j表示第i个智能合约中第j个特征的出现次数,所述第j个特征为操作码特征或源码特征;
bi,j=ci,j/ci,all
ci,j为第i个智能合约中第j个特征的出现次数,ci,all为第i个智能合约中所有特征的总出现次数。
4.根据权利要求3所述的方法,其特征在于,所述的利用智能合约的多模态特征向量和VAE-GAN生成模型生成未知漏洞特征,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集,包括:
构建VAE-GAN生成模型,所述VAE-GAN生成模型由编码器,生成器和判别器组成,将包含重入漏洞、时间戳依赖漏洞和/或交易顺序依赖漏洞的智能合约的多模态特征向量F=[f1,f2,...,fn]输入VAE-GAN生成模型的编码器,通过z~Enc(f)=q(z|f)编码得到低维特征向量Z=[z1,z2,...,zn],生成器通过将所述低维特征向量Z=[z1,z2,...,zn]映射到数据空间,z代表单个合约的特征向量f经过编码器得到的低维向量特征,Gen代表生成网络,/>代表低维向量特征z经过生成器映射得到的数据空间;
判别器的输入包括生成的数据空间以及真实特征向量f,输出对于真假数据的判断结果;
所述生成器和所述判别器采用神经网络进行对抗训练,原始VAE-GAN生成模型在经过生成器与判别器的对抗训练后达到最佳状态,即判别器无法确定数据来自真实数据集还是生成器,使用训练好的VAE-GAN生成模型利用智能合约的多模态特征向量生成未知漏洞特征数据,构建含有未知漏洞特征的智能合约,将所述进行了标签分类的智能合约数据集和含有未知漏洞特征的智能合约进行组合,得到含有未知漏洞特征的综合数据集。
5.根据权利要求4所述的方法,其特征在于,所述的使用神经网络模型构建智能合约漏洞检测模型,利用含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,得到训练好的智能合约漏洞检测模型,包括:
使用长短期记忆网络LSTM神经网络模型建立智能合约漏洞检测模型,设置智能合约漏洞检测模型的激活函数为sigmoid,使用随机梯度下降优化算法和二元交叉熵损失函数编译定义智能合约漏洞检测模型,使网络适合1,000个epoch;
利用所述含有未知漏洞特征的综合数据集训练所述智能合约漏洞检测模型,自动学习和挖掘智能合约的多模态特征,得到训练好的智能合约漏洞检测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310569948.8A CN116595537A (zh) | 2023-05-19 | 2023-05-19 | 一种基于多模态特征的生成式智能合约的漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310569948.8A CN116595537A (zh) | 2023-05-19 | 2023-05-19 | 一种基于多模态特征的生成式智能合约的漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116595537A true CN116595537A (zh) | 2023-08-15 |
Family
ID=87598757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310569948.8A Pending CN116595537A (zh) | 2023-05-19 | 2023-05-19 | 一种基于多模态特征的生成式智能合约的漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116595537A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574214A (zh) * | 2024-01-15 | 2024-02-20 | 中科链安(北京)科技有限公司 | 智能合约分类模型训练方法、智能合约分类方法及装置 |
-
2023
- 2023-05-19 CN CN202310569948.8A patent/CN116595537A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574214A (zh) * | 2024-01-15 | 2024-02-20 | 中科链安(北京)科技有限公司 | 智能合约分类模型训练方法、智能合约分类方法及装置 |
CN117574214B (zh) * | 2024-01-15 | 2024-04-12 | 中科链安(北京)科技有限公司 | 智能合约分类模型训练方法、智能合约分类方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Russell et al. | Automated vulnerability detection in source code using deep representation learning | |
Wallace et al. | AllenNLP interpret: A framework for explaining predictions of NLP models | |
CN113312500B (zh) | 一种面向大坝安全运行的事件图谱构建方法 | |
CN111639344A (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN109063055A (zh) | 同源二进制文件检索方法和装置 | |
CN114297654A (zh) | 一种源代码层级的智能合约漏洞检测方法及系统 | |
CN113010209A (zh) | 一种抗编译差异的二进制代码相似性比较技术 | |
CN113609488B (zh) | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 | |
CN112596736A (zh) | 一种基于语义的跨指令架构二进制代码相似性检测方法 | |
CN113904844B (zh) | 基于跨模态教师-学生网络的智能合约漏洞检测方法 | |
CN116305158A (zh) | 一种基于切片代码依赖图语义学习的漏洞识别方法 | |
CN116595537A (zh) | 一种基于多模态特征的生成式智能合约的漏洞检测方法 | |
CN117036778A (zh) | 一种基于图文转换模型的安全隐患识别标注方法 | |
CN117688560A (zh) | 一种面向语义分析的恶意软件智能检测方法 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN116340952A (zh) | 一种基于操作码程序依赖图的智能合约漏洞检测方法 | |
Wu et al. | Code vulnerability detection based on deep sequence and graph models: A survey | |
CN115422518A (zh) | 基于无数据知识蒸馏的文本验证码识别方法 | |
CN116662991A (zh) | 基于人工智能的智能合约意图检测方法 | |
Patil | Automated Vulnerability Detection in Java Source Code using J-CPG and Graph Neural Network | |
Liu et al. | DL4SC: a novel deep learning-based vulnerability detection framework for smart contracts | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
Komorniczak et al. | torchosr—A PyTorch extension package for Open Set Recognition models evaluation in Python | |
Tian et al. | Ethereum Smart Contract Representation Learning for Robust Bytecode-Level Similarity Detection. | |
CN118410498B (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 |