基于随机森林的智能合约漏洞检测方法研究
1. 模型选择
在相同的学习算法中,分类结果会随超参数的变化而改变。超参数是在学习过程开始前设定的参数值,而非通过训练获得的参数数据。因此,在模型选择时,有必要对超参数进行优化和调整。具体操作步骤如下:
1. 用预定义的超参数训练模型。
2. 通过调整参数,在验证数据集上获得最佳超参数。
2. 实验
2.1 实验设置
由于本次实验数据集较大,对实验设备的内存大小、硬盘容量和 CPU 性能有较高要求。实验环境如下表所示:
| 软件和硬件配置 | 详情 |
| — | — |
| 服务器型号 | LAPTOP - MJME8I89 |
| 内存大小 | 474 GB |
| CPU | 11th Gen Intel(R) Core(TM) i5 - 11320H |
| 磁盘容量 | 1.2 TB |
| 操作系统 | Ubuntu 20.04.2 LTS |
2.2 测试集与分类器比较
所有实验都发布在项目网站(https://github.com/0929hua/RFVunDetection)上。实验中,将数据集按 8:2 的比例划分为训练集和测试集。在四个测试集上,使用了五种分类器:RF、LightGBM、XGBoost、AdaBoost 和 SVM 分类器。相关概念解释如下:
- 真正例(TP):正确分类为正类的样本数量。
- 真反例(TN):正确分类为负类的样本数量。
- 假正例(FP):错误分类为正类的负类样本数量。
- 假反例(FN):错误分类为负类的正类样本数量。
使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 分数(F1 - score)和 AUC 值来衡量分类器的性能,具体含义如下:
- 准确率:表示正确预测的样本在总样本中的比例。
- 精确率:表示所有预测为正类的样本中,实际为正类的样本比例。
- 召回率:表示所有实际为正类的样本中,被预测为正类的样本比例。
- F1 分数:用于评估二分类器的指标,定义为召回率和精确率的加权调和平均值。
- AUC:表示模型 ROC 曲线下的面积。
各分类器的准确率比较如下表所示:
| 分类器 | 整数溢出 | 时间戳 | 重入漏洞 | TX.origin |
| — | — | — | — | — |
| RF | 0.9924 | 0.9976 | 0.9954 | 0.9882 |
| LightGBM | 0.9910 | 0.9972 | 0.9930 | 0.9848 |
| XGBoost | 0.9872 | 0.9900 | 0.9902 | 0.9720 |
| AdaBoost | 0.9850 | 0.9844 | 0.9888 | 0.9490 |
| SVM | 0.9774 | 0.9502 | 0.9622 | 0.9306 |
从多个表格数据可以看出,在二分类任务中,RF 分类器在准确率、精确率、召回率、F1 分数和 AUC 等指标上的得分均高于 LightGBM、XGBoost、AdaBoost 和 SVM 分类器。例如,在准确率指标上,RF 分类器的最高预测值为 99.76%,其余均超过 98%。因此,在该模型中选择 RF 分类器。
2.3 模型分析
-
TPR、FNR、TNR 和 FPR
:
- TPR:表示所有正类样本中,正确预测为正类的概率。
- FNR:表示所有正类样本中,错误预测为负类的概率。
- TNR:表示所有负类样本中,正确预测为负类的概率。
- FPR:表示所有负类样本中,错误预测为正类的概率。
对于每种类型的漏洞,RF 分类器的 TPR 高达 99.3%,最高 TNR 为 99.9%。较高的 TPR 和 TNR 证明了 RF 分类器的有效性。
-
与以往研究的比较
:为了证明 CDRF 模型性能的优势,选择了以往研究中提出的模型进行比较,包括 CBGRU 模型、DeeSCVHunter 模型、AME 模型、TMP 和 DR - GCN 模型。选择三种智能合约漏洞进行比较,结果如下表所示:
| CDRF vs. 其他方法 | 重入漏洞(A(%)、P(%)、R(%)、F1(%)) | 整数溢出(A(%)、P(%)、R(%)、F1(%)) | 时间戳依赖(A(%)、P(%)、R(%)、F1(%)) |
| — | — | — | — |
| CDRF | 99.54、98.94、93.33、96.05 | 99.24、93.67、93.67、93.67 | 99.76、96.75、99.33、98.03 |
| CBGRU | 93.3、96.3、85.95、90.92 | 93.02、89.47、97.45、93.29 | 86.54、87.23、85.66、86.43 |
| DeeSCVHunter | 93.02、90.7、83.46、86.87 | 80.5、85.53、74.86、79.93 | - |
| AME | 90.19、86.25、89.69、87.94 | 86.52、82.07、86.23、84.1 | - |
| TMP | 84.48、74.06、82.63、83.82 | 83.42、75.05、83.82、79.19 | - |
| DR - GCN | 81.47、72.36、80.89、76.39 | 78.68、71.29、78.91、74.91 | - |
从比较结果可以看出,CDRF 模型在三种漏洞检测任务中均优于其他模型。与 CBGRU 模型相比,重入漏洞的准确率提高了 6.24%,F1 分数提高了 5.13%;整数溢出漏洞的准确率提高了 6.22%,F1 分数提高了 0.38%;时间戳依赖漏洞的准确率提高了 13.22%,F1 分数提高了 11.6%。这表明 CDRF 能够充分提取漏洞的典型特征。
决策树会计算每个属性的熵值(如 CART),然后选择关键特征进行训练。信息熵是衡量样本集纯度最常用的指标,假设当前样本集 D 中第 K 类样本的比例为 $p_k$($k = 1, 2, …, m$),则 D 的信息熵定义为:
$Entropy(D) = - \sum_{k = 1}^{m} p_k \log_2 p_k$
信息熵越小,D 的纯度越高,即 D 中的数据越集中。通过计算特征的信息增益(信息熵的减少量),信息增益越大,说明按该特征对样本进行分类时信息熵减少得越多,该特征越有效。RF 是一种集成算法,由多个决策树组成,每次随机选择样本和特征,然后从这些特征中选择最佳特征建立 CART 决策树,确保每棵树的随机性,优化了决策树过拟合的缺点,因此 RF 的准确率通常高于单个决策树。通过实验比较可知,RF 模型给出了最佳的实验结果。
3. 检测时间比较
在实验中,CDRF 模型检测 5000 个真实智能合约,分三步检测漏洞:
1. 第一步:将源代码反编译为操作码,耗时 1.97 s。
2. 第二步:特征提取,耗时 0.22 s。
3. 第三步:漏洞检测,耗时 0.30 s。
CDRF 模型检测一个合约大约需要 3 s,而 Securify 需要约 18 s,Oyente 需要约 29 s,CDRF 比它们快得多。检测时间比较如下表所示:
| 检测工具 | 时间(秒) |
| — | — |
| Securify | 18.40 |
| Oyente | 29.60 |
| CDRF | 3.0 |
综上所述,基于随机森林的智能合约漏洞检测方法具有高效、可靠的特点,在多个方面表现出色。后续可以进一步研究如何提高该方法对未知漏洞的检测能力,以及如何进一步优化检测时间和性能。
基于随机森林的智能合约漏洞检测方法研究
4. 分析与讨论
分析了四种智能合约的漏洞原理和关键漏洞语句,总结出四种包含关键漏洞指令的操作码片段。将这些操作码片段作为 word2vec 和 PCA 的输入,生成一维二进制特征。具体操作流程如下:
1.
操作码片段总结
:深入研究四种智能合约,找出漏洞原理和关键漏洞语句,总结出包含关键漏洞指令的操作码片段。
2.
word2vec 处理
:将操作码片段输入 word2vec 模型。word2vec 具有维度少的特点,且单词和向量存在一一对应关系,操作码指令类型不重复,无需考虑多义词问题。
3.
PCA 降维
:使用 PCA 对 word2vec 处理后的结果进行降维,最大程度保留原始数据的信息。
通过这样的处理,word2vec 和 PCA 能够有效地表示智能合约的静态特征。
基于随机森林的智能合约漏洞检测方法高效且可靠,具体体现在以下几个方面:
-
特征提取阶段
:总结出的四种操作码片段经过 word2vec 和 PCA 处理后得到一维二进制特征,简化了输入数据并降低了维度。
-
训练阶段
:作为监督学习方法,该方法有输入和输出变量,目标是通过算法学习从输入到输出的函数映射。在训练过程中,不断迭代和更新映射函数的参数,以获得最佳模型。
-
预测阶段
:可以直接使用训练阶段得到的模型预测新样本是否存在漏洞。
不过,该方法也存在一定局限性,其检测漏洞的准确性依赖于 Oyente 和 Mythril 生成标签的真实性,且由于是基于现有漏洞进行检测,无法识别未知漏洞或未定义的新漏洞。
5. 总结
为了保护以太坊智能合约,净化交易区块链环境,提出了基于随机森林的智能合约漏洞检测方法,该方法成功检测出四种类型的智能合约漏洞。具体优势如下:
-
特征提取有效
:通过分析智能合约的漏洞原理和关键语句,总结操作码片段,再经 word2vec 和 PCA 处理得到一维二进制特征,能够有效描述静态智能合约的特征。
-
检测方法可靠且省时
:预测准确率最高可达 99.76%,其余均在 99%以上;精确率最高预测值为 98.94%,其余均在 93%以上;召回率最高为 99.33%,其余均超过 88%;F1 分数最高为 98.03%,其余均超过 93%;AUC 最高预测值为 96.63%,其余均在 94%以上。同时,平均每个智能合约的检测时间约为 3 s。
-
分类能力和准确性优越
:选择三种智能合约漏洞进行比较,结果表明该 RF 模型具有出色的分类能力和准确性。
以下是该检测方法的流程 mermaid 流程图:
graph LR
A[分析智能合约] --> B[总结操作码片段]
B --> C[word2vec 处理]
C --> D[PCA 降维]
D --> E[训练随机森林模型]
E --> F[预测新样本]
总的来说,基于随机森林的智能合约漏洞检测方法在智能合约安全领域具有重要的应用价值,但也需要不断改进和完善,以应对不断出现的新漏洞和安全挑战。
超级会员免费看
72

被折叠的 条评论
为什么被折叠?



