Advertisement

【论文阅读】Ethereum Blockchain Smart Contract Vulnerability Detection Using Deep Learning

阅读量:

题目
使用深度学习的以太坊区块链智能合约漏洞检测。(主要是重入漏洞)

1、摘要

静态分析器用于在开发过程中发现智能联系人中的漏洞,但非常耗时。
文章提出了一种基于机器学习的方法来检测智能合约中的重入漏洞,系统由三个组件组成:数据准备、Op2Vec 和 LSTM 模型。
(1)收集了 30,000 个智能合约,将它们分成两组,每组 15,000 个,分别用于 Op2Vec 生成和 LSTM 训练。
(2)使用 Skip-Gram 算法将操作码关键字映射到向量表示,Op2Vec。
(3)使用 Slither 静态分析器进行标记。
(4)双向LSTM模型。
源码:link

漏洞检测方法分为两类:静态分析和动态分析。静态分析涉及检查程序的源代码而不考虑其运行时行为,而动态分析需要通过运行时测量来评估程序以检测漏洞。

2、实验内容

主要实验是使用 BI-LSTM 进行重入检测
系统由三部分组成:数据准备、Op2Vec 程序和 LSTM(长短期记忆)模型。该架构促进了两种类型的数据处理以及单个 LSTM 模型。训练数据集分为两类:易受攻击和干净,从而支持用于漏洞检测的二元分类方法。

2.1使用操作码

当计算机执行程序时,它会以汇编语言处理指令,因为它无法解释高级源代码。汇编语言提供了一组低级指令,例如移动字节、加法和减法,对应于计算机硬件的基本操作。同样,在以太坊生态系统中,操作码充当以太坊虚拟机 (EVM) 的汇编语言。这些操作码是 EVM 解释的基本指令,有助于在以太坊区块链上执行智能合约和其他操作。
在操作码中,特定的关键字被指定用于特定的操作:例如,“PUSH”用于移动字节,“SUB”用于减法,“MUL”用于乘法。合约文件中的操作码序列封装了合约的本质。我们解决方案的后续组件是Op2Vec。与将自然语言单词映射到向量表示的 Word2Vec 类似,Op2Vec 将每个 Opcode 关键字映射到一个向量,从而促进合约操作逻辑的数字表示。

在 EVM 中,某些关键字包含多个变体,例如 PUSH 操作,可以作为 PUSH1 或 PUSH32 执行。这些操作之间的区别在于它们推送到 EVM 上的字节数不一样。在文章的字典结构中,将它们放在一个操作码标签 PUSH 下。我们所做的另一个修改是对十六进制值的处理。在将智能合约编译为操作码序列时,将出现条件循环的某些值或常量值。这些值在操作码序列中表示为十六进制。但是,文章选择不将这些十六进制值映射到向量表示,因为这会导致字典无限大。

2.2实验流程

对于模型评估,实施了两种方法:维持验证和 5 倍交叉验证。在这两种情况下,模型都训练了 10 个epoch。
(1)在训练验证中,我们的训练准确率达到了 98%,而验证准确率约为 96%。
(2)在测试阶段,我们在检测重入漏洞方面达到了值得称赞的 96% 准确率。结果如图 所示。
loss
acc
还进行了 5 次交叉验证,以评估机器学习模型的性能。

3、展望

(1)对于未来的研究方向,基于 transformer 的模型有巨大潜力,因为它们在广泛的语言理解和处理应用中被证明是有效的。
(2)评估特定领域特征的影响并考虑集成方法的应用可能会显着提高模型性能。

全部评论 (0)

还没有任何评论哟~