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

