天天看点

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

作者:江语迟
SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

文 |江语迟

编辑 | 江语迟

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

前言

近年来,随着疫情的逐步发展和电子商务网络平台的快速发展,物联网(IoT)设备越来越融入人们生活的隐私。

随着无数设备连接到物联网,物联网在长期的发展演进过程中遇到了很多产业痛点,物联网中最大的问题之一是知道你在连接谁。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

位于马萨诸塞州尼达姆的工业互联网联盟执行董事 Richard Mark Soley 博士说:“这种对跨数百万或数十亿传感器的信任机制的需求使得像区块链这样的分布式系统变得至关重要。”

传统的集中式管理物联网时代方法难以有效实施:物联网时代边缘和终端设备数量庞大。

单一的中心服务器或集群很难有效管理如此大规模的设备,中心化系统面临着严重的性能瓶颈。

因此,引入了最卓越的永久数据保存和防篡改解决方案——区块链。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

区块链对物联网的主体对主体、公开透明、通信安全、不易被篡改、多方共识等特性具有重要影响。

智能合约使我们能够自动化复杂的多步骤流程,IoT 生态系统中的设备是与物理世界的接触点。

在大数据时代背景下,人们的个性化需求得到了更大程度的满足,与此同时,个人隐私数据也存储在大型数据库中,这也对网络安全形成了巨大的隐患。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

智能合约安全与检测

智能合约用高级语言编写,编译成字节码,由区块链交易驱动,运行在以区块链为存储基础的虚拟机上,这些都面临着不同的安全威胁。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

近年来,智能合约安全事件频发,在2016 年,针对 DAO 合约的攻击导致超过 3,600,000 Ether 的损失,这源于关键 DAO 合约中引入的重大漏洞。

在2017 年,Parity 多重签名钱包漏洞导致超过 513,701 Ether 被锁定,这也引发了关于以太币是否需要通过硬分叉升级的持续争论。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

而在2018年,黑客攻击了BEC合约,一个整数溢出安全漏洞导致 BEC 的价格几乎跌至零。

智能合约伴随着在其整个生命周期中发现不同类型的漏洞,目前已发现的智能合约漏洞种类繁多。

现有的已知漏洞,如重入、时间戳依赖、无限循环、调用堆栈深度攻击、整数溢出和整数下溢。

为了避免这些漏洞,要先了解可以检测这些漏洞的方法。

有几种传统方法可以检测智能合约中的漏洞,Oyente 是一个基于静态符号执行的漏洞检测工具。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

而Mythril 是一种基于符号执行和具体执行相结合的漏洞检测工具,涵盖了大多数类型的漏洞。

此外,SmartCheck是一种可扩展的静态分析工具,以及 Securify,一个为智能合约提供可扩展和全自动安全分析的工具,是智能合约安全检测的高级工具。

这些自动化审计方法仍处于发展阶段,主要面临三大问题。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

一是自动化程度低,需要不断的反馈来进行审计,而且它们的误报率很高,仍然需要一些人工参与。

审计时间也很长,在线数据研究发现,Mythril 平均为 60 秒,Oyente 约为 30 秒,而 Securify 约为 20 秒。

传统的智能合约漏洞检测工具大多依赖固定的检测规则,而结合深度学习技术的漏洞检测方法则避免了这一问题。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

Eth2Vec,一种基于机器学习的智能合约漏洞检测静态分析工具,它通过用于自然语言处理的神经网络自动学习易受攻击的智能合约字节码的特征。

Eth2Vec 通过隐式提取特征并结合合约之间的词法语义,即使在重写代码之后,也能以高精度检测漏洞。

但是,该方法存在不支持多个合约相互关联时的合约间分析的问题。

于是又开发了一种基于多任务学习的智能合约漏洞检测模型,它通过设置辅助任务学习更多的定向漏洞特征来提高模型的检测能力。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

该模型可以获得细粒度细节和权重分布的可解释全景,该方法表现出很强的漏洞检测能力。

但是,基于深度学习的漏洞检测方法是由数据驱动的,它允许在构建数据集时对智能合约源代码文件进行细粒度分割,然后将其输入模型。

因此,使用深度学习的检测方法只需要构建合理的数据集,就可以极大地提高检测的代码覆盖率,从而降低漏检率。

单个神经网络处理信息的能力有限,网络的训练精度可以通过增加神经元数量和增加网络的自由度来提高。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

然而,这可能导致网络在训练过程中收敛困难,最终无法满足精度要求,与一般的深度学习模型相比,多种模型或机制的组合可以在分类任务中取得更好的性能。

于是,提出了一种结合 CNN 和 RNN 的串行混合模型,用于智能合约漏洞检测。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

模型设计

在使用深度学习方法进行智能合约漏洞检测时,需要解决两个实际问题:构建合理的可被深度学习模型训练的智能合约源代码数据集,以及为智能合约源代码数据集构建合适的深度学习模型。

针对这两个问题,并设计了任务的整体实现,如图图1.

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

图1 基于深度学习的智能合约源代码漏洞检测整体设计方案

处理数据并将处理后的数据传递到深度学习模型中进行分析和判断。

值得一提的是,现有的模型设计和系统实现等研究充分考虑了模块间的安全问题。

因此,许多与认证相关的技术研究被广泛提出和应用,模型的设计涉及到各个模块的组成部分,但它们都是神经网络模块的线性连接,所以各个模块之间的安全保障这里就不需要再考虑了。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

这种结合 CNN 和 RNN 的串行混合模型是出于以下考虑:

CNN 和 RNN 都可以用于序列建模,但它们的表现不同,RNN 强调时间维度上的顺序,序列的输入顺序影响输出,而CNN 通过聚合局部信息来获取整体信息,并且可以从输入中提取层次信息。

因此深度神经网络必须等待处理下一个代码向量,直到当前信息已处理完毕,这意味着 RNN 无法像 CNN 那样利用大规模并行处理 (MPP)。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

CNN虽然在特征提取方面取得了不错的效果,但甚至没有考虑序列的上下文关系。

然而,智能合约代码是一长串单词,各个单词的出现在上下文中是相互关联的,所以CNN 和 RNN 的结合使得序列数据的时间结构和位置信息得以完整保留。

这也有助于提取多元组合的特征。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

结合集成分类器 (SPCBIG-EC) 的串行-并行卷积双向门控循环网络模型进行漏洞检测。

首先,将智能合约源代码处理成模型可以使用的数据集,处理后的数据集D仍然包含一些智能合约,可以表示为D = {C1,C2,C3, … ,Cn}。

智能合约Ci由许多函数组成,可以表示为Ci= {Fi1 ,Fi2, Fi3, … ,Fin},其中1≤i≤n。

功能Fi, j 由代码行组成{Ci,j,1,,Ci,j,2,Ci, j , 3, … ,C i,j , n},可以表示为F, {Ci,j,1,,Ci,j,2,Ci, j , 3, … ,C i,j , n} , 其中1 ≤ j ≤ m。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

首先,进行数据预处理,去除与漏洞无关的内容,然后源代码围绕不同漏洞对应的关键点被分成小块的智能合约代码,而且这些代码片段在逻辑上是可执行的。

其次,将控制流分析生成的智能合约代码的小片段转换为向量表示,并将用户定义的变量和函数映射到符号名。

通过词法分析将符号表示中的段划分为一系列标记,在这种情况下,原始合约片段行由包含关键字的多个令牌序列表示,具有内置规范化变量的操作等。

处理后的向量被输入到我们构建的 SPCBIG-EC 模型中。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

模型第一层为卷积层,卷积核在一个卷积窗口下对输入向量进行卷积得到组合特征C1n。

当有kconvolution kernels 在卷积窗口下对词向量进行卷积,组合特征C1n可以表示为C1n= [C11n,C12n, … ,C1kn ]。

模型的第二层是卷积层,卷积核在一个卷积窗口下对输入向量进行卷积得到组合特征C2n.

由C1n与C2n形成新的特征组合,使获得的特征向量作为双向门控循环 (BiGRU) 模型的输入。

最后,将BiGRU的隐藏状态作为特征向量输入注意机制层。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

注意机制为代码中的重要词分配权重,通过注意力机制获得的归一化权重与该层的输入特征向量相乘得到输出。

注意力机制层连接到全连接层,全连接层包含一个集成分类器,集成分类器包含几个弱分类器作为候选基分类器(两个分类器,AM-Softmax)。

选择分类误差最小的弱分类器作为基分类器,采用重加权的方法进行迭代训练,并使用顺序线性加权方法组合基本分类器以获得具有更高鲁棒性的更强分类器。

并构建的强分类器用作最终分类器来预测漏洞。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

图2 SPCNN结构

SPCNN结构由多个卷积层组成,这些层是基于一个两层串行卷积结构。

结构中的串行是指两个卷积层的线性串行结构,而并行是指从第一个卷积层提取的特征在传递到第二个卷积层之前进行备份和保留,备份的特征与从更高的卷积层从第二个卷积层提取的特征并行输出,将两个特征进行融合,得到最终提取的SPCNN结构的特征信息。

特征数据C1n保留第一层卷积层提取的数据作为备份,将数据输入第二层进行二次特征提取,特征提取数据C1n来自保留的第一层的输出与特征提取数据并行C2n第二层末尾的第二层输出进行特征融合。

然后,通过获取底层特征并在顶层并行化输出,充分提取智能合约的语义和句法信息。

SPCNN结构的优点是:用双层串并卷积代替等效步长的单层卷积,起到改善非线性的作用,以及减少卷积池化操作可能丢失关键信息的影响,例如局部位置信息和序列结构的破坏。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

结语

IoT 生态系统中的设备是与物理世界的接触点,物联网设备通过一些通信媒体连接到云端。

传感器采集的数据通过核心网到达云端进行处理,物联网设备更深入地嵌入到人们生活的隐私中,其安全问题不容忽视。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

由区块链技术支持的智能合约有可能解决这些问题,BoT技术在大力推动产业创新发展的同时,其安全性也必须得到保障。

因此,迫切需要提出一种更有效的智能合约安全检测方法,其中有六种典型漏洞,即重入漏洞、时间戳依赖、无限循环、调用堆栈深度攻击漏洞、整数溢出和整数下溢。

此外,提出了一种创新性地适用于串行组合模型的 SPCNN 网络结构。

SPCBIG-EC:用于智能合约漏洞检测的稳健串行混合模型

该结构旨在提取低级特征并将其与高级特征并行输出,它可以充分融合不同层次的词向量的多种特征。

为了充分提取智能合约的内部特征和智能合约之间的连接特征,我们使用具有双卷积核的SPCNN。

大量实验都证明了SPCBIG-EC模型的效率和SPCNN对串行混合模型的适用性。

此外,SPCBIG-EC 模型明显优于其他 11 种高级漏洞检测方法。

由技术支持的智能合约在未来有可能解决问题。

继续阅读