Page 391 - 《软件学报》2025年第12期
P. 391
5772 软件学报 2025 年第 36 卷第 12 期
误报并成功为 81.9% 的 Slither 报告漏洞生成了测试用例; 相较于非目标制导的 Mythril, Smart-Target 在没有损失
安全漏洞检测能力的情况下减少了 60.76% 的检测时间.
787 uint256 ethbalanceA = channel.ethBalances[0];
788 uint256 ethbalanceI = channel.ethBalances[1];
789 uint256 tokenbalanceA = channel.erc20Balances[0];
790 uint256 tokenbalanceI = channel.erc20Balances[1];
792 channel.ethBalances[0] = 0;
793 channel.ethBalances[1] = 0;
794 channel.erc20Balances[0] = 0;
795 channel.erc20Balances[1] = 0;
797 if(ethbalanceA != 0 || ethbalanceI != 0) {
798 channel.partyAddresses[0].transfer(ethbalanceA);
799 channel.partyAddresses[1].transfer(ethbalanceI);
800 }
802 if(tokenbalanceA != 0 || tokenbalanceI != 0) {
803 require(
804 channel.token.transfer(channel.partyAddresses[0], tokenbalanceA),
805 "byzantineCloseChannel: token transfer failure"
806 );
807 require(
808 channel.token.transfer(channel.partyAddresses[1], tokenbalanceI),
809 "byzantineCloseChannel: token transfer failure"
810 );
811 }
图 6 Slither 误报示例
5.2.2 RQ2 的结果与分析
为模拟漏洞复现场景, RQ2 使用重入、权限控制、未检查低级调用、时间操作以及算术相关 5 类漏洞相关
的智能合约进行实验, 将 SB Curated 数据集中标注了上述 5 类漏洞的 161 条漏洞语句作为目标. 在实验过程中每
隔 60 s 对漏洞复现情况进行一次采样, 统计并比较在不同时刻 Smart-Target 和 Mythril 复现漏洞数量以及复现成
功率.
实验结果如图 7 所示, 其中横轴为复现时间, 纵轴表示截至该时刻各个工具能够复现的漏洞数量. 从图中可以
看出, Smart-Target 在 60–3 600 s 之间的任何时刻, 复现漏洞的数量均高于 Mythril. 在复现时间为 120 s 时
(绿色竖线), Smart-Target 能够复现 85 个漏洞, 复现成功率达 52.80%, 此时 Mythril 仅能复现 47 个漏洞, 复现成功
率为 29.19%. 在复现时间为 1 200 s 时 (红色竖线), Mythril 仍仅能复现 73 个漏洞. 这表明 Mythril 在多花费 10 倍
时间的情况下仍无法复现与 Smart-Target 相同数量的漏洞.
100
80
复现漏洞数量 60
40
20
Mythril
0 Smart-Target
0 300 600 900 1 200 1 500 1 800 2 100 2 400 2 700 3 000 3 300 3 600
复现时间 (s)
图 7 各工具在不同时刻的复现漏洞数量比较
此外, 在复现时间为 1 800 s 时, Smart-Target 达到最大复现漏洞数量 (109 个), 而此时 Mythril 相较于 Smart-
Target 仍有 11 个漏洞无法复现. 总体上看, Smart-Target 复现 109 个漏洞所需的总时间为 16 340.69 s, 其中复现单

