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, 其中复现单
   386   387   388   389   390   391   392   393   394   395   396