Page 389 - 《软件学报》2025年第12期
P. 389

5770                                                      软件学报  2025  年第  36  卷第  12  期


                    本文选择静态分析工具         Slither 和符号执行工具   Mythril 作为实验的比较对象, 这      2  个工具开源且更新频率较
                 快, 同时实证研究表明这       2  个工具的漏洞检测能力较优于其他工具             [20–22] . 需要注意的是, 由于  Slither 和  Mythril 均
                 不支持对弱随机性、拒绝服务、前端运行、短地址以及其他这                       5  种类型漏洞的检测, 且     Slither 不支持对算术相
                 关漏洞的检测, 为了保证实验的正确性与公平性, 在实验中不使用弱随机性、拒绝服务、前端运行、短地址以及
                 其他这   5  种类型的漏洞, 且在    Slither 相关的实验中不使用算术相关漏洞.
                    根据提出的     3  个实验问题设计了     3  组实验, 各个实验问题对应的实验设计如表             6  所示. 其中, 对于  RQ1 (安全
                 漏洞检测场景), 采用静态分析工具          Slither 检测结果作为目标, 并将报告的多个漏洞语句位置同时作为目标, 评估
                 检测时间、TP (即与人工标注的漏洞位置和类型一致的报告数)、FP (即与人工标注的漏洞位置或类型不一致的
                 报告数)、FN (即没有报告出人工标注漏洞语句的数量) 以及                 F1  值等; 对于  RQ2 (安全漏洞复现场景), 采用数据集
                 中标注的漏洞语句位置作为目标, 并逐一尝试复现漏洞, 评估复现时间以及复现成功率; 对于                            RQ3 (验证目标依赖
                 语句分析有效性), 为了避免其他语句对实验的干扰, 同样将数据集中标注的漏洞语句逐一作为检测漏洞目标, 评
                 估在分析目标依赖语句分析前后检测时间以及检测出的漏洞数量变化.


                                              表 6 各个研究问题对应的实验设计

                    序号              漏洞类型选择                目标来源         目标方式               评价指标
                    RQ1          AC、RE、TM、ULLC             Slither      多目标           检测时间、F1值等
                    RQ2       AC、ARM、RE、TM、ULLC           人工标注          单目标          复现时间、复现成功率
                    RQ3       AC、ARM、RE、TM、ULLC           人工标注          单目标           检测时间、漏洞数量

                    上述实验均运行在       Ubuntu 20.04  操作系统、Intel(R) Xeon(R) E5-2680v4@2.40 GHz 处理器以及  16 GB  内存
                 的环境中. Smart-Target 基于  Mythril v0.23.3、Slither v0.8.3  以及  evm_cfg_builder v0.3.1  实现, 实验比较的对象选
                 择相同版本的     Mythril 和  Slither.
                  5.2   实验结果及分析
                  5.2.1    RQ1  的结果与分析
                    RQ1  以静态分析工具      Slither 的漏洞报告作为目标, 使用重入、权限控制、未检查低级调用以及时间操作这
                 4  类漏洞相关的智能合约进行实验, 从时间消耗和安全漏洞检测能力两个方面比较                           Slither、Smart-Target 以及
                 Mythril 这  3  种工具的性能差异. 实验结果如表      7  所示.

                                            表 7 安全漏洞检测场景中各工具性能比较

                    漏洞类型         工具      时间 (s)  TP  FP FN Recall Precision  F1  测试用例生成数量 事务序列执行数量
                                Slither   6.88   32  10  0  1    0.762  0.865     -             -
                     重入       Smart-Target  17 268.95  28  2  4  0.875  0.933  0.903  30        952
                                Mythril  63 434.55  28  2  4  0.875  0.933  0.903  30          1 595
                                Slither   3.31   5   3  19  0.208  0.625  0.315   -             -
                    权限控制      Smart-Target  333.96  6  0  16  0.273  1  0.429      6            38
                                Mythril  7 957.689  6  0  16  0.273  1  0.429      6            167
                                Slither   14.79  71  3  4  0.947  0.959  0.953    -             -
                 未检查低级调用 Smart-Target   74 434.35  55  0  20  0.733  1  0.846     55           1 414
                                Mythril  162 747.77  56  0  19  0.747  1  0.855   56           2 772
                                Slither   0.85   3   3  4  0.429  0.5   0.462     -             -
                    时间操控      Smart-Target  137.51  2  2  5  0.286  0.5  0.364     4            10
                                Mythril  744.43  2   2  5  0.286  0.5   0.364      4            101
                                Slither   25.83  111 19  27  0.804  0.854  0.828  -             -
                     总计       Smart-Target  92 174.76  91  4  45  0.669  0.958  0.788  95      2 414
                                Mythril  234 884.44  92  4  44  0.676  0.958  0.793  96        4 635
   384   385   386   387   388   389   390   391   392   393   394